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