RichEdit と RTF ページ分割インポート

THotPDF.ImportRTF は RTF を Windows RichEdit にロードし、THotPDF.ImportRichEdit は既存のコントロールを PDF ページにページ分割します

レンダリングモデル

ページ分割は、境界付きページ矩形を持つ EM_FORMATRANGE を使用し、拡張メタファイルを通じて各ページを出力します

テキスト、フォント変更、段落書式、ベクタールール、その他の GDI 操作は、RichEdit と EMF パイプラインがそのように公開する場合は常に PDF テキストまたはベクター演算子のままです

RTF pict データと RichEdit でサポートされる静的 OLE プレゼンテーションは同じ EMF パスで運ばれるため、ページ全体のラスタライズは不要です

スレッドとライフサイクル

セキュリティと予算

THPDFRTFImportOptions.Default は、入力を 16 MiB、テキストを 4,000,000 文字、出力を 1,000 ページ、累積 EMF データを 256 MiB に制限します

埋め込み OLE はデフォルトで無効であり、AllowOLE=True を必要とします。Windows RichEdit がインストールされた OLE ハンドラーサーフェスを所有するため、それを有効にすることは信頼された RTF に限定する必要があります

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 インポート