|
TppHotPDFDevice ReportBuilder adapter (
|
FastReport adapter QuickReport adapter DevExpress adapter |
|
Trieda zariadenia ReportBuilder, ktorá používa HotPDF ako základný PDF backend namiesto vlastného ppPDFDevice ReportBuildera. Určená pre projekty, ktoré už HotPDF vkladajú a chcú jeden PDF backend naprieč celou aplikáciou
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 dedí z TppGraphicsDevice (o úroveň vyššie než TppCustomScreenDevice / TppImageDevice), takže sa zapája do reťazca zariadení ReportBuildera, keď sa priradí k TppReport.PrinterDevice alebo použije ako publisher device na TppPublisher. DeviceName sa hlási ako 'HotPDF'. Keďže registrácia zariadenia v ReportBuilderi prebieha cez ppRptDeviceMap a nie cez RegisterComponents, v palete komponentov IDE nie je žiadna položka - volajúci vytvoria TppHotPDFDevice priamo
Každá stránka, ktorá prejde cez
1. StartJob vytvorí inštanciu THotPDF, nastaví metadáta a zavolá BeginDoc 2. BeforeRenderPage vytvorí TMetafile s rozmermi spWidth x spHeight spolu s TMetafileCanvas a nastaví ho ako zdedené Canvas 3. RenderPage (zdedené) prejde DrawCommands a nasmeruje ich cez GraphicsContext na naše metafile canvas 4. AfterRenderPage dokončí metafile (uvoľní canvas), pridá novú stranu HotPDF s rozmermi mmWidth x mmHeight prepočítanými na body PDF a prehrá metafile cez ShowEnhancedMetafile 5. EndJob zavolá HotPDF.EndDoc; ak je výstup Stream, skopíruje bajty z dočasného súboru zapísaného interne
Vlastnosti
Title / Author / Subject / Keywords - metadáta dokumentu. Keď je Title prázdny, zariadenie sa vráti na FileName, takže PDF má vždy neprázdny názov PDFVersion - úroveň špecifikácie PDF, na ktorú má dokument cieliť. Predvolené je pdf17 Compressed - zapína kompresiu prúdu HotPDF (predvolene True). Nastavte False pre diagnostické PDF
SetOutputStream(AStream) - nasmeruje bajty PDF do AStream namiesto zápisu na disk. Zavolajte pred tým, než report spustí 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 Vektorový aj rastrový obsah strany vykreslený štandardným draw-command pipeline ReportBuildera. Textové reťazce vyriešené cez GDI. Predvolené zachytávanie metafile pri 200 DPI (konfigurovateľné cez zdedené PixelsPerInch) dáva výstup v kvalite na tlač bez obrovských súborov
Limitations of the metafile bridge Keďže strany sa zachytávajú ako enhanced metafiles, funkcie PDF špecifické pre ReportBuilder, ktoré vyžadujú štrukturálne informácie (polia AcroForm, pomenované ciele, osnovy, brány zhody PDF/A alebo PDF/X), sa neprenášajú. Výstup je verným vizuálnym zobrazením toho, čo ReportBuilder vykreslí, nie štruktúrované PDF
Packaging note Zariadenie žije v
See also: TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support |