Comparación nativa de documentos headless

HPDFHeadlessCompare compara dos documentos nativos cargados a través de HPDFCompareHeadlessDocuments; la ABI de callbacks de Linux expone la misma implementación mediante hpdf_document_compare_json_v1 con type:compare

Modo PascalModo JSONContenido comparado
hcmPageCountpagecountRecuentos de hojas del árbol de páginas
hcmPageTextpagetextRecuentos de páginas y texto Unicode extraído
hcmObjectCountobjectcountRecuentos de páginas y de objetos de referencia cruzada en uso físicamente
hcmRenderedImagerenderedimageRecuentos de páginas, dimensiones renderizadas y píxeles nativos de Cairo
hcmStructuralstructuralRecuentos de páginas y grafos normalizados de catálogo, información y objetos inalcanzables
hcmFullfullRecuentos de páginas y objetos, grafos normalizados, texto Unicode y píxeles renderizados

Equivalencia estructural

La comparación estructural resuelve referencias indirectas y ordena las entradas de diccionario, normaliza nombres PDF y representaciones de cadenas literales o hexadecimales, y decodifica los filtros de stream ordinarios antes de calcular el hash del contenido con SHA-256

Los números de objeto, el orden de serialización y la compresión de streams ordinarios no alteran la equivalencia estructural; las codificaciones de imagen terminales conservan su política de filtro y decodificación, mientras que los objetos inalcanzables se comparan como un multiset

Los diccionarios de cifrado y los contenedores de almacenamiento de referencias cruzadas u object streams quedan fuera de la estructura semántica; el contenido AES R5/R6 autenticado se compara tras descifrarlo, aplicando el permiso de extracción

Una diferencia estructural informa de la ruta a nivel de documento $Document; los recuentos físicos de objetos siguen siendo un modo aparte y pueden diferir cuando contenido equivalente usa disposiciones de almacenamiento distintas

Comparación renderizada

Cada página se renderiza de verdad usando el dispositivo Cairo nativo a los DPI seleccionados; los píxeles decodificados de la imagen se componen sobre blanco y se comparan en RGB o luminancia

Los informes contienen dimensiones, recuentos de píxeles modificados, delta máximo de canal, error absoluto medio, proporción de píxeles modificados y similitud; la similitud es 1 - meanAbsoluteError / 255

Un píxel cambia cuando su delta máximo de canal supera ColorTolerance; una página solo pasa si las dimensiones coinciden y tanto la similitud como la proporción de píxeles modificados alcanzan los umbrales configurados

El rendering exige las mismas fuentes, códecs de imagen y semántica gráfica soportados que el rendering nativo de páginas; una página no soportada hace fallar la comparación en lugar de producir un informe idéntico

Ejecución acotada

Las opciones de comparación acotan el recorrido, la profundidad, los objetos, los streams decodificados, la preparación de texto, el almacenamiento de resultados y los píxeles renderizados; la cancelación alcanza el recorrido, la extracción de texto y el rendering

Mantén ambas instancias de documento vivas y con propiedad exclusiva durante una comparación Pascal; su contenido original y sus opciones de recursos se conservan en éxito, fallo y cancelación

La ABI de Linux acepta los seis nombres de modo en minúsculas de arriba y miembros options estrictos que replican los límites Pascal, más dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio y colorSpace:rgb o luminance

Los resultados de la ABI se preparan y acotan por completo antes de la publicación síncrona del callback; las llamadas con el mismo handle y las llamadas concurrentes en orden inverso usan el orden de bloqueo estable existente

Campos del informe · Comparación de contratos semánticos · C ABI nativa de Linux