|
TppHotPDFDevice ReportBuilder adapter (
|
FastReport adapter QuickReport adapter DevExpress adapter |
|
ReportBuilder klasa uređaja koja koristi HotPDF kao osnovni PDF backend umesto ReportBuilder-ovog sopstvenog ppPDFDevice. Namenjena je projektima koji već ugrađuju HotPDF i žele jedan PDF backend kroz celu aplikaciju
Delphi declaration: type TppHotPDFDevice = class(TppGraphicsDevice) public class function DeviceName: String; override; procedure StartJob; override; procedure EndJob; override; procedure CancelJob; override; procedure SetOutputStream(AStream: TStream); property FileName: string; property Title, Author, Subject, Keywords: string; property PDFVersion: TPDFVersType; property Compressed: Boolean; property CompressionLevel: TPDFCompressionLevel; end;
Opis TppHotPDFDevice nasleđuje TppGraphicsDevice (jedan nivo iznad TppCustomScreenDevice / TppImageDevice), pa se uklapa u ReportBuilder lanac uređaja kada se dodeli TppReport.PrinterDevice ili koristi kao publisher uređaj na TppPublisher-u. DeviceName se prijavljuje kao 'HotPDF'. Pošto se registracija uređaja u ReportBuilder-u radi preko ppRptDeviceMap, a ne preko RegisterComponents, nema IDE komponentne palete - pozivaoci instanciraju TppHotPDFDevice direktno
Svaka stranica koja prolazi kroz
1. StartJob kreira THotPDF instancu, postavlja metapodatke i poziva BeginDoc 2. BeforeRenderPage kreira TMetafile veličine spWidth x spHeight plus TMetafileCanvas, i postavlja ga kao nasleđeni Canvas 3. RenderPage (nasleđena) prolazi kroz DrawCommands i prosleđuje ih kroz GraphicsContext na naš metafile canvas 4. AfterRenderPage finalizuje metafile (oslobađa canvas), dodaje novu HotPDF stranicu veličine mmWidth x mmHeight (pretvorene u PDF pointove) i pušta metafile preko ShowEnhancedMetafile 5. EndJob poziva HotPDF.EndDoc; ako je izlaz Stream, kopira bajtove iz privremenog fajla upisanog interno
Svojstva
Title / Author / Subject / Keywords - metapodaci dokumenta. Kada je Title prazan, uređaj pada nazad na FileName tako da PDF uvek ima neprazan naslov PDFVersion - nivo PDF specifikacije koji dokument treba da cilja. Podrazumevana vrednost je pdf17 Compressed - HotPDF kompresija strima je uključena (podrazumevano True) Postavite False za dijagnostičke PDF-ove
SetOutputStream(AStream) - usmerite PDF bajtove u AStream umesto pisanja na disk. Pozovite pre nego što izveštaj pokrene StartJob
Typical workflow
Dev := TppHotPDFDevice.Create(nil); try Dev.FileName := 'Report.pdf'; Dev.Title := 'Monthly Statement'; Dev.PDFVersion := pdf17; ppReport1.DeviceType := 'HotPDF'; ppReport1.PrinterDevice := Dev; ppReport1.Print; finally Dev.Free; end;
Capabilities preserved Vektorski i raster sadržaj stranice renderovan kroz ReportBuilder-ov standardni draw-command pipeline. GDI-rešeni tekstualni nizovi. Podrazumevano 200 DPI hvatanje metafile-a (podesivo preko nasleđenog PixelsPerInch) daje kvalitet za štampu bez ogromnih fajlova
Limitations of the metafile bridge Pošto su stranice snimljene kao enhanced metafajlovi, ReportBuilder-specifične PDF funkcije koje zahtevaju strukturne informacije (AcroForm polja, imenovane destinacije, outline-i, PDF/A ili PDF/X usklađenost gate-ovi) se ne prenose. Izlaz je verna vizuelna reprodukcija onoga što ReportBuilder renderuje, ne strukturirani PDF
Packaging note Uređaj se nalazi u
See also: TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support |