TfrxHotPDFExport

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

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

Filtro de exportação de PDF do FastReport 4 / FastReport VCL que utiliza o HotPDF como o backend PDF subjacente em vez do gravador de PDF embutido do próprio FastReport. Destinado a projetos que já incorporam o HotPDF e desejam um único backend PDF em toda a aplicação.

 

Declaração Delphi:

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;

 

Descrição

O TfrxHotPDFExport descende de TfrxCustomExportFilter, então ele se encaixa no fluxo de trabalho regular MyReport.Export(MyExportInstance) sem quaisquer alterações no núcleo do FastReport. A unit chama RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), para que o filtro apareça na paleta de componentes da IDE uma vez que a unit seja adicionada a um pacote.

 

Em vez de reimplementar o emissor PDF completo por objeto do FastReport, o adaptador roteia cada página preparada através do importador enhanced-metafile do HotPDF:

 

1. Start cria uma nova instância THotPDF e configura os metadados do documento (Title / Author / Subject / Keywords / PDFVersion / Compression).

2. StartPage dimensiona a nova página do HotPDF em pontos para corresponder às dimensões em milímetros da página de relatório do FastReport.

3. ExportObject não tem efeito (a página inteira é capturada no momento do FinishPage, não por objeto).

4. FinishPage renderiza a página preparada do FastReport em um TMetafile através de Report.PreviewPages.DrawPage, depois reproduz o metafile por meio do importador de redimensionamento automático ShowEnhancedMetafile do HotPDF.

5. Finish chama EndDoc e copia o PDF temporário para o Stream fornecido pelo chamador, se necessário.

 

Propriedades

Compressed - Compressão de fluxo do HotPDF ativada (padrão True). Defina como False para PDFs de diagnóstico (arquivos ~5x maiores).

Title / Author / Subject / Keywords - metadados do documento. Quando Title estiver vazio, o adaptador recai em Report.Name para que o PDF sempre tenha um título não vazio.

PDFVersion - o nível de especificação PDF que o documento deve focar. O padrão é pdf17.

CompressionLevel - Nível de FlateDecode. O padrão é clDefault.

RenderDPI - densidade de pixels usada ao rasterizar a página do FastReport por meio do TMetafileCanvas. Maior = texto e linhas mais nítidos, mas metafile e PDF maiores. 96 é o DPI de tela nativo do FastReport; 200 (padrão) fornece resultados com qualidade de impressão sem arquivos enormes.

 

Fluxo de trabalho típico

 

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;

 

Capacidades preservadas

Conteúdo vetorial e raster da página (texto, linhas, retângulos, preenchimentos, bitmaps) renderizado pelo mecanismo de layout padrão do FastReport. Strings de texto resolvidas por GDI (HotPDF embute as fontes resolvidas pelo Windows via o caminho regular de subconjunto de fontes do HotPDF). Metadados em nível de documento.

 

Limitações da ponte de metafile

Devido às páginas serem capturadas como enhanced metafiles, recursos de PDF específicos do FastReport que exigem informações estruturais (campos AcroForm, destinos nomeados, outline do documento, validações de conformidade PDF/A ou PDF/X) não são propagados. A saída é uma reprodução visual fiel do que o FastReport renderiza na tela / impressora, e não um PDF estruturado. Projetos que necessitam de saída AcroForm ou conformidade com PDF/A devem conduzir o HotPDF diretamente através da sua API nativa.

 

Nota de empacotamento

O adaptador fica em Lib\Addons\FastReport4\ e não faz parte dos pacotes principais HotPDF*.dpk, então a dependência do FastReport só é puxada por projetos que optam pelo adaptador. Um teste de fumaça (smoke_frx_hotpdf.dpr) encontra-se junto à unit.

 

Veja também: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support