受约束的流式布局
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;
KeepWithNext在某段落会占用本应保留给后续内容的最后一行时,移动该段落MinOrphanLines防止在页面底部留下过少的起始行MinWidowLines在下一页仅会保留过少的结束行时,提前进行换页- 自动续排保留源页面的宽度、高度、字体、边距和段落设置
- 当
ParaAutoAddPage为 false 时,溢出会在当前页面停止并产生一个ldkOverflow诊断
布局诊断
THPDFLayoutDiagnostic 记录每一条保留决策的 THPDFLayoutDiagnosticKind、源页面和相关页面索引、受影响的矩形、行数以及英文原因
THPDFLayoutDiagnosticArray 由 GetLayoutDiagnostics 返回,而 GetLayoutDiagnostic 支持在不分配副本的情况下进行索引访问
LayoutDiagnosticLimit 限制保留的记录数,LayoutDiagnosticDroppedCount 报告在该限制之后被丢弃的决策
ldkAutomaticPageBreak报告一次普通的续排ldkKeepWithNext、ldkOrphanControl和ldkWidowControl标识移动某次换页的约束ldkOverflow标识因禁用自动分页而停止的内容ldkImmediateFlush标识被移动到文件支持存储的已关闭页面
段落方向
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 和匹配的标准子类型