TQRHotPDFExportFilter

Adaptor QuickReport (Lib\Addons\QuickReport\qrHotPDFExport.pas)

 

Adaptor FastReport  Dispozitiv ReportBuilder  Adaptor DevExpress

Filtru de export QuickReport care folosește HotPDF ca backend PDF de bază în locul propriului QRPDFFilter al QuickReport. Este destinat proiectelor care încorporează deja HotPDF și doresc un singur backend PDF în întreaga aplicație

 

Declarație Delphi:

type

  TQRHotPDFExportFilter = class(TQRExportFilter)

  public

    constructor Create(Filename: string); override;

    procedure SetOutputStream(AStream: TStream);

    property Title, Author, Subject, Keywords: string;

    property PDFVersion: TPDFVersType;

    property Compressed: Boolean;

    property CompressionLevel: TPDFCompressionLevel;

  end;

 

Descriere

TQRHotPDFExportFilter derivă din TQRExportFilter, astfel încât se integrează în fluxul obișnuit MyReport.ExportToFilter(MyExporterInstance) fără modificări în nucleul QuickReport. Deoarece TQRExportFilter nu este un descendent TComponent (este o clasă simplă în designul QuickReport), nu există înregistrare de componentă IDE - apelanții instanțiază direct TQRHotPDFExportFilter prin Create('out.pdf')

 

QuickReport randă fiecare pagină pregătită într-un TMetafile păstrat în QRPrinter.PageList. În loc să reimplementeze întregul set de callback-uri per-component TextOut / AcceptGraphic / AcceptBand, adaptorul le ignoră (overrides fără efect) și colectează metafile-urile per pagină în Finish

 

1. Start(PaperWidth, PaperHeight, Font) - creează instanța THotPDF, setează metadatele, apelează BeginDoc și salvează (PaperWidth, PaperHeight) astfel încât Finish să poată modela corect paginile

2. NewPage / EndPage / TextOut / AcceptGraphic - fără efect (metafile-ul conține deja conținutul randat)

3. Finish - pentru fiecare metafile memorat din QRPrinter.PageList[i], adaugă sau reutilizează o pagină HotPDF dimensionată la PaperWidth / PaperHeight în puncte și apelează ShowEnhancedMetafile. Apoi EndDoc și eliberează resursele

 

Proprietăți

Title / Author / Subject / Keywords - metadatele documentului. Când Title este gol, adaptorul revine la Filename, astfel încât PDF-ul să aibă mereu un titlu nenul. Setați înainte de apelul ExportToFilter

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

Compressed - compresia fluxului HotPDF activată (implicit True). Puneți False pentru PDF-uri de diagnostic

CompressionLevel - nivel FlateDecode. Implicit clDefault

SetOutputStream(AStream) - redirecționează octeții PDF în AStream în loc să scrie pe disc. Apelați înainte de ExportToFilter. În interior se folosește un fișier temporar deoarece HotPDF salvează la EndDoc; octeții sunt trimiși înapoi în Finish

 

Flux tipic

 

Filter := TQRHotPDFExportFilter.Create('Report.pdf');

try

  Filter.Title := 'Monthly Statement';

  Filter.PDFVersion := pdf17;

  QuickRep1.ExportToFilter(Filter);

finally

  Filter.Free;

end;

 

Capabilități păstrate

Conținut vectorial și raster al paginii randat de fluxul standard de previzualizare / imprimare al QuickReport. Șiruri de text rezolvate prin GDI. Dimensionarea paginii urmează PaperWidth / PaperHeight transmise lui Start de QuickReport

 

Limitările punții bazate pe metafile

Deoarece paginile sunt capturate ca enhanced metafile, funcțiile PDF specifice QuickReport care au nevoie de informație structurală (câmpuri AcroForm, destinații denumite, schițe, porți de conformitate PDF/A sau PDF/X) nu sunt propagate. Ieșirea este o reproducere vizuală fidelă a ceea ce randă QuickReport, nu un PDF structurat

 

Notă de ambalare

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

 

Vezi și: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Suport EMF/WMF îmbunătățit