Importación de paginación RichEdit y RTF

THotPDF.ImportRTF carga RTF en 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 mediante un metarchivo mejorado

El texto, los cambios de fuente, el formato de párrafo, las reglas vectoriales y otras operaciones GDI siguen siendo operadores de texto o vectoriales PDF siempre que las canalizaciones RichEdit y EMF los expongan de esa manera

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

Subprocesos 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 incorporado está deshabilitado de forma predeterminada y requiere AllowOLE=True; habilitarlo debe limitarse a RTF de confianza porque RichEdit de Windows es propietario de la superficie de controladores OLE instalada

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

Informe de resultados

THPDFRTFImportStatistics informa de los bytes de entrada, el intervalo de caracteres, las páginas renderizadas y añadidas, los bytes de metarchivo acumulados, la presencia de OLE, la truncación y un THPDFRTFImportStatus estable

El agotamiento del presupuesto, la geometría de página no válida, las llamadas desde el subproceso 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)]
  );

Véase también: THotPDF.ImportRTF, THotPDF.ImportRichEdit, Importación de Form XObject SVG