THotPDF.PreviewLoadedPageTextReplacement Method
Bereitet Ersetzungstext mit eingebetteten Unicode-Schriften vor, vermisst jeden Treffer und liefert einen prüfbaren Plan, ohne das geladene Dokument zu verändern
function PreviewLoadedPageTextReplacement(PageIndex: Integer;
const Needle, Replacement: UnicodeString; MatchCase: Boolean;
const Options: THPDFLoadedTextReplacementOptions;
out Plan: THPDFLoadedTextReplacementPlan): Boolean;
Optionen und Ergebnisse
THPDFLoadedTextReplacementOptions.Default verwendet Arial, die ursprüngliche Schriftgröße des Treffers, seine gemessene Breite und eine Höhe von 1,25-facher Größe, mit aktivierter atomarer Rückweisung
Appearance wählt Schrift, Stil, Farbe, Ausrichtung und Auffüllung; UseMatchFontSize=False nutzt die angeforderte Größe, während positive BoxWidth- und BoxHeight-Werte ein explizites Umbruchrechteck liefern
Appearance.OverflowPolicy wählt ltopReject, ltopClip oder ltopShrinkToFit; Clipping behält nur den passenden Producer-Text, und Shrink-to-Fit endet bei MinFontSize
THPDFLoadedTextReplacementPlan trägt die Anfrage, die Optionen, den Quell-Fingerprint, Zähler und das THPDFLoadedTextReplacementResults-Array
Jedes THPDFLoadedTextReplacementResult meldet Glyphenindizes, die ursprüngliche Position, Box-Abmessungen, die effektive Schriftgröße und einen THPDFLoadedTextReplacementStatus-Wert: ltrsReady, ltrsApplied, ltrsRejected oder ltrsRolledBack, jeweils mit einem Grund für Rückweisung oder Rollback
MaxMatches, MaxGlyphs, MaxContentTokens, MaxContentBytes, MaxGeneratedBytes und das Appearance-Textlimit begrenzen Quell-Parsing, Ausgabe und kopierte Schriftressourcen
Geometrie und Atomarität
Der generierte Ersatz nutzt die Font-Fallback-Ketten des Dokuments, ShapingFeatures, die Auto-Shaping-Schalter für Skripte sowie die GSUB-Skript- und Sprachauswahlen; das vor dem Preview konfigurieren und beim Anwenden des Plans dieselben Einstellungen beibehalten
Jede Ersetzungs-Darstellung begrenzt unterschiedliche Shaping-Schriftauswahlen auf 256 und kumulative rohe Schriftdaten auf 64 MiB, zusätzlich zu den Parsing- und Ausgabe-Budgets der Anfrage
Die Ersetzung wechselt die Schrift innerhalb des ursprünglichen Textstroms, hält den umgebenden Text durchsuchbar und stellt die ursprünglichen Pen- und Line-Matrizen wieder her, sodass folgende Glyphen und Zeilenübergänge ihre Positionen behalten
Unterstützt wird direkter Seitentext mit horizontaler, nichtsingulärer Geometrie, einschließlich Seiten-Transformationen, Textskalierung, Rise, TJ, Einzel-/Doppelanführungs-Operatoren und Treffern über benachbarte Operanden auf derselben Baseline
Treffer über mehrere Baselines, vertikales Schreiben, singuläre Transformationen, unausgeglichener Inhalt, fehlende Glyphen und Dokumente mit Signaturfeldern werden zurückgewiesen; Text in Form-XObjects liegt außerhalb des Trefferrahmens dieser API
Mit Atomic=True rollt jeder zurückgewiesene Treffer alle bereiten Treffer zurück; mit Atomic=False können bereite Treffer angewandt werden, während zurückgewiesene unverändert bleiben, und das boolesche Ergebnis bleibt False, sobald ein Treffer zurückgewiesen wurde
Das Preview nutzt eine verschachtelte Graph-Transaktion und rollt sie zurück, wobei eine vorhandene Transaktion des Aufrufers erhalten bleibt; es kann Dokument-Caches invalidieren und die Dokumentänderungs-Benachrichtigung auslösen, selbst wenn der Inhalt wiederhergestellt wird
Commit
Den Plan an ApplyLoadedPageTextReplacement übergeben, um seinen Inhalt und den Glyphenmetrik-Fingerprint vor dem Anwenden der Anfrage in einer Graph-Transaktion erneut zu prüfen
Nach Inhaltsänderungen den Plan neu berechnen; ein veralteter Plan löst EInvalidOpException aus, ohne seine Ersetzungen anzuwenden
Options := THPDFLoadedTextReplacementOptions.Default;
Options.Appearance.OverflowPolicy := ltopShrinkToFit;
if PDF.PreviewLoadedPageTextReplacement(0, 'Original', NewText,
True, Options, Plan) then
if PDF.ApplyLoadedPageTextReplacement(Plan, Applied) then
PDF.SaveLoadedDocument(TargetPath);