RichEdit and RTF Pagination Import

THotPDF.ImportRTF načte RTF do ovladače RichEdit systému Windows a THotPDF.ImportRichEdit rozdělí existující ovladač na stránky PDF

Rendering model

Paginalizace používá EM_FORMATRANGE s ohraničeným obdélníkem stránky a emituje každou stránku prostřednictvím vylepšeného metafile

Text, změny fontů, formátování odstavců, vektorové čáry a další operace GDI zůstávají operátory textu nebo vektorů PDF vždy, když je pipeline RichEdit a EMF takto vystaví

Data RTF pict a statické prezentace OLE podporované ovladačem RichEdit jsou přenášeny stejnou cestou EMF, takže není vyžadována rastralizace celé stránky

Threading and lifecycle

Security and budgets

THPDFRTFImportOptions.Default omezuje vstup na 16 MiB, text na 4 000 000 znaků, výstup na 1 000 stránek a nahromaděná data EMF na 256 MiB

Vložené OLE je ve výchozím stavu zakázáno a vyžaduje AllowOLE=True; jeho povolení by mělo být omezeno na důvěryhodné RTF, protože ovladač RichEdit systému Windows vlastní nainstalovanou plochu handlů OLE

CancellationToken se kontroluje mezi stránkami a vrací risCancelled bez vykreslení dalších stránek

Result reporting

THPDFRTFImportStatistics hlásí vstupní bajty, rozsah znaků, vykreslené a přidané stránky, nahromaděné bajty metafile, přítomnost OLE, zkrácení a stabilní THPDFRTFImportStatus

Vyčerpání rozpočtu, neplatná geometrie stránky, volání z nesprávného vlákna, paginalizace bez pokroku a selhání vykreslování vracejí False se specifickým stavem

Example

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

See also: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG Form XObject Import