Comparación de contratos nativa en Linux
hpdf_document_compare_json_v1 toma prestados dos handles de documentos cargados y ejecuta la comparación nativa de contratos semántica 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}}
Reportes semánticos de contratos
El adapter 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 palabras u oraciones, los movimientos entre páginas, la exclusión de márgenes repetidos, los filtros de boilerplate y las continuaciones de página
Los reportes de contrato incluyen comparisonComplete, identical, differenceCount, conteos de páginas y párrafos, exclusiones, contadores de trabajo y alineación, además del texto, el contexto y las ubicaciones de cada cambio
Cada ubicación contiene una página y un párrafo en base cero, un offset de carácter en base uno, un conteo de caracteres y rectángulos de user-space PDF que cubren las líneas semánticas intersectadas; los rectángulos representan geometría de líneas
La extracción nativa de glifos preserva los recursos y matrices de Forms anidados, los límites de página heredados y los permisos de extracción para entradas de texto plano y AES R5/R6 autenticado; las páginas sin texto extraíble reportan 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 resultados de la operación acotan estos límites antes de la ejecución
compare acepta modos de conteo de páginas, texto de página, conteo 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 del resultado en el callback binario opcional además del callback de resultado requerido; format:html exige un callback binario y escribe una revisión standalone UTF-8 con título y redacción de 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 del mismo handle está soportada y las comparaciones concurrentes en orden inverso adquieren locks en un orden estable
Todos los callbacks se ejecutan de forma síncrona en el thread llamador; los límites de recursos se aplican temporalmente a cada documento cargado y se restauran después, incluidas las rutas de fallo y cancelación
La llamada no acepta miembros de callback de entrada ni de file-path, y preserva ambos documentos de origen y sus revisiones; la salida binaria y JSON se preparan y acotan antes de que la publicación comience
Interfaz Pascal
HPDFCompareHeadlessContracts acepta dos objetos THPDFHeadlessDocument con THPDFContractCompareOptions existentes y devuelve THPDFContractCompareReport
HPDFHeadlessContractSource expone el adapter nativo; HPDFCompareContractSources en HPDFContractCompareCore acepta callbacks personalizados acotados de conteo de páginas, página semántica y visible-box para el core portable
HPDFContractCompareCore posee el algoritmo compartido, los tipos de reporte y el renderer HTML sin dependencias de VCL ni LCL; la interfaz Windows HPDFContractCompare existente preserva sus tipos, constantes y entry points de documentos cargados mediante aliases y adapters
THPDFHeadlessDocument.ExtractPageGlyphs y AnalyzePageSemanticText exponen glifos posicionados y layout semántico a través del mismo walker de contenido anidado usado por ExtractPageText
La aceptación del ABI nativo verifica comparaciones reales de texto plano, AES R5/R6 y 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 · Comparación de contratos · Plan de entrega restante