|
TQRHotPDFExportFilter QuickReport adapter (
|
FastReport adapter ReportBuilder device DevExpress adapter |
|
Filtro de exportação QuickReport que usa HotPDF como backend PDF subjacente em vez do QRPDFFilter próprio do QuickReport. Destina-se a projetos que já incorporam HotPDF e querem um único backend PDF em toda a aplicação
Declaração Delphi: type TQRHotPDFExportFilter = class(TQRExportFilter) public constructor Create(Filename: string); override; procedure SetOutputStream(AStream: TStream); property Title, Author, Subject, Keywords: string; property PDFVersion: TPDFVersType; property Compressed: Boolean; property CompressionLevel: TPDFCompressionLevel; end;
Descrição TQRHotPDFExportFilter descende de TQRExportFilter, portanto encaixa no fluxo normal MyReport.ExportToFilter(MyExporterInstance) sem mudanças no núcleo do QuickReport. Como TQRExportFilter não é descendente de TComponent (é uma classe comum no design do QuickReport), não há registro de componente na IDE; os chamadores instanciam TQRHotPDFExportFilter diretamente via Create('out.pdf')
O QuickReport renderiza cada página preparada em um TMetafile armazenado em QRPrinter.PageList. Em vez de reimplementar todo o conjunto de callbacks TextOut / AcceptGraphic / AcceptBand por componente, o adaptador ignora esses callbacks (sobrescritas sem efeito) e coleta os metafiles por página em Finish:
1. Start(PaperWidth, PaperHeight, Font) - cria a instância THotPDF, define metadados, chama BeginDoc e salva (PaperWidth, PaperHeight) para que Finish possa dimensionar as páginas corretamente 2. 3. Finish - para cada metafile QRPrinter.PageList[i] em cache, adiciona (ou reutiliza) uma página HotPDF dimensionada para PaperWidth / PaperHeight em pontos e chama ShowEnhancedMetafile. Depois chama EndDoc e libera
Propriedades Title / Author / Subject / Keywords - metadados do documento. Quando Title está vazio, o adaptador usa Filename como fallback para que o PDF sempre tenha um título não vazio. Defina antes de chamar ExportToFilter
SetOutputStream(AStream) - direciona os bytes do PDF para AStream em vez de gravar em disco. Chame antes de ExportToFilter. Internamente é usado um arquivo temporário porque o HotPDF salva em EndDoc; os bytes são transmitidos de volta em Finish
Fluxo de trabalho típico
Filter := TQRHotPDFExportFilter.Create('Report.pdf'); try Filter.Title := 'Monthly Statement'; Filter.PDFVersion := pdf17; QuickRep1.ExportToFilter(Filter); finally Filter.Free; end;
Capacidades preservadas Vector and raster page content rendered by QuickReport's standard preview / printer pipeline. GDI-resolved text strings. Page sizing follows the
Limitações da ponte de metafile Como as páginas são capturadas como metafiles avançados, recursos PDF específicos do QuickReport que exigem informação estrutural (campos AcroForm, destinos nomeados, outlines, gates de conformidade PDF/A ou PDF/X) não são propagados. A saída é uma reprodução visual fiel do que o QuickReport renderiza, não um PDF estruturado
Nota de empacotamento O adaptador fica em Lib\Addons\QuickReport\ e não faz parte dos pacotes principais HotPDF*.dpk, portanto a dependência QuickReport só é puxada por projetos que optam pelo adaptador. Um teste smoke (smoke_qr_hotpdf.dpr) fica junto da unit
Veja também: TfrxHotPDFExport, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support |