プラガブルページレンダーバックエンド

HotPDF は、既存のレンダラーをゼロ設定デフォルトかつオプションのフォールバックとして保持しながら、ロード済みページのビットマップレンダリングをアプリケーション定義のバックエンドにルーティングできます

組み込みネイティブバックエンド

PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);

THPDFNativeGDIRenderBackend は、外部実装が使用するのと同じ公開バックエンド契約を通じて、確立された Windows ネイティブ GDI レンダラーを公開します

その機能は prbcNative、prbcDeterministic、prbcTransparency、prbcColourManagement、prbcThreadSafe を宣言しますが、prbcDeviceAcceleration は主張しません

カスタムバックエンド契約

var
  Backend: IHPDFPageRenderBackend;
begin
  Backend := THPDFSIMDScanlineRenderBackend.Create;
  PDF.PageRenderBackend := Backend;
  Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;

THPDFSIMDScanlineRenderBackend はコンパイル済み表示リスト全体をプリフライトした後、対応する DeviceRGB または DeviceGray の矩形塗りを、64 バイト単位のバッチと 16 バイトのベクトル末尾処理で最終的な 32 ビットビットマップサーフェスへ直接書き込みます

複合矩形パスは、1 回のペイント操作として非ゼロ / 偶奇のいずれかの塗り規則に従い、穴、変換されたサブパスの方向、以前に描画されたコンテンツを保持します。ラスタライズは境界付きバッチでキャンセルをチェックし、部分的なサーフェスは破棄します

このバックエンドは、グラフィックス状態の保存と復元・直交スケール・平行移動と直角回転の行列・塗り色の変更・矩形・塗りオペレータ・パスのリセットを受け入れます。テキスト・任意のパス・ストローク・画像・透明度・クリッピング・パターン・シェーディング・未対応のカラースペース・非直交変換は、ビットマップ割り当ての前に拒否されます

そのケイパビリティは prbcSIMD・prbcThreadSafe・prbcDeterministic を宣言しますが、デバイスアクセラレーション・透明度・カラーマネジメントは謳いません

THPDFSIMDRenderBackendStatistics は、直接サーフェス・レンダリングされた矩形・ベクターブロック・スカラーの末尾ピクセル、およびフォールバックが必要になった場合の正確な拒否オペレータを報告します

並行性とフォールバック

IHPDFPageRenderBackend を実装して THotPDF.PageRenderBackend に割り当てます

THPDFPageRenderBackendRequest は、要求されたページインデックスと DPI・コンパイル済みの THPDFPageDisplayList・ストリーム・画像・フォント・オプショナルコンテンツ・カラーマネジメント・キャンセルのための THPDFRenderDocAccess リゾルバを供給します

バックエンドは THPDFPageDisplayList.GetToken を通じて、ページコンテンツを再パースせずにコンパイル済みの各オペレータを検査できます

新しく確保した TBitmap とともに True を返すと、ビットマップの所有権が HotPDF へ移ります。ビットマップなしで False を返すと、要求を拒否します

診断と視覚ゲート

prbcThreadSafe を宣言するバックエンドは、2 つの並列ページレンダパイプラインのどちらでも同時実行できます

その能力を持たないバックエンドは専用の呼び出しロックで直列化されます。表示リストのコンパイルは並行したままです

rbfpSoftwareFallback は、利用不可・拒否・失敗となったバックエンド要求を既存のレンダラで再試行します。rbfpFail は EHPDFRenderBackend を発生させます

バックエンドは必要に応じて IHPDFPageRenderBackendFailureInfo を実装するか、要求ごとの診断理由を返せます。同時に発生した拒否でも、正確なレンダリング試行の理由が保持されます

バックエンドを変えると、メモリ内と永続のレンダリング済みページキャッシュエントリが無効化されます。異なるレンダラの画像が混ざることはありません

診断とビジュアルゲート

THPDFRenderBackendStatistics は、試行回数・成功数・失敗数・ソフトウェアフォールバック数・直列化された呼び出し数・経過時間・バックエンド名・最後の失敗理由を報告します

内蔵のパリティフィクスチャは重なる透明度を使用し、Win32 と Win64 の既定レンダラに対して、最大 Delta E 0・アルファ合成 RGB エラー 0・差分ピクセル数 0 を宣言します

関連 API