TfrxHotPDFExport

FastReport 4 / FastReport VCL 适配器

 

QuickReport adapter  ReportBuilder device  DevExpress adapter

FastReport 4 / FastReport VCL PDF 导出过滤器,使用 HotPDF 作为底层 PDF 后端,而不是 FastReport 自带的 PDF 写入器。适用于已经嵌入 HotPDF,并希望整个应用共用同一个 PDF 后端的项目

 

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;

 

说明

TfrxHotPDFExport 派生自 TfrxCustomExportFilter,因此无需改动 FastReport core 即可接入常规的 MyReport.Export(MyExportInstance) 工作流。该单元调用 RegisterComponents('FastReport 4.0 Export Filters', [TfrxHotPDFExport]),单元加入包后,过滤器就会出现在 IDE 组件面板上

 

ShowDialog 为 True 且未设置输出流时,导出会用保存对话框询问输出文件。DialogDefaultFileName 预填文件名(为空时依次取 FileName、Title、报表名),DialogFilter 设置文件类型列表(为空时为 PDF 文件和全部文件),DialogTitle 设置标题(为空时为 Export to PDF)。它们对静默导出没有影响

 

该适配器可通过三种模式导出:

 

1. Start creates a fresh THotPDF instance and sets the document metadata (Title / Author / Subject / Keywords / PDFVersion / Compression).

2. StartPage sizes the new HotPDF page in points to match the FastReport report page's millimeter dimensions.

3. ExportObject按 FastReport 报表页面的毫米尺寸换算成点数,设置新 HotPDF 页面的大小

4.hemPageMetafile 下通过 Report.PreviewPages.DrawPage 将准备好的 FastReport 页面渲染到 TMetafile;在 hemObjectCanvas

5. hemObjectCanvas 让 FastReport 把每个准备好的视图先画到中间页面图元文件上,HotPDF 再导入该页

6.ShowDialog把受支持的已准备视图直接映射为 HotPDF 页面调用,可得到可选择文本的 memo(含背景、对齐、裁剪、字符间距和边框样式)、光栅图片 image XObject、简单形状几何、线条描边和视图 URL 标注

7.True 且未提供 Stream并在需要时把临时 PDF 复制到调用方提供的 Stream

 

属性

Compressed - 是否启用 HotPDF 流压缩(默认 True)。诊断用 PDF 可设为 False(文件约大 5 倍)

Title / Author / Subject / Keywords - 文档元数据。Title 为空时,适配器回退到 Report.Name,保证 PDF 始终有非空标题

PageRange - 可选的从 1 开始的页面过滤器,语法与 HotPDF 页面操作相同,如 1、1,3-5,空字符串表示所有页面

PDFVersion - 文档应采用的 PDF 规范级别。默认为 pdf17

PDFACompliance 与 PDFXCompliance - 把 HotPDF 的标准合规门控传递到生成的报表 PDF。在依赖最终合规声明之前,调用方仍需按常规 HotPDF 工作流准备好所需的 ICC profile、OutputIntent、tagging 或印前资产

CompressionLevel - FlateDecode level. Defaults to clDefault

RenderDPI - 通过 TMetafileCanvas 光栅化 FastReport 页面时使用的像素密度。值越高,文本和线条越清晰,但 metafile 和 PDF 也越大。96 是 FastReport 原生的屏幕 DPI;默认的 200 能在文件不至于过大的前提下获得印刷级质量

hemPageMetafile- 为当前映射的 FastReport 视图类选择整页图元文件导出、逐对象 canvas 导出或原生对象导出

ShowDialog 为 True让原生 memo 文本为检测到的 URL 创建 URI 标注

Stream 导出时生效;静默导出继续直接使用 FileName- 把常规的 HotPDF 字体嵌入策略传递到生成的报表 PDF

ActivateProtection、UserPassword、OwnerPassword、CryptKeyLength、ProtectOptions 和 EncryptMetadata - 需要加密报表输出时,转发 HotPDF 的口令安全设置

 

典型工作流

 

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.DialogDefaultFileName := 'Report.pdf';

  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;

 

保留的能力

图元文件模式保留 FastReport 标准布局引擎渲染的矢量和光栅页面内容,包括文本、线条、矩形、填充和位图。GDI 解析后的文本字符串也会保留,HotPDF 会通过常规字体子集路径嵌入 Windows 解析出的字体。文档级元数据也会保留。Native object 模式覆盖 memo 文本、矩形、圆角矩形、椭圆、三角形、菱形、对角线和 line view,使常见报表页眉、分隔线和标注框可保持为 PDF 原生内容

 

限制

需要额外结构映射的 FastReport 专用 PDF 功能(AcroForm 字段、命名目标和文档大纲)不会由该适配器传递。PDF/A 和 PDF/X 门控属性会转发给 HotPDF,但 OutputIntent profile 等标准专用资产仍由调用方负责

 

打包说明

该适配器作为可选附加组件发布,而不是主HotPDF*.dpk包的依赖,未使用 FastReport 的项目也就不会引入 FastReport 单元

 

另请参阅: TQRHotPDFExportFilter, TppHotPDFDevice, dxHotPDFExportReportLink, THPDFPage.ShowMetafile, 增强型 EMF/WMF 支持