|
ReportBuilder enhedsklasse, der bruger HotPDF som den underliggende PDF-backend i stedet for ReportBuilders egenppPDFDevice. Beregnet til projekter, der allerede indlejrer HotPDF og ønsker en enkelt PDF-backend på tværs af hele applikationen
Delphi deklaration:
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;
Beskrivelse
TppHotPDFDevice stammer fraTppGraphicsDevice(ét niveau overTppCustomScreenDevice / TppImageDevice), så den passer ind i ReportBuilders enhedskæde, når den tildeles tilTppReport.PrinterDeviceeller bruges som en udgiverenhed på enTppPublisher. DeviceNamerapporteres som'HotPDF'. Fordi enhedsregistrering i ReportBuilder sker viappRptDeviceMapsnarere endRegisterComponents, er der ingen IDE-komponentpaletindgang - kaldere instansiererTppHotPDFDevice directly
Hver side, der kommer igennemTppGraphicsDevice.ReceivePagetegnes på en midlertidigTMetafileCanvas(oprettet iBeforeRenderPage, færdiggjort iAfterRenderPage). Den fangedeTMetafileindfødes derefter til HotPDFsShowEnhancedMetafileauto-skalerende importør:
1. StartJobopretterTHotPDFinstansen, indstiller metadata og kalderBeginDoc.
2. BeforeRenderPageopretter enTMetafiledimensioneret tilspWidth x spHeightplus enTMetafileCanvas, og indstiller den som den nedarvedeCanvas.
3. RenderPage(nedarvet) gennemgårDrawCommandsog dirigerer dem viaGraphicsContextover på vores metafil-canvas
4. AfterRenderPagefærdiggør metafilen (frigør canvas), tilføjer en ny HotPDF-side dimensioneret tilmmWidth x mmHeight(konverteret til PDF-punkter), og afspiller metafilen viaShowEnhancedMetafile.
5. EndJob calls HotPDF.EndDoc; hvis outputtet er en Stream, kopieres bytes fra den midlertidige fil skrevet internt
Egenskaber
FileName- mål-PDF-sti. Bruges, medmindreSetOutputStreamhar installeret en strøm
Title / Author / Subject / Keywords- dokument-metadata. Når Title er tom, falder enheden tilbage påFileName, så PDF'en altid har en ikke-tom titel
PDFVersion- det PDF-specifikationsniveau, dokumentet skal rette sig mod. Standard erpdf17.
Compressed- HotPDF-strømkomprimering slået til (standard True). Sæt til False for diagnostiske PDF'er
CompressionLevel- FlateDecode niveau. Standard erclDefault.
SetOutputStream(AStream)- diriger PDF-bytes ind iAStreami stedet for at skrive til disk. Kald før rapporten kørerStartJob.
Typisk arbejdsgang
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;
Funktionsevner bevaret
Vektor- og raster-sideindhold gengivet af ReportBuilders standard tegnekommando-pipeline. GDI-løste tekststrenge. Standard 200 DPI metafil-fangst (konfigurerbar via den nedarvedePixelsPerInch) giver print-kvalitet output uden enorme filer
Begrænsninger ved metafil-broen
Da sider fanges som forbedrede metafiler, udbredes ReportBuilder-specifikke PDF-funktioner, der kræver strukturel information (AcroForm-felter, navngivne destinationer, dispositioner, PDF/A- eller PDF/X-overensstemmelsesporte), ikke. Outputtet er en trofast visuel gengivelse af, hvad ReportBuilder gengiver, ikke en struktureret PDF
Enheden findes i
og er ikke en del af de primæreLib\Addons\ReportBuilder\pakker, så ReportBuilder-afhængigheden trækkes kun ind af projekter, der tilmelder sig enheden. En test (HotPDF*.dpkpakker, så ReportBuilder-afhængigheden kun trækkes ind af projekter, der tilmelder sig enheden. En smoke-test (smoke_pp_hotpdf.dpr) lever sammen med enheden
Se også TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support
|