TfrxHotPDFExport

FastReport 4 / FastReport VCL adapter (Lib\Addons\FastReport4\frxHotPDFExport.pas)

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

FastReport 4 / FastReport VCL PDF-exportfilter som använder HotPDF som underliggande PDF-backend i stället för FastReports egen inbyggda PDF writer. Avsett för projekt som redan bäddar in HotPDF och vill ha en enda PDF-backend i hela applikationen

 

Delphi-deklaration:

type

  TfrxHotPDFExport = class(TfrxCustomExportFilter)

  published

    property Compressed: Boolean default True;

    property Title, Author, Subject, Keywords: string;

    property PDFVersion: TPDFVersType default pdf17;

    property CompressionLevel: TPDFCompressionLevel default clDefault;

    property RenderDPI: Integer default 200;

  end;

 

Beskrivning

TfrxHotPDFExport ärver från TfrxCustomExportFilter, så det passar in i det vanliga MyReport.Export(MyExportInstance)-arbetsflödet utan ändringar i FastReports kärna. Uniten anropar RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), så filtret visas i IDE component palette när uniten läggs till i ett package

 

I stället för att återimplementera FastReports fullständiga per-object PDF emitter dirigerar adaptern varje förberedd sida via HotPDFs enhanced-metafile importer:

 

1. Start skapar en ny THotPDF-instans och sätter document metadata (Title / Author / Subject / Keywords / PDFVersion / Compression)

2. StartPage sätter storleken på den nya HotPDF-sidan i points så att den matchar FastReport-rapportssidans millimeterdimensioner

3. ExportObject är no-op (hela sidan fångas vid FinishPage, inte per-object)

4. FinishPage renderar den förberedda FastReport-sidan till en TMetafile via Report.PreviewPages.DrawPage och spelar sedan metafilen via HotPDFs auto-scaling importer ShowEnhancedMetafile

5. Finish anropar EndDoc och kopierar vid behov den temporära PDF:en till Stream som callern tillhandahåller

 

Egenskaper

Compressed - HotPDF stream compression på (standard True). Sätt False för diagnostiska PDFs (~5x större filer)

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

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

CompressionLevel - FlateDecode-nivå. Standard är clDefault

RenderDPI - pixel density som används när FastReport-sidan rasteriseras via TMetafileCanvas. Högre = skarpare text och linjer men större metafile och PDF. 96 är FastReports native screen DPI; 200 (standard) ger utskriftskvalitet utan enorma filer

 

Typiskt arbetsflöde

 

Exp := TfrxHotPDFExport.Create(nil);

try

  Exp.FileName := 'Report.pdf';

  Exp.Title := 'Monthly Statement';

  Exp.PDFVersion := pdf17;

  Exp.RenderDPI := 200;

  frxReport1.Export(Exp);

finally

  Exp.Free;

end;

 

Bevarade funktioner

Vector- och raster page content (text, linjer, rektanglar, fyllningar, bitmaps) renderat av FastReports standard layout engine. GDI-resolved text strings (HotPDF bäddar in Windows-resolved fonts via den vanliga HotPDF font subset path). Document-level metadata

 

Begränsningar i metafile-bryggan

Eftersom sidor fångas som enhanced metafiles propageras inte FastReport-specifika PDF-funktioner som kräver strukturell information (AcroForm fields, named destinations, document outlines, PDF/A eller PDF/X conformance gates). Utdata är en trogen visuell återgivning av vad FastReport renderar till skärm / skrivare, inte en strukturerad PDF. Projekt som behöver AcroForm output eller PDF/A conformance bör styra HotPDF direkt via dess native API

 

Paketeringsanteckning

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

 

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