TppHotPDFDevice

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

 

FastReport adapter  QuickReport adapter  DevExpress adapter

ReportBuilder device class som använder HotPDF som underliggande PDF-backend i stället för ReportBuilders egen ppPDFDevice. Avsedd för projekt som redan bäddar in HotPDF och vill ha en enda PDF-backend i hela 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;

 

Beskrivning

TppHotPDFDevice ärver från TppGraphicsDevice (en nivå ovanför TppCustomScreenDevice / TppImageDevice), så den passar in i ReportBuilders device chain när den tilldelas TppReport.PrinterDevice eller används som publisher device på en TppPublisher. DeviceName rapporteras som 'HotPDF'. Eftersom device registration i ReportBuilder görs via ppRptDeviceMap i stället för RegisterComponents finns ingen IDE component palette entry - callers skapar TppHotPDFDevice direkt

 

Varje sida som kommer genom TppGraphicsDevice.ReceivePage ritas på en transient TMetafileCanvas (skapad i BeforeRenderPage, finaliserad i AfterRenderPage). Den fångade TMetafile matas sedan till HotPDFs ShowEnhancedMetafile auto-scaling importer:

 

1. StartJob skapar THotPDF-instansen, sätter metadata och anropar BeginDoc

2. BeforeRenderPage skapar en TMetafile med storleken spWidth x spHeight plus en TMetafileCanvas och sätter den som ärvd Canvas

3. RenderPage (ärvd) går igenom DrawCommands och dirigerar dem via GraphicsContext till vår metafile canvas

4. AfterRenderPage finaliserar metafilen (frigör canvas), lägger till en ny HotPDF-sida med storleken mmWidth x mmHeight (konverterad till PDF points) och spelar metafilen via ShowEnhancedMetafile

5. EndJob anropar HotPDF.EndDoc; om output är en Stream kopieras bytes från den temporära fil som skrivits internt

 

Egenskaper

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

Title / Author / Subject / Keywords - document metadata. När Title är tom faller devicen tillbaka till FileName, så PDF:en alltid har en icke-tom titel

PDFVersion - PDF-specifikationsnivån som dokumentet ska rikta sig mot. Standard är pdf17

Compressed - HotPDF stream compression on (default True). Set False for diagnostic PDFs.

CompressionLevel - FlateDecode level. Defaults to clDefault.

SetOutputStream(AStream) - skickar PDF bytes till AStream i stället för att skriva till disk. Anropa innan rapporten utlöser StartJob

 

Typiskt arbetsflöde

 

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;

 

Bevarade funktioner

Vector- och raster page content renderat av ReportBuilders standard draw-command pipeline. GDI-resolved text strings. Standard 200 DPI metafile capture (konfigurerbart via ärvda PixelsPerInch) ger utskriftskvalitet utan enorma filer

 

Begränsningar i metafile-bryggan

Eftersom sidor fångas som enhanced metafiles propageras inte ReportBuilder-specifika PDF-funktioner som kräver strukturell information (AcroForm fields, named destinations, outlines, PDF/A eller PDF/X conformance gates). Utdata är en trogen visuell återgivning av vad ReportBuilder renderar, inte en strukturerad PDF

 

Paketeringsanteckning

Devicen finns i Lib\Addons\ReportBuilder\ och är inte del av huvudpaketen HotPDF*.dpk, så ReportBuilder-beroendet dras bara in av projekt som aktivt väljer devicen. Ett smoke test (smoke_pp_hotpdf.dpr) finns bredvid uniten

 

Se även: TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support