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