Importazione con paginazione da RichEdit e RTF

THotPDF.ImportRTF carica RTF in un RichEdit Windows e THotPDF.ImportRichEdit impagina un controllo esistente in pagine PDF

Modello di rendering

La paginazione usa EM_FORMATRANGE con un rettangolo di pagina limitato ed emette ogni pagina attraverso un enhanced metafile

Testo, cambi di font, formattazione dei paragrafi, righe vettoriali e altre operazioni GDI restano operatori PDF di testo o vettoriali quando le pipeline RichEdit ed EMF li espongono così

I dati pict RTF e le presentazioni OLE statiche supportate dal RichEdit viaggiano sullo stesso percorso EMF, quindi non serve rasterizzazione dell'intera pagina

Threading e ciclo di vita

Sicurezza e budget

THPDFRTFImportOptions.Default limita l'input a 16 MiB, il testo a 4.000.000 di caratteri, l'output a 1.000 pagine e i dati EMF accumulati a 256 MiB

L'OLE incorporato è disabilitato per default e richiede AllowOLE=True; abilitarlo andrebbe limitato a RTF fidati perché il RichEdit Windows possiede la superficie dei gestori OLE installati

CancellationToken viene controllato tra le pagine e restituisce risCancelled senza renderizzare pagine aggiuntive

Report dei risultati

THPDFRTFImportStatistics riporta byte di input, intervallo di caratteri, pagine renderizzate e aggiunte, byte di metafile accumulati, presenza OLE, troncamento e uno THPDFRTFImportStatus stabile

Esaurimento del budget, geometria di pagina non valida, chiamate dal thread sbagliato, paginazione senza progresso e fallimenti di rendering restituiscono False con uno stato specifico

Esempio

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

Vedi anche: THotPDF.ImportRTF, THotPDF.ImportRichEdit, Importazione di SVG Form XObject