SearchAndReplaceTextInContentEx
Extraction, Unicode, édition de contenu
Description
Remplace chaque occurrence non chevauchante de la requête dans le texte de page pris en charge, en utilisant des plages d’octets source exactes et un mappage de police vérifié
La méthode préserve le texte environnant, les ajustements numériques TJ existants et l’ancre du texte suivant d’origine ; un remplacement vide ne supprime que les caractères correspondants
Toutes les correspondances sélectionnées sont planifiées et réécrites avant l’inscription du contenu de page ; un texte non représentable, des mappages de polices incomplets ou un emplacement source non pris en charge rejettent la requête sans remplacer aucun texte de page sélectionné
Syntaxe
Delphi
Function TPDFlib.SearchAndReplaceTextInContentEx(Const Query, Replacement: WideString; Options: TPDFlibSearchOptions; Const PageRange: WideString; ReplacementFontID: Integer): Integer;DLL
Function DLSearchAndReplaceTextInContentEx(InstanceID: Integer; Query: PWideChar; Replacement: PWideChar; Options: Integer; PageRange: PWideChar; ReplacementFontID: Integer): Integer; Stdcall;
Function DLSearchAndReplaceTextInContentExA(InstanceID: Integer; Query: PAnsiChar; Replacement: PAnsiChar; Options: Integer; PageRange: PAnsiChar; ReplacementFontID: Integer): Integer; Stdcall;ActiveX
Function PDFlib::SearchAndReplaceTextInContentEx(Query: WideString; Replacement: WideString; Options: Integer; PageRange: WideString; ReplacementFontID: Integer): Integer;Paramètres
ReplacementFontID 0 utilise la police d’origine ; une valeur positive doit identifier une police du document sélectionné dotée d’un encodage vérifié complet
Une police de remplacement n’est sélectionnée que pour les séquences remplacées et la police d’origine est restaurée avant les suffixes intacts ; cette méthode ne choisit ni n’installe automatiquement une police
Les Options DLL et ActiveX utilisent les drapeaux de recherche comme bits 1, 2, 4, 8, 16, 32, 64 et 128 dans l’ordre de l’enum ; soAcrossLines est le bit 16 et n’est pas pris en charge ici ; les bits inconnus sont rejetés par ces façades
Les chaînes d’entrée DLL A utilisent la configuration de conversion ANSI vers large de l’instance ; utilisez le point d’entrée large pour passer de l’Unicode indépendamment de cette configuration
Valeurs de retour
Renvoie le nombre de correspondances remplacées, ou 0 en l’absence de correspondance ou pour une requête rejetée ; consultez GetLastUnicodeReplacementDiagnostics pour distinguer ces issues
LastErrorCode 535 signale une entrée invalide ou des limites de capture ; 537 signale une édition ou un encodage non pris en charge ; une recherche valide sans correspondance signale completed avec replacedHits 0
Remarques
Les mappages proviennent d’une CMap ToUnicode pleinement prise en charge ou d’un encodage de police simple vérifié, y compris les noms de glyphes Differences pris en charge ; aucune conversion de page de codes système ni encodage de glyphes deviné n’est utilisé
Les polices simples doivent fournir des Widths, FirstChar et LastChar PDF valides, ou utiliser un nom exact de police Type1 des quatorze standard sans Widths ; le repli sur les polices système et la correspondance approximative de noms n’autorisent pas une avance exacte
L’héritage UseCMap nommé, les mappages non résolus, les avances des polices Type3, l’écriture verticale, le texte de Form imbriqué, les caractères synthétiques, les remplacements ActualText, les chaînes transcodées, les correspondances entre calques et les clusters de ligatures partiels sont signalés comme non pris en charge
Un cluster de ligature complet peut être remplacé lorsque ses octets d’origine et son mappage Unicode sont vérifiés ; les préfixes et suffixes restent dans leur police d’origine
Les options de recherche conservent leur signification actuelle, y compris les contraintes de casse, de mot entier, de caractère générique, de diacritiques, d’équivalence canonique et de graphèmes ; soAcrossLines et les appels pendant une portée API ouverte sont rejetés
La planification prend en charge jusqu’à 4096 correspondances ; les instantanés source capturés sont limités à 64 Mio par flux et 512 Mio au total, avec 64 Mio d’enregistrements d’emplacements source capturés ; l’analyseur de mappage de polices applique en outre des limites bornées de jetons et d’espaces de codes, avec des totaux de transaction de 262144 mappages et 8 M d’unités UTF-16 cibles
Ces limites contraignent les données de capture et de planification conservées ; le chargement et le rendu de pages existants ont leurs propres allocations, elles ne garantissent donc pas un pic absolu d’utilisation mémoire
Les flux de contenu et dictionnaires de ressources partagés sont copiés pour les pages sélectionnées ; la sélection de document est restaurée et les listes de blocs de texte périmées doivent être extraites à nouveau après une édition réussie
Cette opération modifie le contenu actif des pages et n’est pas une API d’effacement sécurisé : les objets détachés ou les révisions incrémentales antérieures peuvent conserver les octets d’origine
Voir aussi
SearchAndReplaceTextInContent, SearchAndReplaceTextInContentEx, GetLastUnicodeReplacementDiagnostics, SearchText