Імпорт сторінкування RichEdit і RTF

THotPDF.ImportRTF завантажує RTF у Windows RichEdit, а THotPDF.ImportRichEdit розбиває наявний елемент керування на сторінки PDF

Модель рендерингу

Сторінкування використовує EM_FORMATRANGE з обмеженим прямокутником сторінки та випромінює кожну сторінку через розширений метафайл

Текст, зміни шрифтів, форматування абзаців, векторні правила та інші операції GDI залишаються текстовими або векторними операторами PDF, коли конвеєри RichEdit та EMF надають їх таким чином

Дані pict RTF і статичні презентації OLE, підтримувані RichEdit, переносяться тим самим шляхом EMF, тому рівнеформатна растеризація сторінки не потрібна

Потоки та життєвий цикл

Безпека та бюджети

THPDFRTFImportOptions.Default обмежує введення до 16 МБ, текст до 4 000 000 символів, вивід до 1 000 сторінок та накопичені дані EMF до 256 МБ

Вбудований 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