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