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
- Rufen Sie beide APIs nur im GUI-Hauptthread des Prozesses auf
- Rufen Sie
BeginDocvor dem Import auf, damit eine aktuelle Seite existiert UseCurrentPagesteuert, ob die erste importierte Seite die aktuelle Seite wiederverwendet oder eine neue Seite anhängt- Die RTF-Streamposition wird nach einem begrenzten Lesen wiederhergestellt
- Der RichEdit-Formatcache wird nach Erfolg, Abbruch oder Fehler freigegeben
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