THotPDF.PreviewLoadedPageTextReplacement Method

Przygotowuje tekst zamienny z osadzonymi fontami Unicode, mierzy każde dopasowanie i zwraca plan dający się poddać audytowi, nie zmieniając załadowanego dokumentu

function PreviewLoadedPageTextReplacement(PageIndex: Integer;
  const Needle, Replacement: UnicodeString; MatchCase: Boolean;
  const Options: THPDFLoadedTextReplacementOptions;
  out Plan: THPDFLoadedTextReplacementPlan): Boolean;

Opcje i wyniki

THPDFLoadedTextReplacementOptions.Default używa Arial, pierwotnego rozmiaru fontu dopasowania, jego zmierzonej szerokości i wysokości równej 1.25 tego rozmiaru, przy włączonym odrzucaniu atomowym

Appearance wybiera font, styl, kolor, wyrównanie i padding; UseMatchFontSize=False używa żądanego rozmiaru, a dodatnie BoxWidth i BoxHeight dają jawne pudełko łamania tekstu

Appearance.OverflowPolicy wybiera ltopReject, ltopClip albo ltopShrinkToFit; przycinanie zostawia tylko ten tekst producenta, który się mieści, a shrink-to-fit zatrzymuje się na MinFontSize

THPDFLoadedTextReplacementPlan przenosi żądanie, opcje, odcisk źródła, liczniki i tablicę THPDFLoadedTextReplacementResults

Każdy THPDFLoadedTextReplacementResult raportuje indeksy glifów, pierwotną pozycję, wymiary pudełka, efektywny rozmiar fontu i wartość THPDFLoadedTextReplacementStatus: ltrsReady, ltrsApplied, ltrsRejected albo ltrsRolledBack, wraz z powodem odrzucenia lub wycofania

MaxMatches, MaxGlyphs, MaxContentTokens, MaxContentBytes, MaxGeneratedBytes i limit tekstu wyglądu ograniczają parsowanie źródła, wyjście oraz kopiowane zasoby fontów

Geometria i atomowość

Wygenerowana zamiana korzysta z łańcuchów fallback fontów dokumentu, ShapingFeatures, przełączników auto-shaping skryptów i wyborów skryptu oraz języka GSUB; skonfiguruj je przed podglądem i zachowaj te same ustawienia przy stosowaniu planu

Każdy wygląd zamiany ogranicza odrębne wybory fontów shaping do 256, a skumulowane surowe dane fontów do 64 MiB — niezależnie od budżetów parsowania żądania i generowanego wyjścia

Zamiana przełącza fonty w obrębie pierwotnego strumienia tekstu, utrzymuje przeszukiwalność otaczającego tekstu i odtwarza pierwotne macierze pióra oraz linii, więc kolejne glify i przejścia między liniami zachowują swoje pozycje

Obsługiwany jest bezpośredni tekst strony o poziomej, nieosobliwej geometrii, w tym przekształcenia strony, skalowanie tekstu, rise, operatory TJ oraz pojedynczego i podwójnego cudzysłowu, a także dopasowania przechodzące przez sąsiednie operandy na tej samej linii bazowej

Dopasowania przekraczające linie bazowe, pismo pionowe, przekształcenia osobliwe, niezbalansowana zawartość, brakujące glify i dokumenty zawierające pola podpisów są odrzucane; tekst wewnątrz Form XObjects leży poza zakresem dopasowań tego API

Przy Atomic=True każde odrzucone dopasowanie wycofuje wszystkie gotowe dopasowania; przy Atomic=False gotowe dopasowania mogą zostać zastosowane, odrzucone pozostają bez zmian, a wynik boolowski pozostaje False, gdy cokolwiek odrzucono

Podgląd używa i wycofuje zagnieżdżoną transakcję grafu, zachowując istniejącą transakcję wywołującego; potrafi unieważnić cache dokumentu i wywołać powiadomienie o modyfikacji dokumentu, mimo że zawartość zostaje odtworzona

Zatwierdzanie

Przekaż plan do ApplyLoadedPageTextReplacement, który ponownie zwaliduje odcisk zawartości i metryk glifów, zanim zastosuje żądanie w transakcji grafu

Po zmianie zawartości wylicz plan od nowa; nieaktualny plan podnosi EInvalidOpException, nie stosując swoich zamian

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