TfrxHotPDFExport (FastReport 4 / FastReport VCL adapter)

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

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

Exportní filtr PDF pro FastReport 4 / FastReport VCL, který používá HotPDF jako podkladové PDF jádro místo vlastního vestavěného PDF writeru FastReport. Je určen pro projekty, které už HotPDF používají a chtějí jednotné PDF jádro napříč celou aplikací

 

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

 

Popis

TfrxHotPDFExport dědí z TfrxCustomExportFilter, takže zapadá do běžného workflow MyReport.Export(MyExportInstance) bez změn jádra FastReport. Jednotka volá RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), takže se filtr po přidání jednotky do balíčku zobrazí v paletě komponent IDE

 

Místo opětovné implementace kompletního per-object PDF emitteru FastReport adaptér směruje každou připravenou stránku přes enhanced-metafile importer HotPDF:

 

1. Start vytvoří novou instanci THotPDF a nastaví metadata dokumentu (Title / Author / Subject / Keywords / PDFVersion / Compression)

2. StartPage nastaví velikost nové stránky HotPDF v bodech tak, aby odpovídala milimetrovým rozměrům reportové stránky FastReport

3. ExportObject je no-op (celá stránka se zachytí v čase FinishPage, ne po jednotlivých objektech)

4. FinishPage vykreslí připravenou stránku FastReport do TMetafile přes Report.PreviewPages.DrawPage a poté metafile přehraje přes automaticky škálující importer HotPDF ShowEnhancedMetafile

5. Finish zavolá EndDoc a podle potřeby zkopíruje dočasné PDF do streamu dodaného volajícím

 

Vlastnosti

Compressed - zapne kompresi streamů HotPDF (výchozí True). Nastavte False pro diagnostická PDF (~5× větší soubory)

Title / Author / Subject / Keywords - metadata dokumentu. Když je Title prázdné, adaptér použije jako fallback Report.Name, takže PDF má vždy neprázdný titul

PDFVersion - úroveň specifikace PDF, na kterou má dokument cílit. Výchozí hodnota je pdf17

CompressionLevel - úroveň FlateDecode. Výchozí hodnota je clDefault

RenderDPI - hustota pixelů použitá při rastrování stránky FastReport přes TMetafileCanvas. Vyšší hodnota znamená ostřejší text a čáry, ale větší metafile a PDF. 96 je nativní obrazovkové DPI FastReport; 200 (výchozí) poskytuje tiskovou kvalitu bez obrovských souborů

 

Typický pracovní postup

 

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;

 

Zachované schopnosti

Vektorový a rastrový obsah stránky (text, čáry, obdélníky, výplně, bitmapy) vykreslený standardním layout enginem FastReport. Textové řetězce vyřešené přes GDI (HotPDF vloží fonty vyřešené Windows přes běžnou cestu subsetu fontů HotPDF). Metadata na úrovni dokumentu

 

Omezení bridge přes metafile

Protože stránky jsou zachycené jako enhanced metafiles, PDF funkce specifické pro FastReport, které vyžadují strukturální informace (pole AcroForm, pojmenované cíle, outlines dokumentu, brány shody PDF/A nebo PDF/X), se nepřenášejí. Výstup je věrná vizuální reprodukce toho, co FastReport vykreslí na obrazovku / tiskárnu, ne strukturované PDF. Projekty, které potřebují výstup AcroForm nebo shodu PDF/A, by měly HotPDF řídit přímo přes jeho nativní API

 

Poznámka k balení

Adaptér je umístěný v Lib\Addons\FastReport4\ a není součástí hlavních balíčků HotPDF*.dpk, takže závislost FastReport si přitáhnou jen projekty, které se pro adaptér výslovně rozhodnou. Smoke test (smoke_frx_hotpdf.dpr) je uložený vedle jednotky

 

Viz také: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF – podpora