RichEdit 与 RTF 分页导入

THotPDF.ImportRTF 将 RTF 加载到 Windows RichEdit 中,THotPDF.ImportRichEdit 将现有控件分页为 PDF 页面

渲染模型

分页使用 EM_FORMATRANGE 配合有界的页面矩形,并通过增强型图元文件发出每个页面

当 RichEdit 和 EMF 管线以这种方式公开时,文本、字体更改、段落格式、矢量规则和其他 GDI 操作保持为 PDF 文本或矢量运算符

RTF pict 数据和 RichEdit 支持的静态 OLE 呈现由同一 EMF 路径携带,因此不需要整页栅格化

线程与生命周期

安全与预算

THPDFRTFImportOptions.Default 将输入限制为 16 MiB,文本限制为 4,000,000 个字符,输出限制为 1,000 页,累计 EMF 数据限制为 256 MiB

嵌入式 OLE 默认禁用,需要 AllowOLE=True;启用它应仅限于受信任的 RTF,因为 Windows RichEdit 拥有已安装的 OLE 处理程序表面

CancellationToken 在页面之间检查,返回 risCancelled 而不渲染额外页面

结果报告

THPDFRTFImportStatistics 报告输入字节、字符范围、渲染和添加的页面、累计图元文件字节、OLE 存在、截断和稳定的 THPDFRTFImportStatus

预算耗尽、无效页面几何、错误线程调用、无进展分页和渲染失败返回 False 并带特定状态

示例

Options := THPDFRTFImportOptions.Default;
Options.PageWidth := 612;
Options.PageHeight := 792;
Options.MarginLeft := 54;
Options.MarginRight := 54;

Document.BeginDoc;
RTFStream.Position := 0;
if not Document.ImportRTF(RTFStream, Options, Statistics) then
  raise Exception.CreateFmt(
    'RTF import failed with status %d',
    [Ord(Statistics.Status)]
  );

另请参阅: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG 表单 XObject 导入