Comparación de contratos Linux nativa
hpdf_document_compare_json_v1 toma dos handles de documentos cargados y ejecuta la comparación semántica nativa de contratos o la comparación general de documentos, con salida preparada mediante callbacks
{"schemaVersion":1,"type":"compare.contract","format":"html",
"title":"Contract review","options":{"granularity":"word",
"ignoreRepeatedHeadersFooters":true,"maxAlignmentCells":2000000},
"limits":{"memoryBytes":268435456,"resultBytes":4194304,"outputBytes":8388608}}
Informes semánticos de contratos
El adaptador nativo usa el mismo algoritmo portable de alineación de párrafos y diferencias que la API de contratos de Windows, incluidos los cambios de palabra o frase, los movimientos entre páginas, la exclusión de márgenes repetidos, los filtros de boilerplate y las continuaciones de página
Los informes de contratos incluyen comparisonComplete, identical, differenceCount, recuentos de páginas y párrafos, exclusiones, contadores de trabajo y de alineación, más el texto, el contexto y las ubicaciones de cada cambio
Cada ubicación contiene una página y un párrafo base cero, un offset de carácter base uno, un recuento de caracteres y rectángulos en espacio de usuario PDF que cubren las líneas semánticas que se intersecan; los rectángulos representan la geometría de las líneas
La extracción nativa de glifos preserva los recursos Form anidados y sus matrices, los límites de página heredados y los permisos de extracción para entradas plaintext y AES R5/R6 autenticadas; las páginas sin texto extraíble informan de un fallo de extracción y requieren OCR o eliminación explícita de páginas en blanco
Opciones y límites
options acepta granularity (word o sentence), ignoreCase, ignoreRepeatedHeadersFooters, normalizeMarginDigits, joinPageContinuations, headerMarginPoints, footerMarginPoints, paragraphGapFactor, minimumParagraphSimilarity, minimumRepeatedPages y excludedLineTexts
Los límites enteros positivos explícitos incluyen maxPages, maxParagraphs, maxSemanticLines, maxCharacters, maxTokens, maxDifferences, maxAlignmentCells y maxWorkUnits; los presupuestos de memoria y de resultado de la operación recortan estos límites antes de la ejecución
compare acepta modos de recuento de páginas, texto de página, recuento de objetos, imagen renderizada, estructural y completo con salida JSON; descubre los modos disponibles mediante comparisonModes y los formatos de contrato mediante contractFormats
format:json escribe el JSON resultante en el callback binario opcional además del callback de resultado obligatorio; format:html exige un callback binario y escribe una revisión standalone UTF-8 con el título y la redacción del contrato escapados
format:pdf exige callbacks de salida binaria y crea una copia de revisión anotada real de side:before o side:after, con after por defecto; options.maxHighlights limita las líneas semánticas resaltadas
Tiempo de vida y publicación
Mantén ambos handles vivos durante la llamada; la comparación con el mismo handle está soportada y las comparaciones concurrentes en orden opuesto adquieren los locks en un orden estable
Todos los callbacks se ejecutan de forma síncrona en el hilo llamador; los límites de recursos se aplican temporalmente a cada documento cargado y se restauran después, incluidos los caminos de fallo y cancelación
La llamada no acepta callback de entrada ni miembros de ruta de fichero, y preserva ambos documentos de origen y sus revisiones; la salida binaria y JSON se prepara y acota antes de que comience la publicación
Interfaz Pascal
HPDFCompareHeadlessContracts acepta dos objetos THPDFHeadlessDocument con THPDFContractCompareOptions existentes y devuelve THPDFContractCompareReport
HPDFHeadlessContractSource expone el adaptador nativo; HPDFCompareContractSources en HPDFContractCompareCore acepta callbacks personalizados acotados de recuento de páginas, página semántica y caja visible para el core portable
HPDFContractCompareCore posee el algoritmo compartido, los tipos de informe y el renderer HTML sin dependencias de VCL ni LCL; la interfaz HPDFContractCompare de Windows existente preserva sus tipos, constantes y puntos de entrada de documentos cargados mediante aliases y adaptadores
THPDFHeadlessDocument.ExtractPageGlyphs y AnalyzePageSemanticText exponen glifos posicionados y layout semántico mediante el mismo walker de contenido anidado que usa ExtractPageText
La aceptación del ABI nativo verifica comparaciones reales plaintext, AES R5/R6 y de Forms anidados, rollback, presupuestos y orden de locks; lectores independientes pypdf y MuPDF verifican diferencias completas, contextos exactos, offsets y geometría de glifos de origen
Native Linux C ABI · Contract comparison · Remaining delivery plan