受约束的流式布局

HotPDF 可以将每一页已完成的页面暂存到文件支持的存储中,应用段落分页约束,公开有界的布局诊断,标记语义段落和分页工件,并在输出混合方向文本之前解析段落基础方向

即时页面刷写

对于页数事先未知的报告,在 BeginDoc 之前设置 ImmediateFlushLayout

当一页关闭时,其最终压缩或未压缩的内容流会从内存移动到一个自有的临时文件流,而 PDF 对象仍然可用于正常的交叉引用和资源收尾

ImmediateFlushedPageCount 和 ImmediateFlushedBytes 报告已暂存内容的大小,当拥有这些内容的流被释放时,临时文件会被删除

段落分页

ParagraphIndex := PDF.CreateParagraph(0, jtLeft, 36, 36, 36, 36);
PDF.ConfigureParagraphPagination(ParagraphIndex, True, 2, 2);
PDF.ConfigureParagraphDirection(ParagraphIndex, pdAuto);
PDF.BeginParagraph(ParagraphIndex);
PDF.CurrentParagraph.ShowUnicodeText(BodyText);
PDF.EndParagraph;

布局诊断

THPDFLayoutDiagnostic 记录每一条保留决策的 THPDFLayoutDiagnosticKind、源页面和相关页面索引、受影响的矩形、行数以及英文原因

THPDFLayoutDiagnosticArray 由 GetLayoutDiagnostics 返回,而 GetLayoutDiagnostic 支持在不分配副本的情况下进行索引访问

LayoutDiagnosticLimit 限制保留的记录数,LayoutDiagnosticDroppedCount 报告在该限制之后被丢弃的决策

段落方向

THPDFParagraphDirection 提供 pdAuto、pdLeftToRight 和 pdRightToLeft

DetectParagraphDirection 在 BMP 和辅助平面 RTL 脚本之间应用首强字符解析,因此中性的前缀和次要方向走向不会选择错误的基础方向

使用 ConfigureParagraphDirection 设置持久化的段落方向,或使用 THPDFPara.Direction 属性设置当前活动段落的方向

PDF/UA 段落语义

Root := PDF.AddStructureElement('Document', nil);
Paragraph := PDF.BeginTaggedParagraph(Root, 'en-US', 'Accessible text');
PDF.CurrentPage.TextOut(36, 72, 0, WideString('Accessible text'));
PDF.EndTaggedParagraph;

PDF.BeginPaginationArtifact(pasHeader);
PDF.CurrentPage.TextOut(36, 20, 0, WideString('Running header'));
PDF.EndPaginationArtifact;

BeginTaggedParagraph 输出一个标准的 /P 标记内容序列,带有已分配的 MCID、页面父树接线,以及可选的 /Lang 和 /ActualText 值

THPDFPaginationArtifactSubtype 提供 pasHeader、pasFooter、pasWatermark 和 pasPageNumber,以 /Artifact 内容形式输出,带有 /Type /Pagination 和匹配的标准子类型

相关 API