PDFium Delphi Component Docs

オプションのネイティブレンダリング

ユニット: PDFium
機能フラグで条件付けられた Skia レンダリングと、正確なスポットプレートおよびオーバープリント出力のためのバージョン付きオプション ABI を提供します

機能の照会

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

どちらの照会も必要に応じて選択された PDFium モジュールを読み込み、そのモジュールに実際に存在するエクスポートだけを報告します

オプションのエクスポートが欠けていても、通常の PDFium の読み込み、ビットマップレンダリング、編集、保存が妨げられることはありません

TPdfSkiaRenderCapabilities.PageSceneCache は、RenderPageSkiaByIndex が TPdf が所有する上限付きの解析済みページキャッシュを再利用できることを示します

TPdfSkiaRenderCapabilities.FormOverlay は、独立したオプションのフォームエクスポートがページコンテンツの後にフォームオーバーレイを描画できることを示します

TPdfPrintOutputCapabilities.VersionCompatible は、拡張が正確に PdfPrintOutputAbiVersion の値を返す場合にのみ true になります

TPdfPrintOutputCapabilities.ExtensionPresent はプリント出力拡張が読み込まれると true になり、AbiVersion は拡張が報告する生の ABI 番号を保持します

SpotPlateRendering、OverprintDetection、OverprintPreview が RenderSpotPlate、PageUsesOverprint、RenderOverprintPreview のゲートになります

Skia によるページとフォームのレンダリング

procedure TPdf.RenderPageSkia(Canvas: FPDF_SKIA_CANVAS; Width, Height: Integer; DrawFormOverlay: Boolean = True);
procedure TPdf.RenderPageSkiaByIndex(Canvas: FPDF_SKIA_CANVAS; PageNumber, Width, Height: Integer; DrawFormOverlay: Boolean = True);

呼び出し側がネイティブの SkCanvas を所有し、それを FPDF_SKIA_CANVAS として渡します

RenderPageSkia はアクティブなページを描画し、RenderPageSkiaByIndex は PageNumber を変更せずに任意の 1 基点ページを描画します

要求がありフォームフィル環境が存在する場合、フォームオーバーレイは独立したオプションのフォームエクスポートを通じてページコンテンツの後に描画されます

ネイティブの Skia API はピクセルサイズを受け付けますが、ビットマップレンダラーの回転やフラグのパラメータは公開しません

function TPdf.SpotPlates: TPdfSpotPlateInfos;
function TPdf.PageUsesOverprint: Boolean;
function TPdf.RenderSpotPlate(PlateIndex, Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap;
function TPdf.RenderOverprintPreview(Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap;

これらのメソッドは、バージョン、機能ビット、対応する関数エクスポートのすべてが一致する場合にのみ、オプションのプリント出力拡張を呼び出します

返されるビットマップは呼び出し側が所有し、通常のレンダリングと同じ上限付き PDFium ビットマップパスを使用します

拡張が存在しない場合、各操作は RGB 出力からプレートを模したり不正確なオーバープリント動作を装ったりする代わりに EPdfError を発生させます

プリント出力 ABI バージョン 1

エクスポート契約
PDFiumPas_GetPrintOutputAbiVersionPdfPrintOutputAbiVersion を 32 ビット符号なし値として返します
PDFiumPas_GetPrintOutputCapabilities宣言されたスポット列挙、スポットレンダリング、オーバープリント検出、オーバープリントプレビューの機能ビットを返します
PDFiumPas_PageCountSpotPlates1 つの FPDF_PAGE に対する上限付きの非負プレート数を返します
PDFiumPas_PageGetSpotPlateName終端のゼロを含む UTF-8 バイト数を返し、供給されたバッファ内にのみ書き込みます
PDFiumPas_PageUsesOverprint1 つのページに対する 32 ビットの FPDF_BOOL を返します
PDFiumPas_RenderSpotPlate呼び出し側が所有する FPDF_BITMAP へ 0 基点のプレートを 1 つ描画します
PDFiumPas_RenderOverprintPreviewカラーマネージドのオーバープリントプレビューを呼び出し側が所有する FPDF_BITMAP へ描画します

すべての ABI 関数は cdecl、32 ビット整数と FPDF_BOOL 値、ポインタサイズのハンドル、PDFium が所有するページセマンティクスを使用します

レンダリング関数は同期的に完了しなければならず、供給されたビットマップやページハンドルを保持してはなりません

不明な機能ビットは RawCapabilityBits に保持されますが、サポート済みの動作としては扱われません

例

SkiaCaps := GetSkiaRenderCapabilities;
if SkiaCaps.PageRender then
  Pdf.RenderPageSkiaByIndex(SkCanvas, 1, 1200, 1600);

PrintCaps := GetPrintOutputCapabilities;
if PrintCaps.SpotPlateEnumeration then
  Plates := Pdf.SpotPlates;

関連項目

TPdf.RenderPageByIndex, TPdf.ClearPageSceneCache