Importación paginada de RichEdit y RTF

THotPDF.ImportRTF carga RTF en un RichEdit de Windows y THotPDF.ImportRichEdit pagina un control existente en páginas PDF

Modelo de renderizado

La paginación usa EM_FORMATRANGE con un rectángulo de página acotado y emite cada página a través de un enhanced metafile

El texto, los cambios de fuente, el formato de párrafo, las reglas vectoriales y las demás operaciones GDI se mantienen como texto u operadores vectoriales de PDF siempre que los pipelines de RichEdit y EMF los expongan así

Los datos pict de RTF y las presentaciones OLE estáticas soportadas por RichEdit viajan por la misma ruta EMF, así que no se requiere rasterización de la página completa

Threading y ciclo de vida

Seguridad y presupuestos

THPDFRTFImportOptions.Default limita la entrada a 16 MiB, el texto a 4,000,000 de caracteres, la salida a 1,000 páginas y los datos EMF acumulados a 256 MiB

El OLE incrustado está deshabilitado por defecto y requiere AllowOLE=True; activarlo debería limitarse a RTF de confianza porque Windows RichEdit expone la superficie de handlers OLE instalados

CancellationToken se revisa entre páginas y devuelve risCancelled sin renderizar páginas adicionales

Reporte de resultados

THPDFRTFImportStatistics reporta los bytes de entrada, el rango de caracteres, las páginas renderizadas y añadidas, los bytes de metafile acumulados, la presencia de OLE, el truncamiento y un THPDFRTFImportStatus estable

El agotamiento del presupuesto, la geometría de página inválida, las llamadas desde un thread equivocado, la paginación sin progreso y los fallos de renderizado devuelven False con un estado específico

Ejemplo

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