TfrxHotPDFExport

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

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

Filter exportu PDF pre FastReport 4 / FastReport VCL, ktorý používa HotPDF ako základný PDF backend namiesto vlastného zabudovaného PDF zapisovača FastReportu. Určený pre projekty, ktoré už HotPDF vkladajú a chcú jeden PDF backend naprieč celou aplikáciou

 

Delphi declaration:

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;

 

Opis

TfrxHotPDFExport dedí z TfrxCustomExportFilter, takže sa bez zmien jadra FastReportu zapojí do bežného workflow MyReport.Export(MyExportInstance). Jednotka volá RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), takže sa filter po pridaní jednotky do balíka zobrazí v palete komponentov IDE

 

Namiesto opätovnej implementácie úplného PDF emitera pre jednotlivé objekty FastReportu adaptér smeruje každú pripravenú stranu cez importer HotPDF pre enhanced metafile

 

1. Start vytvorí novú inštanciu THotPDF a nastaví metadáta dokumentu (Title / Author / Subject / Keywords / PDFVersion / Compression)

2. StartPage nastaví novú stranu HotPDF v bodoch tak, aby zodpovedala milimetrovým rozmerom strany reportu FastReportu

3. ExportObject je no-op (celá strana sa zachytí v čase FinishPage, nie po jednotlivých objektoch)

4. FinishPage vykreslí pripravenú stranu FastReportu do TMetafile cez Report.PreviewPages.DrawPage a potom ju prehrá cez automaticky škálujúci importer HotPDF ShowEnhancedMetafile

5. Finish zavolá EndDoc a v prípade potreby skopíruje dočasné PDF do Streamu poskytnutého volajúcim

 

Vlastnosti

Compressed - zapína kompresiu streamu HotPDF (predvolene True). Nastavte False pre diagnostické PDF (asi 5x väčšie súbory)

Title / Author / Subject / Keywords - metadáta dokumentu. Keď je Title prázdny, adaptér sa vráti na Report.Name, takže PDF má vždy neprázdny názov

PDFVersion - úroveň špecifikácie PDF, na ktorú má dokument cieliť. Predvolené je pdf17

CompressionLevel - FlateDecode level. Defaults to clDefault.

RenderDPI - hustota pixelov použitá pri rasterizácii strany FastReportu cez TMetafileCanvas. Vyššia hodnota znamená ostrejší text a čiary, ale väčší metafile a PDF. 96 je natívne screen DPI FastReportu; 200 (predvolené) dáva výsledky v kvalite na tlač bez obrovských súborov

 

Typical 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;

 

Capabilities preserved

Vektorový aj rastrový obsah strany (text, čiary, obdĺžniky, výplne, bitmapy) vykreslený štandardným layout engine FastReportu. Textové reťazce vyriešené cez GDI (HotPDF vkladá fonty vyriešené systémom Windows cez bežnú cestu podmnožiny fontov HotPDF). Metadáta na úrovni dokumentu

 

Limitations of the metafile bridge

Keďže strany sa zachytávajú ako enhanced metafiles, funkcie PDF špecifické pre FastReport, ktoré vyžadujú štrukturálne informácie (AcroForm polia, pomenované ciele, osnovy dokumentu, brány zhody PDF/A alebo PDF/X), sa neprenášajú. Výstup je verná vizuálna reprodukcia toho, čo FastReport vykreslí na obrazovku alebo na tlačiareň, nie štruktúrované PDF. Projekty, ktoré potrebujú výstup AcroForm alebo zhodu s PDF/A, by mali HotPDF riadiť priamo cez jeho natívne API

 

Packaging note

Adaptér žije v Lib\Addons\FastReport4\ a nie je súčasťou hlavných balíkov HotPDF*.dpk, takže závislosť FastReport sa pridá len do projektov, ktoré sa k adaptéru prihlásia. Smoke test (smoke_frx_hotpdf.dpr) je uložený vedľa jednotky

 

See also: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support