TDBGrid 导出支持
dbGridHotPDFExport 附加单元(Lib\addons\DBGrid)把 TDBGrid dataset 的可见列和所有行写成一个 PDF 表格。它自己创建、填充并保存 THotPDF 文档,因此网格是它唯一的输入
入口
DBGridHotPDFExportToFile(AGrid, AOutputFileName[, AOptions])把 PDF 写入文件DBGridHotPDFExportToStream(AGrid, AOutputStream[, AOptions])把 PDF 写入流,中间经%TEMP%下的临时文件DBGridHotPDFDefaultOptions返回带默认值的TDBGridHotPDFExportOptionsrecord:A4(point,595 x 842)、36 point 边距、22 point 行高、24 point 表头行、Arial 9 加 14 point 标题、clBtnFace表头和$00F5F5F5隔行底色TDBGridHotPDFExport是同一个导出的组件形态,位于 HotPDF 调色板页(由dbGridHotPDFDesign注册):设置Grid和OutputFileName,然后调用ExportToFile或ExportToStream。每个 option 字段都是 published 属性;ResetOptions恢复默认值
导出内容
- 网格中带字段的可见列按网格顺序导出并带列标题;网格没有列时导出 dataset 的可见字段。列宽在可打印宽度内保持网格的比例
- 从
First到Eof的每条记录都用各字段的DisplayText;放不下的单元格文本会被截断并以...结尾 - 所有文本都用
FontName,它必须覆盖数据的字形:默认的 Arial 会把中文、日文或韩文显示成空心方框,这类数据请设置 Microsoft YaHei 之类的 CJK 字体 - 下一行会越过下边距时开新页,表头行在每页重复。标题(
Title,否则用网格的Name)只在第一页绘制一次,且IncludeTitle为 True Title、Author、Subject、Keywords、PDFVersion(默认 pdf17)、PDFACompliance、PDFXCompliance和Compression会传给文档
Dataset 状态
- 导出在遍历 dataset 期间调用
DisableControls,结束后调用EnableControls,绑定控件不会逐行重绘 - 当前记录先保存为书签,最后恢复,导出失败时同样恢复
- 网格为 nil、文件名为空、网格没有 dataset、dataset 未激活或网格没有可见数据列时,抛出异常而不是返回 False
示例
uses
dbGridHotPDFExport;
var
Options: TDBGridHotPDFExportOptions;
begin
Options:= DBGridHotPDFDefaultOptions;
Options.Title:= 'Customers';
Options.PageWidth:= 842; // A4 landscape
Options.PageHeight:= 595;
DBGridHotPDFExportToFile(DBGrid1, 'Customers.pdf', Options);
end;