TQRHotPDFExportFilter

QuickReport adapter (Lib\Addons\QuickReport\qrHotPDFExport.pas)

 

FastReport adapter  ReportBuilder device  DevExpress adapter

Filtro di esportazione QuickReport che usa HotPDF come backend PDF sottostante invece del QRPDFFilter di QuickReport. Pensato per progetti che incorporano già HotPDF e vogliono un unico backend PDF in tutta l'applicazione

 

Delphi declaration:

type

  TQRHotPDFExportFilter = class(TQRExportFilter)

  public

    constructor Create(Filename: string); override;

SetOutputStream(AStream) - instrada i byte PDF in AStream invece di scrivere su disco. Chiamare prima di ExportToFilter. Internamente viene usato un file temporaneo perché HotPDF salva in EndDoc; i byte vengono inviati indietro in Finish

    property Title, Author, Subject, Keywords: string;

    property PDFVersion: TPDFVersType;

    property Compressed: Boolean;

    property CompressionLevel: TPDFCompressionLevel;

  end;

 

Descrizione

TQRHotPDFExportFilter deriva da TQRExportFilter, quindi si inserisce nel normale workflow MyReport.ExportToFilter(MyExporterInstance) senza modifiche al core QuickReport. Poiché TQRExportFilter non è discendente di TComponent (è una plain class nel design QuickReport), non esiste registrazione componenti IDE: i chiamanti istanziano direttamente TQRHotPDFExportFilter tramite Create('out.pdf')

 

QuickReport renderizza ogni pagina preparata in un TMetafile memorizzato in QRPrinter.PageList. Invece di reimplementare l'intero set di callback per-component TextOut / AcceptGraphic / AcceptBand, l'adapter li ignora (override no-op) e raccoglie i metafile per pagina in Finish

 

1. Start(PaperWidth, PaperHeight, Font) - crea l'istanza THotPDF, imposta metadata, chiama BeginDoc e salva (PaperWidth, PaperHeight) così Finish può dimensionare correttamente le pagine

2. NewPage / EndPage / TextOut / AcceptGraphic - no-op (the metafile already has the rendered content).

3. Finish - per ogni metafile QRPrinter.PageList[i] memorizzato, aggiunge (o riusa) una pagina HotPDF dimensionata a PaperWidth / PaperHeight in points e chiama ShowEnhancedMetafile. Poi EndDoc e release

 

Proprietà

Title / Author / Subject / Keywords - metadata del documento. Quando Title è vuoto, l'adapter ripiega su Filename, così il PDF ha sempre un title non vuoto. Impostare prima di chiamare ExportToFilter

PDFVersion - PDF specification level the document should target. Defaults to pdf17.

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

CompressionLevel - FlateDecode level. Defaults to clDefault.

SetOutputStream(AStream) - instrada i byte PDF in AStream invece di scriverli su disco. Chiamare prima di ExportToFilter. Internamente viene usato un file temporaneo perché HotPDF salva su EndDoc; i byte vengono ritrasmessi in Finish

 

Workflow tipico

 

Filter := TQRHotPDFExportFilter.Create('Report.pdf');

try

  Filter.Title := 'Monthly Statement';

  Filter.PDFVersion := pdf17;

  QuickRep1.ExportToFilter(Filter);

finally

  Filter.Free;

end;

 

Capacità preservate

Vector and raster page content rendered by QuickReport's standard preview / printer pipeline. GDI-resolved text strings. Page sizing follows the PaperWidth / PaperHeight handed to Start by QuickReport.

 

Limiti del bridge metafile

Poiché le pagine vengono catturate come enhanced metafiles, le funzionalità PDF specifiche QuickReport che richiedono informazioni strutturali (AcroForm fields, named destinations, outlines, gate di conformità PDF/A o PDF/X) non vengono propagate. L'output è una riproduzione visiva fedele di ciò che QuickReport renderizza, non un PDF strutturato

 

Nota di packaging

L'adapter vive in Lib\Addons\QuickReport\ e non fa parte dei package principali HotPDF*.dpk, quindi la dipendenza QuickReport viene inclusa solo dai progetti che scelgono l'adapter. Uno smoke test (smoke_qr_hotpdf.dpr) vive accanto all'unit

 

Vedi anche: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Supporto EMF/WMF migliorato