TppHotPDFDevice

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

 

FastReport adapter QuickReport adapter DevExpress adapter

ReportBuilder eszközosztály, amely a HotPDF-et használja mögöttes PDF háttérrendszerként a ReportBuilder saját ppPDFDevice eszköze helyett. Olyan projektekhez készült, amelyek már beágyazzák a HotPDF-et, és egyetlen PDF háttérrendszert szeretnének a teljes alkalmazásban

 

Delphi deklaráció:

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;

 

Leírás

A TppHotPDFDevice a TppGraphicsDevice osztályból származik (egy szinttel a TppCustomScreenDevice / TppImageDevice felett), így beilleszkedik a ReportBuilder eszközláncába, amikor hozzárendelik a TppReport.PrinterDevice tulajdonsághoz, vagy közzétevő eszközként használják egy TppPublisher-en. A DeviceName értéke 'HotPDF'-ként van jelentve. Mivel az eszköz regisztrációja a ReportBuilderben a ppRptDeviceMap-en keresztül történik, nem pedig a RegisterComponents segítségével, nincs IDE komponenspaletta-bejegyzés - a hívók közvetlenül példányosítják a TppHotPDFDevice osztályt

 

Minden TppGraphicsDevice.ReceivePage metóduson keresztül érkező oldal egy átmeneti TMetafileCanvas-ra rajzolódik (amely a BeforeRenderPage metódusban jön létre, és az AfterRenderPage metódusban véglegesítődik). Az így rögzített TMetafile ezután átadásra kerül a HotPDF ShowEnhancedMetafile automatikusan méretező importőrének:

 

1. A StartJob létrehozza a THotPDF példányt, beállítja a metaadatokat, és meghívja a BeginDoc metódust

2. A BeforeRenderPage létrehoz egy spWidth x spHeight méretű TMetafile-t és egy TMetafileCanvas-t, majd beállítja azt örökölt Canvas-ként

3. A RenderPage (örökölt) végigmegy a DrawCommands listán, és a GraphicsContext-en keresztül átirányítja azokat a metafile canvas-unkra

4. Az AfterRenderPage véglegesíti a metafile-t (felszabadítja a canvas-t), hozzáad egy új, mmWidth x mmHeight méretű (PDF pontokká konvertált) HotPDF oldalt, és lejátssza a metafile-t a ShowEnhancedMetafile segítségével

5. Az EndJob meghívja a HotPDF.EndDoc metódust; ha a kimenet egy folyam (Stream), átmásolja a bájtokat a belsőleg írt ideiglenes fájlból

 

Tulajdonságok

FileName - a cél PDF útvonala. Akkor használatos, ha a SetOutputStream nem állított be folyamot

Title / Author / Subject / Keywords - dokumentum metaadatok. Ha a Title üres, az eszköz a FileName-re vált vissza, így a PDF mindig nem üres címmel rendelkezik

PDFVersion - a dokumentum által megcélzott PDF specifikációs szint. Alapértelmezés szerint pdf17

Compressed - a HotPDF folyamtömörítés bekapcsolása (alapértelmezés szerint True). Diagnosztikai PDF-ek esetén állítsa False értékre

CompressionLevel - FlateDecode szint. Alapértelmezés szerint clDefault

SetOutputStream(AStream) - átirányítja a PDF bájtokat a AStream folyamba a lemezre írás helyett. A jelentés StartJob hívása előtt kell meghívni

 

Tipikus munkafolyamat

 

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;

 

Megőrzött képességek

A ReportBuilder szabványos rajzolási-parancs folyamata által renderelt vektoros és raszteres oldaltartalom. GDI által feloldott szövegsorozatok. Az alapértelmezett 200 DPI metafile rögzítés (amely az örökölt PixelsPerInch segítségével konfigurálható) nyomtatási minőségű kimenetet ad óriási fájlok nélkül

 

A metafile híd korlátai

Mivel az oldalak továbbfejlesztett metafile-ként (enhanced metafile) vannak rögzítve, a strukturális információkat igénylő ReportBuilder-specifikus PDF-funkciók (AcroForm mezők, nevesített célok, körvonalak, PDF/A vagy PDF/X megfelelőségi korlátok) nem terjednek tovább. A kimenet a ReportBuilder által renderelt kép hű vizuális reprodukciója, nem pedig egy strukturált PDF

 

Csomagolási megjegyzés

Az eszköz a Lib\Addons\ReportBuilder\ könyvtárban található, és nem része a fő HotPDF*.dpk csomagoknak, így a ReportBuilder függőség csak azokban a projektekben jelenik meg, amelyek kifejezetten használják ezt az eszközt. A smoke teszt (smoke_pp_hotpdf.dpr) az egység mellett található

 

Lásd még: TfrxHotPDFExport, TppHotPDFDevice, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support