Comparación de documentos
THPDFDocComparison compara dos documentos THotPDF cargados y devuelve un informe JSON determinista
Comparación estructural
cmStructural comienza en el catálogo de cada documento, sigue las referencias indirectas y asigna rutas a partir de claves de diccionario ordenadas e índices de matriz como $Catalog/Pages/Kids[0]/Contents
Los valores escalares y los bytes de flujo decodificados se resumen con SHA-256, de modo que los flujos grandes se comparan de forma incremental sin materializar otra copia completa
Los objetos con la misma ruta pero firmas diferentes se informan como objectChanged; las firmas iguales en rutas diferentes son objectMoved; los objetos restantes sin emparejar son objectInserted u objectDeleted
Alineación de páginas
Las páginas con texto extraíble usan una firma de texto semántica para la alineación y recurren a una firma estructural cuando el texto está vacío o no está disponible
Una pasada de subsecuencia creciente más larga conserva el orden de página entre inserciones y eliminaciones mientras informa del reordenamiento genuino como pageMoved
Las páginas alineadas sin emparejar se convierten en pageChanged, pageInserted o pageDeleted; los metadatos de página se firman independientemente de /Parent, /Contents y /Resources para evitar el ruido de codificación de subconjuntos de fuentes
Comparación renderizada
cmRenderedImage y cmFull renderizan las páginas comunes al DPI configurado y escanean cada mapa de bits una vez para calcular los píxeles cambiados, la proporción de píxeles cambiados, el error de color absoluto medio, el delta de color máximo y una puntuación de luminancia global similar a SSIM
THPDFRenderedCompareOptions selecciona la diferencia RGB o de luminancia, la tolerancia de color por píxel, la similitud mínima, la proporción máxima de píxeles cambiados, el tamaño de tesela, la retención de regiones cambiadas, los presupuestos de píxeles y las superposiciones PNG opcionales
Una página es similar solo cuando pasan tanto la proporción de píxeles cambiados como las puertas de similitud; las métricas se evalúan con precisión completa y se redondean a seis decimales solo para el informe JSON determinista
Las teselas cambiadas se unen en regiones deterministas de cuatro conexiones y se informan con límites en espacio de píxeles, recuentos de píxeles cambiados y deltas de color máximos
Cuando los mapas de calor están habilitados, los píxeles cambiados se mezclan de amarillo a rojo sobre el documento A y se guardan como archivos de estilo page-000001-diff.png en el directorio seleccionado por el llamador
Límites y completitud
THPDFStructuralCompareLimits controla los límites de objeto, borde, página, profundidad, diferencia, byte de flujo, byte de valor y byte de ruta
Si el recorrido alcanza un límite, el informe incluye comparisonBudget, establece comparisonComplete en false y no puede informar de que los documentos son idénticos
El trabajo renderizado se estima antes de la asignación y se limita por página y por comparación; los fallos de renderizado, asignación o superposición añaden renderBudget o renderError, establecen renderComparisonComplete y comparisonComplete en false y fallan de forma cerrada
Modos de comparación
cmPageCountcompara los recuentos de páginascmPageTextalinea y compara el texto de página extraídocmObjectCountconserva su valor de selector existente y ahora realiza la comparación estructural de objetos y páginascmRenderedImagerealiza una comparación renderizada perceptual usando opciones predeterminadas o seleccionadas por el llamadorcmFullcombina la comparación de recuento de páginas, estructural y renderizadacmStructuralrealiza la comparación de páginas y de grafo de objetos sin renderizar
Formato de resultado
El informe incluye recuentos de origen, telemetría de recorrido, límites estructurales y de renderizado normalizados, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical y una matriz differences
Los modos renderizados también devuelven una matriz renderedPages con estado de página, dimensiones, métricas, regiones cambiadas y rutas de superposición opcionales, además de recuentos agregados de páginas y píxeles renderizados
Cada diferencia puede incluir valores estables de pathA y pathB, índices de página, números de objeto, un tipo y una cadena de detalle
APIs relacionadas
THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments