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 Form XObject 匯入