|
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
|