RichEdit- und RTF-Umbruch-Import

THotPDF.ImportRTF lädt RTF in Windows RichEdit und THotPDF.ImportRichEdit paginiert ein vorhandenes Steuerelement in PDF-Seiten

Darstellungsmodell

Der Umbruch verwendet EM_FORMATRANGE mit einem begrenzten Seitenrechteck und emittiert jede Seite über eine erweiterte Metadatei

Text, Schriftsänderungen, Absatzformatierung, vektorielle Linien und andere GDI-Operationen bleiben PDF-Text- oder Vektoroperatoren, wann immer die RichEdit- und EMF-Pipelines sie auf diese Weise offenlegen

RTF-pict-Daten und RichEdit-unterstützte statische OLE-Präsentationen werden über denselben EMF-Pfad übertragen, sodass keine Rasterisierung ganzer Seiten erforderlich ist

Threading und Lebenszyklus

Sicherheit und Budgets

THPDFRTFImportOptions.Default begrenzt die Eingabe auf 16 MiB, den Text auf 4.000.000 Zeichen, die Ausgabe auf 1.000 Seiten und die akkumulierten EMF-Daten auf 256 MiB

Eingebettetes OLE ist standardmäßig deaktiviert und erfordert AllowOLE=True; die Aktivierung sollte auf vertrauenswürdiges RTF beschränkt werden, da Windows RichEdit die installierte OLE-Handler-Oberfläche besitzt

CancellationToken wird zwischen Seiten geprüft und liefert risCancelled, ohne weitere Seiten zu rendern

Ergebnisbericht

THPDFRTFImportStatistics meldet Eingabebytes, Zeichenbereich, gerenderte und hinzugefügte Seiten, akkumulierte Metadatei-Bytes, OLE-Präsenz, Abschneidung und einen stabilen THPDFRTFImportStatus

Budgeterschöpfung, ungültige Seitengeometrie, Aufrufe im falschen Thread, Umbruch ohne Fortschritt und Darstellungsfehler liefern False mit einem spezifischen Status

Beispiel

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

Siehe auch: THotPDF.ImportRTF, THotPDF.ImportRichEdit, SVG-Form-XObject-Import