Método THotPDF.PreviewLoadedPageTextReplacement
Prepara el texto de reemplazo con fuentes Unicode incrustadas, mide cada coincidencia y devuelve un plan auditable sin modificar el documento cargado
function PreviewLoadedPageTextReplacement(PageIndex: Integer;
const Needle, Replacement: UnicodeString; MatchCase: Boolean;
const Options: THPDFLoadedTextReplacementOptions;
out Plan: THPDFLoadedTextReplacementPlan): Boolean;
Opciones y resultados
THPDFLoadedTextReplacementOptions.Default usa Arial, el tamaño original de la fuente de la coincidencia, su ancho medido y una altura de 1.25 veces ese tamaño, con el rechazo atómico activado
Appearance selecciona la fuente, el estilo, el color, la alineación y el padding; UseMatchFontSize=False usa el tamaño solicitado, mientras que unos BoxWidth y BoxHeight positivos aportan una caja de ajuste de línea explícita
Appearance.OverflowPolicy selecciona ltopReject, ltopClip o ltopShrinkToFit; el recorte conserva solo el texto que el productor logra encajar y el shrink-to-fit se detiene en MinFontSize
THPDFLoadedTextReplacementPlan transporta la petición, las opciones, la huella del origen, los recuentos y el array THPDFLoadedTextReplacementResults
Cada THPDFLoadedTextReplacementResult informa los índices de glifos, la posición original, las dimensiones de la caja, el tamaño efectivo de fuente y un valor THPDFLoadedTextReplacementStatus: ltrsReady, ltrsApplied, ltrsRejected o ltrsRolledBack, con un motivo de rechazo o de rollback
MaxMatches, MaxGlyphs, MaxContentTokens, MaxContentBytes, MaxGeneratedBytes y el límite de texto de la apariencia acotan el parsing del origen, la salida y los recursos de fuente copiados
Geometría y atomicidad
El reemplazo generado usa las cadenas de fallback de fuentes del documento, ShapingFeatures, los interruptores de auto-shaping de script y las selecciones de script e idioma GSUB; configúrelos antes de previsualizar y mantenga los mismos ajustes al aplicar el plan
Cada apariencia de reemplazo limita las selecciones distintas de fuentes de shaping a 256 y los datos acumulados de fuente en bruto a 64 MiB, además de los presupuestos de parsing y de salida generada de la petición
El reemplazo cambia de fuente dentro del flujo de texto original, mantiene el texto circundante buscable y restaura las matrices originales de pen y de línea, para que los glifos siguientes y las transiciones de línea conserven sus posiciones
Se soporta el texto directo de página con geometría horizontal y no singular, incluidas las transformaciones de página, el escalado de texto, el rise, los operadores TJ y de comillas simple/doble, y las coincidencias que cruzan operandos adyacentes en la misma baseline
Se rechazan las coincidencias que cruzan baselines, la escritura vertical, las transformaciones singulares, el contenido desbalanceado, los glifos ausentes y los documentos con campos de firma; el texto dentro de Form XObjects queda fuera del alcance de coincidencias de esta API
Con Atomic=True, cualquier coincidencia rechazada hace rollback de todas las coincidencias listas; con Atomic=False, las coincidencias listas pueden aplicarse mientras las rechazadas quedan sin cambios, y el resultado booleano sigue siendo False cuando alguna coincidencia fue rechazada
La vista previa usa y revierte una transacción de grafo anidada, preservando una transacción existente del llamador; puede invalidar las cachés del documento e invocar la notificación de modificación del documento aunque el contenido se restaure
Commit
Pase el plan a ApplyLoadedPageTextReplacement para revalidar su huella de contenido y de métricas de glifo antes de aplicar la petición dentro de una transacción de grafo
Recalcule el plan tras cambios de contenido; un plan obsoleto lanza EInvalidOpException sin aplicar sus reemplazos
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);