TfrxHotPDFExport

FastReport 4 / FastReport VCL adapter (Lib\Addons\FastReport4\frxHotPDFExport.pas)

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

FastReport 4 / FastReport VCL 用の PDF export filter です。FastReport 内蔵の PDF writer の代わりに、基盤の PDF backend として HotPDF を使用します。すでに HotPDF を組み込んでおり、アプリケーション全体で単一の PDF backend を使いたいプロジェクト向けです

 

Delphi 宣言:

type

  TfrxHotPDFExport = class(TfrxCustomExportFilter)

  published

    property Compressed: Boolean default True;

    property Title, Author, Subject, Keywords: string;

    property PDFVersion: TPDFVersType default pdf17;

    property CompressionLevel: TPDFCompressionLevel default clDefault;

    property RenderDPI: Integer default 200;

  end;

 

説明

TfrxHotPDFExportTfrxCustomExportFilter から派生しているため、FastReport core を変更せずに通常の MyReport.Export(MyExportInstance) workflow に組み込めます。この unit は RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]) を呼び出すため、unit を package に追加すると filter が IDE component palette に表示されます

 

FastReport の per-object PDF emitter 全体を再実装するのではなく、この adapter は準備済みの各ページを HotPDF の enhanced-metafile importer に渡します:

 

1. Start は新しい THotPDF instance を作成し、document metadata (Title / Author / Subject / Keywords / PDFVersion / Compression) を設定します

2. StartPage は新しい HotPDF ページのサイズを、FastReport report page の millimeter 寸法に合わせて PDF point 単位で設定します

3. ExportObject は no-op です。ページ全体は object 単位ではなく FinishPage 時点でキャプチャされます

4. FinishPage は準備済みの FastReport ページを Report.PreviewPages.DrawPage 経由で TMetafile にレンダリングし、その metafile を HotPDF の ShowEnhancedMetafile auto-scaling importer で再生します

5. FinishEndDoc を呼び出し、必要に応じて一時 PDF を呼び出し元提供の Stream にコピーします

 

プロパティ

Compressed - HotPDF stream compression を有効にします (既定値は True)。診断用 PDF が必要な場合は False に設定します (ファイルサイズは約 5 倍になります)

Title / Author / Subject / Keywords - document metadata です。Title が空の場合、adapter は Report.Name にフォールバックするため、PDF は常に空でない title を持ちます

PDFVersion - ドキュメントが対象とする PDF 仕様レベルです。既定値は pdf17 です

CompressionLevel - FlateDecode level です。既定値は clDefault です

RenderDPI - FastReport ページを TMetafileCanvas 経由で rasterise するときに使用する pixel density です。値が高いほど文字と線は鮮明になりますが、metafile と PDF は大きくなります。96 は FastReport の native screen DPI です。200 (既定値) は巨大なファイルにせず印刷品質の結果を与えます

 

典型的な workflow

 

Exp := TfrxHotPDFExport.Create(nil);

try

  Exp.FileName := 'Report.pdf';

  Exp.Title := 'Monthly Statement';

  Exp.PDFVersion := pdf17;

  Exp.RenderDPI := 200;

  frxReport1.Export(Exp);

finally

  Exp.Free;

end;

 

保持される機能

FastReport の標準 layout engine がレンダリングする vector および raster page content (text、lines、rectangles、fills、bitmaps)。GDI で解決された text string (HotPDF は通常の HotPDF font subset path で Windows 解決済み font を埋め込みます)。Document-level metadata

 

metafile bridge の制限

ページは enhanced metafile としてキャプチャされるため、構造情報を必要とする FastReport 固有の PDF 機能 (AcroForm fields, named destinations, document outlines, PDF/A または PDF/X conformance gates) は引き継がれません。出力は FastReport が画面または printer にレンダリングする内容の忠実な視覚的再現であり、構造化 PDF ではありません。AcroForm output または PDF/A conformance が必要なプロジェクトでは、HotPDF の native API を直接使用してください

 

パッケージング上の注意

adapter は Lib\Addons\FastReport4\ にあり、メインの HotPDF*.dpk packages には含まれません。そのため FastReport 依存関係は、adapter を明示的に使用するプロジェクトにのみ取り込まれます。smoke test (smoke_frx_hotpdf.dpr) は unit の隣にあります

 

関連項目: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support