THotPDF.PreviewLoadedPageTextReplacement-methode

Bereidt vervangingstekst voor met ingebedde Unicode-fonts, meet elke match en geeft een auditable plan terug zonder het geladen document te wijzigen

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

Opties en resultaten

THPDFLoadedTextReplacementOptions.Default gebruikt Arial, de oorspronkelijke fontgrootte van de match, de gemeten breedte en een hoogte van 1.25 keer die grootte, met atomische verwerping ingeschakeld

Appearance kiest font, stijl, kleur, uitlijning en padding; UseMatchFontSize=False gebruikt de opgevraagde grootte, terwijl positieve BoxWidth en BoxHeight een expliciete terugloop-box bieden

Appearance.OverflowPolicy kiest ltopReject, ltopClip of ltopShrinkToFit; clipping houdt alleen de tekst over die de producer passend maakte, en shrink-to-fit stopt bij MinFontSize

THPDFLoadedTextReplacementPlan bevat het verzoek, de opties, de bron-vingerafdruk, de aantallen en de THPDFLoadedTextReplacementResults-array

Elke THPDFLoadedTextReplacementResult rapporteert glyph-indexen, oorspronkelijke positie, boxafmetingen, effectieve fontgrootte en een THPDFLoadedTextReplacementStatus-waarde: ltrsReady, ltrsApplied, ltrsRejected of ltrsRolledBack, met een reden bij verwerping of rollback

MaxMatches, MaxGlyphs, MaxContentTokens, MaxContentBytes, MaxGeneratedBytes en de appearance-tekstlimiet begrenzen het parsen van de bron, de uitvoer en de gekopieerde fontresources

Geometrie en atomiciteit

De gegenereerde vervanging gebruikt de font-fallbackketens van het document, ShapingFeatures, de auto-shaping-schakelaars per script en de GSUB-script- en taalselecties; stel deze in vóór het previewen en houd dezelfde instellingen aan bij het toepassen van het plan

Elke vervanging-appearance beperkt onderscheidende shaping-fontselecties tot 256 en cumulatieve ruwe fontdata tot 64 MiB, bovenop de parse- en gegenereerde-uitvoerbudgetten van het verzoek

Vervanging wisselt van font binnen de oorspronkelijke tekststroom, houdt de omliggende tekst doorzoekbaar en herstelt de oorspronkelijke pen- en lijnmatrices zodat volgende glyphs en lijnovergangen hun positie houden

Directe paginatekst met horizontale, niet-singuliere geometrie wordt ondersteund, inclusief paginatransformaties, tekstschaling, rise, TJ, single/double-quote-operators en matches die aangrenzende operanden op dezelfde baseline overspannen

Matches over baselines heen, verticaal schrijven, singuliere transformaties, ongebalanceerde inhoud, ontbrekende glyphs en documenten met handtekeningvelden worden geweigerd; tekst in Form XObjects valt buiten de matchscope van deze API

Met Atomic=True rolt elke geweigerde match alle klaarstaande matches terug; met Atomic=False kunnen klaarstaande matches worden toegepast terwijl geweigerde matches onveranderd blijven, en het booleaanse resultaat blijft False zodra enige match is geweigerd

Preview gebruikt een geneste graph-transactie en rolt die terug, waarbij een bestaande transactie van de aanroeper behouden blijft; documentcaches kunnen ongeldig worden en de documentwijzigingsnotificatie kan afvuren, ook al wordt de inhoud hersteld

Commit

Geef het plan door aan ApplyLoadedPageTextReplacement om de content- en glyph-metric-vingerafdruk opnieuw te valideren voordat het verzoek in een graph-transactie wordt toegepast

Bereken een plan opnieuw na inhoudswijzigingen; een verouderd plan geeft EInvalidOpException zonder zijn vervangingen toe te passen

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