TppHotPDFDevice

ReportBuilder-tilpasser (Lib\Addons\ReportBuilder\ppHotPDFDevice.pas)

 

FastReport adapter  QuickReport adapter  DevExpress adapter

ReportBuilder-enhetsklasse som bruker HotPDF som underliggende PDF-bakende i stedet for ReportBuilders egen ppPDFDevice. Ment for prosjekter som allerede inneholder HotPDF og vil ha én PDF-bakende for hele programmet

 

Delphi-erklæring:

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 arver fra TppGraphicsDevice (ett nivå over TppCustomScreenDevice / TppImageDevice), så den passer inn i ReportBuilders enhetskjede når den tilordnes TppReport.PrinterDevice eller brukes som publiseringsenhet på en TppPublisher. DeviceName rapporteres som 'HotPDF'. Fordi enhetsregistrering i ReportBuilder gjøres via ppRptDeviceMap i stedet for RegisterComponents, finnes det ingen IDE-oppføring i komponentpaletten - kallere instansierer TppHotPDFDevice direkte

 

Hver side som kommer gjennom TppGraphicsDevice.ReceivePage tegnes på en midlertidig TMetafileCanvas (opprettet i BeforeRenderPage, ferdigstilt i AfterRenderPage). Den innsamlede TMetafile-en mates deretter til HotPDFs auto-skalering-importør ShowEnhancedMetafile:

 

1. StartJob oppretter THotPDF-instansen, setter metadata og kaller BeginDoc

2. BeforeRenderPage oppretter en TMetafile med størrelsen spWidth x spHeight pluss en TMetafileCanvas, og setter den som den nedarvede Canvas

3. RenderPage (nedarvet) går gjennom DrawCommands og sender dem via GraphicsContext til metafile-flaten vår

4. AfterRenderPage fullfører metafilen (frigjør canvas), legger til en ny HotPDF-side med størrelsen mmWidth x mmHeight (konvertert til PDF-punkter), og spiller av metafilen via ShowEnhancedMetafile

5. EndJob kaller HotPDF.EndDoc; hvis utdata er en Stream, kopieres bytene fra tempfilen som ble skrevet internt

 

Egenskaper

FileName - mål-PDF-bane. Brukes med mindre SetOutputStream har satt opp en strøm

Title / Author / Subject / Keywords - dokumentmetadata. Når Title er tom, faller enheten tilbake til FileName slik at PDF-en alltid får en ikke-tom tittel

PDFVersion - PDF-spesifikasjonsnivået dokumentet skal sikte mot. Standard er pdf17

Compressed - slår på HotPDF-strømkomprimering (standard True). Sett False for diagnostiske PDF-er

CompressionLevel - FlateDecode-nivå. Standard er clDefault

SetOutputStream(AStream) - ruter PDF-bytene til AStream i stedet for å skrive til disk. Kalles før rapporten utløser StartJob

 

Typisk arbeidsflyt

 

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;

 

Bevarte egenskaper

Vektor- og rastersideinnhold rendres av ReportBuilders standard tegnekommando-pipeline. Tekststrenger løst via GDI. Standard fangst av metafiler på 200 DPI (kan justeres via den arvede PixelsPerInch) gir utskrift i god kvalitet uten enorme filer

 

Begrensninger i metafile-broen

Fordi sider fanges som forbedrede metafiler, blir ikke ReportBuilder-spesifikke PDF-funksjoner som krever strukturell informasjon (AcroForm-felt, navngitte mål, disposisjoner, PDF/A- eller PDF/X-samsvarskontroller) videreført. Resultatet er en tro visuell gjengivelse av det ReportBuilder rendrer, ikke en strukturert PDF

 

Pakkeringsnotat

Enheten ligger i Lib\Addons\ReportBuilder\ og er ikke en del av hovedpakkene HotPDF*.dpk, så ReportBuilder-avhengigheten tas bare inn av prosjekter som velger å bruke enheten. En røyktest (smoke_pp_hotpdf.dpr) ligger ved siden av enheten

 

Se også: TfrxHotPDFExport, TQRHotPDFExportFilter, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Støtte for forbedret EMF/WMF