TfrxHotPDFExport

Adaptador FastReport 4 / FastReport VCL

 

Adaptador QuickReport  Dispositivo ReportBuilder  Adaptador DevExpress

Filtro de exportação PDF FastReport 4 / FastReport VCL que usa o HotPDF como backend PDF subjacente, em vez do escritor PDF incorporado do próprio FastReport. Destinado a projetos que já incorporam o HotPDF e querem 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 PageRange: string;

    property PDFVersion: TPDFVersType default pdf17;

    property PDFACompliance: string;

    property PDFXCompliance: string;

    property CompressionLevel: TPDFCompressionLevel default clDefault;

    property RenderDPI: Integer default 200;

    property ExportMode: TfrxHotPDFExportMode default hemPageMetafile;

    property AutoCreateURL: Boolean default False;

    property FontEmbedding: Boolean default True;

    property NotEmbeddedFonts: TStrings;

    property ActivateProtection: Boolean default False;

    property UserPassword, OwnerPassword: string;

    property CryptKeyLength: THPDFKeyType default k40;

    property ProtectOptions: THPDFProtectOptions default [];

    property EncryptMetadata: Boolean default True;

    property DialogDefaultFileName, DialogFilter, DialogTitle: string;

  end;

 

Descrição

O TfrxHotPDFExport desce de TfrxCustomExportFilter, por isso encaixa no fluxo de trabalho normal MyReport.Export(MyExportInstance) sem qualquer alteração ao núcleo do FastReport. A unidade chama RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), por isso o filtro aparece na palete de componentes do IDE logo que a unidade for adicionada a um pacote

 

Quando ShowDialog é True e não há stream de saída definida, a exportação pede o ficheiro com um diálogo de gravação. DialogDefaultFileName preenche o nome do ficheiro (vazio: FileName, depois Title, depois o nome do relatório), DialogFilter define a lista de tipos de ficheiro (vazio: ficheiros PDF e todos os ficheiros) e DialogTitle a legenda (vazio: Export to PDF). Não têm efeito em exportações silenciosas

 

O adaptador pode exportar através de um de três modos:

 

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

2. PageRange filtra opcionalmente as páginas do FastReport antes de os objetos de página do HotPDF serem dimensionados ou preenchidos

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

4. hemPageMetafile mantém o caminho original de captura da pré-visualização da página inteira e importa-o através de ShowEnhancedMetafile

5. hemObjectCanvas pede ao FastReport que desenhe cada view preparada num metaficheiro de página intermédio antes de o HotPDF importar essa página

6. hemNativeObjects mapeia views preparadas suportadas diretamente para chamadas de página HotPDF: texto de memo selecionável com fundo, alinhamento, clipping, espaçamento de carateres e estilos de frame, XObjects de imagem de imagens raster, geometria de formas simples, traços de linhas e anotações de URL de views

7. Finish chama EndDoc e copia o PDF temporário para a Stream fornecida pelo chamador, se necessário

 

Propriedades

Compressed - compressão de streams do HotPDF ligada (predefinição True). Defina False para PDFs de diagnóstico (ficheiros ~5x maiores)

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

PageRange - filtro de páginas opcional com base 1 usando a mesma sintaxe das operações de páginas do HotPDF, como 1, 1,3-5, ou uma string vazia para todas as páginas

PDFVersion - o nível da especificação PDF a que o documento deve obedecer. A predefinição é pdf17

PDFACompliance e PDFXCompliance - encaminham para o PDF do relatório gerado os portões de conformidade com normas do HotPDF. Os chamadores continuam a preparar quaisquer perfis ICC, OutputIntent, tagging ou ativos de pré-impressão necessários através do fluxo de trabalho HotPDF normal antes de dependerem da declaração final de conformidade

CompressionLevel - nível FlateDecode. A predefinição é clDefault

RenderDPI - densidade de píxeis usada ao rasterizar a página FastReport através de TMetafileCanvas. Mais alta = texto e linhas mais nítidos, mas metaficheiro e PDF maiores. 96 é o DPI nativo de ecrã do FastReport; 200 (predefinição) dá resultados com qualidade de impressão sem ficheiros enormes

ExportMode - escolhe exportação de metaficheiro de página inteira, exportação de canvas por objeto, ou exportação de objetos nativos para as classes de view FastReport atualmente mapeadas

AutoCreateURL - encaminha para THotPDF.AutoCreateURL, para que o texto de memo nativo possa criar anotações URI para URLs detetados

FontEmbedding e NotEmbeddedFonts - encaminham para o PDF do relatório gerado a política habitual de incorporação de fontes do HotPDF

ActivateProtection, UserPassword, OwnerPassword, CryptKeyLength, ProtectOptions e EncryptMetadata - encaminham as definições de segurança por palavra-passe do HotPDF quando é preciso um relatório encriptado

 

Fluxo de trabalho típico

 

Exp := TfrxHotPDFExport.Create(nil);

try

  Exp.FileName := 'Report.pdf';

  Exp.Title := 'Monthly Statement';

  Exp.PDFVersion := pdf17;

  Exp.PDFACompliance := '3B';

  Exp.PageRange := '1,3-5';

  Exp.RenderDPI := 200;

  Exp.ExportMode := hemNativeObjects;

  Exp.AutoCreateURL := True;

  Exp.FontEmbedding := True;

  Exp.NotEmbeddedFonts.Add('Courier New');

  Exp.ActivateProtection := True;

  Exp.CryptKeyLength := aes256;

  Exp.OwnerPassword := 'owner';

  Exp.UserPassword := 'viewer';

  Exp.ProtectOptions := [prPrint, prInformationCopy];

  frxReport1.Export(Exp);

finally

  Exp.Free;

end;

 

Capacidades preservadas

Os modos de página inteira e de canvas por objeto preservam o conteúdo vetorial e raster das páginas renderizado pelo motor de layout standard do FastReport. O modo de objetos nativos preserva atualmente texto de memo suportado como texto PDF com fundo, alinhamento horizontal e vertical e estilos de frame; views de imagens como XObjects de imagem; formas simples como geometria PDF; views de linhas como strokes; e URLs de views como anotações de link URI. Os metadados ao nível do documento são preservados em todos os modos

 

Limitações

As funcionalidades PDF específicas do FastReport que exigem mapeamento estrutural adicional (campos AcroForm, destinos nomeados e outlines do documento) não são propagadas por este adaptador. As propriedades de portão PDF/A e PDF/X são encaminhadas para o HotPDF, mas ativos específicos de normas, como perfis de OutputIntent, continuam a ser responsabilidade do chamador

 

Nota de empacotamento

O adaptador é distribuído como add-on opcional em vez de dependência dos pacotes principais HotPDF*.dpk, por isso projetos sem FastReport não trazem unidades FastReport

 

Ver também: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Suporte EMF/WMF melhorado