|
TQRHotPDFExportFilter QuickReport adapter (
|
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. 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
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
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 |