Nhập phân trang RichEdit và RTF

THotPDF.ImportRTF nạp RTF vào RichEdit của Windows và THotPDF.ImportRichEdit phân trang một control hiện có thành các trang PDF

Mô hình render

Phân trang dùng EM_FORMATRANGE với một hình chữ nhật trang có giới hạn và phát từng trang qua một enhanced metafile

Văn bản, thay đổi font, định dạng đoạn, quy tắc vector và các thao tác GDI khác vẫn là các toán tử văn bản hoặc vector PDF bất cứ khi nào các pipeline RichEdit và EMF phơi bày chúng theo cách đó

Dữ liệu pict RTF và các bản trình bày OLE tĩnh được RichEdit hỗ trợ được mang qua cùng đường EMF, nên không cần raster hóa toàn trang

Luồng và vòng đời

Bảo mật và ngân sách

THPDFRTFImportOptions.Default giới hạn đầu vào ở 16 MiB, văn bản ở 4.000.000 ký tự, đầu ra ở 1.000 trang và dữ liệu EMF tích lũy ở 256 MiB

OLE nhúng bị vô hiệu hóa theo mặc định và yêu cầu AllowOLE=True; bật nó nên được giới hạn ở RTF đáng tin cậy vì RichEdit của Windows sở hữu bề mặt handler OLE đã cài

CancellationToken được kiểm tra giữa các trang và trả về risCancelled mà không render thêm trang

Báo cáo kết quả

THPDFRTFImportStatistics báo cáo byte đầu vào, dải ký tự, số trang đã render và thêm, byte metafile tích lũy, sự hiện diện OLE, cắt ngắn và một THPDFRTFImportStatus ổn định

Cạn kiệt ngân sách, hình học trang không hợp lệ, gọi sai luồng, phân trang không tiến triển và lỗi render trả về False với một trạng thái cụ thể

Ví dụ

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)]
  );

Xem thêm: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG Form XObject Import