受限制的串流版面配置
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 與對應的標準子類型發出