|
Filtro de exportación PDF de FastReport 4 / FastReport VCL que usa HotPDF como backend PDF subyacente en lugar del propio escritor PDF integrado de FastReport. Pensado para proyectos que ya integran HotPDF y quieren un único backend PDF en toda la aplicación
Declaración en 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;
Descripción
TfrxHotPDFExport desciende de TfrxCustomExportFilter, así que encaja en el flujo normal MyReport.Export(MyExportInstance) sin ningún cambio en el core de FastReport. La unidad llama a RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]), de modo que el filtro aparece en la paleta de componentes del IDE en cuanto la unidad se agrega a un paquete
Cuando ShowDialog es True y no hay stream de salida asignado, la exportación pide el archivo con un diálogo de guardado. DialogDefaultFileName rellena el nombre de archivo (vacío: FileName, luego Title, luego el nombre del informe), DialogFilter define la lista de tipos de archivo (vacío: archivos PDF y todos los archivos) y DialogTitle el título del diálogo (vacío: Export to PDF). No tienen efecto en las exportaciones silenciosas
El adaptador puede exportar por uno de tres modos:
1. Start crea una instancia nueva de THotPDF y define los metadatos del documento (Title / Author / Subject / Keywords / PDFVersion / Compression)
2. PageRange filtra opcionalmente las páginas de FastReport antes de que los objetos de página de HotPDF se dimensionen o rellenen
3. StartPage dimensiona la nueva página de HotPDF en puntos para que coincida con las dimensiones en milímetros de la página del informe FastReport
4. hemPageMetafile conserva la ruta original de captura de la vista previa de página completa y la importa mediante ShowEnhancedMetafile
5. hemObjectCanvas pide a FastReport que dibuje cada vista preparada en un metafile de página intermedio antes de que HotPDF importe esa página
6. hemNativeObjects mapea las vistas preparadas soportadas directamente a llamadas de página de HotPDF para texto memo seleccionable con fondo, alineación, recorte, espaciado de caracteres y estilos de marco, image XObjects de imágenes rasterizadas, geometría de formas simples, trazos de líneas y anotaciones de URL de vistas
7. Finish llama a EndDoc y copia el PDF temporal al Stream que suministre quien llama si hace falta
Propiedades
Compressed - compresión de streams de HotPDF activada (True por defecto). Póngalo en False para PDFs de diagnóstico (archivos ~5 veces más grandes)
Title / Author / Subject / Keywords - metadatos del documento. Cuando Title está vacío, el adaptador recurre a Report.Name para que el PDF siempre tenga un título no vacío
PageRange - filtro de páginas opcional de base 1 que usa la misma sintaxis que las operaciones de página de HotPDF, por ejemplo 1, 1,3-5 o una cadena vacía para todas las páginas
PDFVersion - el nivel de la especificación PDF al que debe ajustarse el documento. Por defecto pdf17
PDFACompliance y PDFXCompliance - llevan las puertas de conformidad de estándares de HotPDF al PDF del informe generado. Quien llama sigue teniendo que preparar el perfil ICC, OutputIntent, etiquetado o recursos de preimpresión necesarios mediante el flujo normal de HotPDF antes de apoyarse en la declaración final de conformidad
CompressionLevel - nivel FlateDecode. Por defecto clDefault
RenderDPI - densidad de píxeles usada al rasterizar la página de FastReport a través de TMetafileCanvas. Cuanto mayor, más nítidos el texto y las líneas, pero mayores el metafile y el PDF. 96 es el DPI nativo de pantalla de FastReport; 200 (predeterminado) da resultados de calidad de impresión sin archivos enormes
ExportMode - elige exportación de metafile de página completa, exportación de canvas por objeto o exportación de objetos nativos para las clases de vista de FastReport mapeadas actualmente
AutoCreateURL - reenvía a THotPDF.AutoCreateURL para que el texto memo nativo pueda crear anotaciones URI para las URLs detectadas
FontEmbedding y NotEmbeddedFonts - trasladan la política habitual de embebido de fuentes de HotPDF al PDF del informe generado
ActivateProtection, UserPassword, OwnerPassword, CryptKeyLength, ProtectOptions y EncryptMetadata - trasladan los ajustes de seguridad por contraseña de HotPDF cuando se necesita una salida de informe cifrada
Flujo de trabajo 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
Los modos de página completa y de canvas por objeto preservan el contenido vectorial y rasterizado de la página renderizado por el motor de layout estándar de FastReport. El modo de objetos nativos actualmente preserva el texto memo soportado como texto PDF con fondo, alineación horizontal y vertical y estilos de marco; las vistas de imagen como image XObjects; las formas simples como geometría PDF; las líneas como strokes; y las URLs de las vistas como anotaciones de enlace URI. Los metadatos a nivel de documento se preservan en todos los modos
Limitaciones
Las funciones PDF específicas de FastReport que requieren un mapeo estructural adicional (campos AcroForm, destinos con nombre y esquemas del documento) no se propagan con este adaptador. Las propiedades de las puertas PDF/A y PDF/X se transfieren a HotPDF, pero los recursos específicos de cada estándar, como los perfiles OutputIntent, siguen siendo responsabilidad de quien llama
Nota de empaquetado
El adaptador se distribuye como un add-on opcional en lugar de ser una dependencia de los paquetes principales HotPDF*.dpk, de modo que los proyectos sin FastReport no arrastran unidades de FastReport
Ver también: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, Soporte mejorado de EMF/WMF
|