TfrxHotPDFExport

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

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

Filtru de export PDF pentru FastReport 4 / FastReport VCL care folosește HotPDF ca backend PDF de bază în locul scriitorului PDF încorporat al FastReport. Este destinat proiectelor care încorporează deja HotPDF și doresc un singur backend PDF în întreaga aplicație

 

Declarație 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;

 

Descriere

TfrxHotPDFExport derivă din TfrxCustomExportFilter, astfel încât se integrează în fluxul obișnuit MyReport.Export(MyExportInstance) fără modificări în nucleul FastReport. Unitatea apelează RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), astfel încât filtrul apare în paleta de componente IDE după adăugarea unității într-un pachet

 

În loc să reimplementeze complet emitentul PDF per-obiect al FastReport, adaptorul redirecționează fiecare pagină pregătită prin importatorul de enhanced-metafile al HotPDF:

 

1. Start creează o instanță nouă THotPDF și setează metadatele documentului (Title / Author / Subject / Keywords / PDFVersion / Compression)

2. StartPage dimensionează noua pagină HotPDF în puncte astfel încât să corespundă dimensiunilor în milimetri ale paginii de raport FastReport

3. ExportObject nu face nimic (întreaga pagină este capturată la momentul FinishPage, nu per obiect)

4. FinishPage randă pagina FastReport pregătită într-un TMetafile prin Report.PreviewPages.DrawPage, apoi redă metafile-ul prin importatorul HotPDF cu autoscalare ShowEnhancedMetafile

5. Finish apelează EndDoc și copiază PDF-ul temporar în Stream-ul furnizat de apelant, dacă este nevoie

 

Proprietăți

Compressed - compresia fluxului HotPDF activată (implicit True). Puneți False pentru PDF-uri de diagnostic (~fișiere de 5 ori mai mari)

Title / Author / Subject / Keywords - metadatele documentului. Când Title este gol, adaptorul revine la Report.Name, astfel încât PDF-ul să aibă mereu un titlu nenul

PDFVersion - nivelul de specificație PDF țintit de document. Implicit pdf17

CompressionLevel - nivel FlateDecode. Implicit clDefault

RenderDPI - densitatea pixelilor folosită la rasterizarea paginii FastReport prin TMetafileCanvas. Valori mai mari înseamnă text și linii mai clare, dar un metafile și un PDF mai mari. 96 este DPI-ul ecranului nativ pentru FastReport; 200, valoarea implicită, oferă rezultate de calitate de tipar fără fișiere uriașe

 

Flux tipic

 

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;

 

Capabilități păstrate

Conținut vectorial și raster al paginii (text, linii, dreptunghiuri, umpleri, bitmap-uri) randat de motorul standard de aranjare al FastReport. Șiruri de text rezolvate prin GDI (HotPDF încorporează fonturile rezolvate de Windows prin fluxul obișnuit de subsetare a fonturilor). Metadate la nivel de document

 

Limitările podului bazat pe metafile

Deoarece paginile sunt capturate ca enhanced metafile, funcțiile PDF specifice FastReport care au nevoie de informație structurală (câmpuri AcroForm, destinații denumite, schițe de document, porți de conformitate PDF/A sau PDF/X) nu sunt propagate. Ieșirea este o reproducere vizuală fidelă a ceea ce FastReport randă pe ecran / imprimantă, nu un PDF structurat. Proiectele care au nevoie de ieșire AcroForm sau de conformitate PDF/A ar trebui să conducă HotPDF direct prin API-ul său nativ

 

Notă de ambalare

Adaptorul se află în Lib\Addons\FastReport4\ și nu face parte din pachetele principale HotPDF*.dpk, astfel că dependența FastReport este adusă doar de proiectele care optează pentru adaptor. Un test smoke (smoke_frx_hotpdf.dpr) se află lângă unitate

 

Vezi și: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Suport Enhanced EMF/WMF