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