TppHotPDFDevice

ReportBuilder adapter (Lib\Addons\ReportBuilder\ppHotPDFDevice.pas)

 

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 TppGraphicsDevice.ReceivePage crta se na prolazni TMetafileCanvas (kreiran u BeforeRenderPage, završen u AfterRenderPage). Uhvaćeni TMetafile se zatim prosleđuje HotPDF-ovom ShowEnhancedMetafile uvozniku sa automatskim skaliranjem:

 

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

FileName - target PDF path. Used unless SetOutputStream has installed a stream.

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

CompressionLevel - FlateDecode level. Defaults to clDefault.

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 Lib\Addons\ReportBuilder\ i nije deo glavnih HotPDF*.dpk paketa, pa se zavisnost ReportBuilder učitava samo u projektima koji se opredele za uređaj. Smoke test (smoke_pp_hotpdf.dpr) nalazi se uz jedinicu

 

See also: TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support