|
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
|