Comparação de documentos
THPDFDocComparison compara dois documentos THotPDF carregados e devolve um relatório JSON determinístico
Structural comparison
cmStructural parte do catálogo de cada documento, segue as referências indiretas e atribui caminhos a partir das chaves de dicionário ordenadas e dos índices de array, como $Catalog/Pages/Kids[0]/Contents
Os valores escalares e os bytes de streams descodificados passam por hash SHA-256, pelo que os streams grandes são comparados de forma incremental, sem materializar outra cópia completa
Os objetos com o mesmo caminho mas assinaturas diferentes são reportados como objectChanged; as assinaturas iguais em caminhos diferentes são objectMoved; os objetos restantes sem correspondência são objectInserted ou objectDeleted
Page alignment
As páginas com texto extraível usam uma assinatura semântica de texto para o alinhamento e recorrem a uma assinatura estrutural quando o texto está vazio ou indisponível
Uma passagem de longest-increasing-subsequence preserva a ordem das páginas perante inserções e remoções, e reporta como pageMoved a reordenação genuína
As páginas alinhadas sem correspondência tornam-se pageChanged, pageInserted ou pageDeleted; os metadados da página são assinados independentemente de /Parent, /Contents e /Resources, para evitar ruído de codificação dos subsets de tipos de letra
Rendered comparison
cmRenderedImage e cmFull desenham as páginas comuns ao DPI configurado e percorrem cada bitmap uma só vez para calcular os píxeis alterados, o rácio de píxeis alterados, o erro médio absoluto de cor, o delta máximo de cor e uma pontuação global de luminância do tipo SSIM
THPDFRenderedCompareOptions seleciona a diferença RGB ou de luminância, a tolerância de cor por píxel, a similaridade mínima, o rácio máximo de píxeis alterados, o tamanho dos tiles, a retenção de regiões alteradas, os orçamentos de píxeis e overlays PNG opcionais
Uma página só é semelhante quando passam tanto o gate do rácio de píxeis alterados como o de similaridade; as métricas são avaliadas com precisão total e só arredondadas a seis casas decimais para o relatório JSON determinístico
Os tiles alterados são unidos em regiões determinísticas de conectividade 4 e reportados com limites no espaço de píxeis, contagens de píxeis alterados e deltas máximos de cor
Quando os heatmaps estão ativados, os píxeis alterados são misturados de amarelo a vermelho sobre o documento A e guardados como ficheiros do tipo page-000001-diff.png na pasta escolhida por quem chama
Bounds and completeness
THPDFStructuralCompareLimits controls object, edge, page, depth, difference, stream byte, value byte, and path byte limits
Se a travessia atingir um limite, o relatório inclui comparisonBudget, define comparisonComplete como false e não pode reportar os documentos como idênticos
O trabalho de rendering é estimado antes da alocação e limitado por página e por comparação; falhas de rendering, de alocação ou de overlay acrescentam renderBudget ou renderError, definem renderComparisonComplete e comparisonComplete como false e falham em modo fechado
Comparison modes
cmPageCountcompares page countscmPageTextaligns and compares extracted page textcmObjectCountmantém o seu valor de seletor existente e passa agora a fazer a comparação estrutural de objetos e páginascmRenderedImageperforms perceptual rendered comparison using default or caller-selected optionscmFullcombines page count, structural, and rendered comparisoncmStructuralperforms page and object-graph comparison without rendering
Result format
The report includes source counts, traversal telemetry, normalized structural and rendering limits, differenceCount, reportedDifferenceCount, differencesTruncated, comparisonComplete, identical, and a differences array
Os modos com rendering devolvem também um array renderedPages com o estado da página, as dimensões, as métricas, as regiões alteradas e os caminhos de overlay opcionais, bem como as contagens agregadas de páginas e píxeis desenhados
Cada diferença pode incluir valores estáveis de pathA e pathB, índices de página, números de objeto, um tipo e uma string de detalhe
APIs relacionadas
THPDFDocComparison · CompareWithOptions · THPDFRenderedCompareOptions · THPDFComparisonMode · HPDFDocCompareDocuments