SearchAndReplaceTextInContentEx
Extracción, Unicode, edición de contenido
Descripción
Reemplaza cada ocurrencia no superpuesta de la consulta en el texto de página compatible, usando rangos de bytes de origen exactos y un mapeo de fuente verificado
El método conserva el texto circundante, los ajustes numéricos TJ existentes y el ancla del texto siguiente original; un reemplazo vacío elimina solo los caracteres coincidentes
Todas las coincidencias seleccionadas se planifican y reescriben antes de confirmar el contenido de la página; el texto no representable, los mapeos de fuente incompletos o una ubicación de origen no compatible rechazan la solicitud sin reemplazar ningún texto de página seleccionado
Sintaxis
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;Parámetros
ReplacementFontID 0 usa la fuente original; un valor positivo debe identificar una fuente del documento seleccionado con una codificación completa verificada
Una fuente de reemplazo se selecciona solo para los tramos de reemplazo y la fuente original se restaura antes de los sufijos intactos; este método no elige ni instala una fuente automáticamente
Las Options de DLL y ActiveX usan las banderas de búsqueda como bits 1, 2, 4, 8, 16, 32, 64 y 128 en orden de enum; soAcrossLines es el bit 16 y no es compatible aquí; los bits desconocidos son rechazados por estas fachadas
Las cadenas de entrada de la DLL A usan la configuración de conversión de ANSI a ancha de la instancia; use el punto de entrada de cadenas anchas para pasar Unicode independientemente de esa configuración
Valores devueltos
Devuelve el número de coincidencias reemplazadas, o 0 si no hay coincidencias o la solicitud fue rechazada; examine GetLastUnicodeReplacementDiagnostics para distinguir esos resultados
LastErrorCode 535 reporta entrada no válida o límites de captura; 537 reporta edición o codificación no compatible; una búsqueda válida sin coincidencias reporta completed con replacedHits 0
Observaciones
Los mapeos provienen de un CMap ToUnicode totalmente compatible o de una codificación de fuente simple verificada, incluidos los nombres de glifos Differences compatibles; no se usa conversión de página de código del sistema ni codificación de glifos adivinada
Las fuentes simples deben suministrar Widths, FirstChar y LastChar de PDF válidos, o usar un nombre exacto de fuente Type1 de las catorce estándar sin Widths; el fallback a fuentes del sistema y la coincidencia laxa de nombres no autorizan un avance exacto
La herencia con nombre UseCMap, los mapeos sin resolver, los avances de fuentes Type3, la escritura vertical, el texto de Form anidado, los caracteres sintéticos, los reemplazos ActualText, las cadenas transcodificadas, las coincidencias entre capas y los clústeres de ligaduras parciales se reportan como no compatibles
Un clúster de ligadura completo se puede reemplazar cuando sus bytes originales y su mapeo Unicode están verificados; los prefijos y sufijos permanecen en su fuente original
Las opciones de búsqueda conservan su significado actual, incluidas las restricciones de mayúsculas y minúsculas, palabra completa, comodín, diacríticos, equivalencia canónica y grafemas; soAcrossLines y las llamadas dentro de un ámbito de API abierto se rechazan
La planificación admite hasta 4096 coincidencias; las instantáneas de origen capturadas están limitadas a 64 MiB por flujo y 512 MiB en total, con 64 MiB de registros de ubicación de origen capturados; el analizador de mapeos de fuentes también aplica límites acotados de tokens y de espacios de código, con totales de transacción de 262144 mapeos y 8 Mi de unidades de destino UTF-16
Estos límites restringen la captura retenida y los datos de planificación; la carga y el renderizado de páginas existentes tienen sus propias asignaciones, por lo que no son una garantía del uso de memoria pico absoluto
Los flujos de contenido compartidos y los diccionarios de recursos se copian para las páginas seleccionadas; la selección del documento se restaura y las listas de bloques de texto obsoletas deben extraerse de nuevo después de una edición exitosa
Esta operación cambia el contenido de la página activa y no es una API de borrado seguro: los objetos desvinculados o las revisiones incrementales anteriores pueden conservar los bytes originales
Véase también
SearchAndReplaceTextInContent, SearchAndReplaceTextInContentEx, GetLastUnicodeReplacementDiagnostics, SearchText