Comparação nativa de documentos headless

HPDFHeadlessCompare compara dois documentos nativos carregados através de HPDFCompareHeadlessDocuments; a ABI de callbacks do Linux expõe a mesma implementação através de hpdf_document_compare_json_v1 com type:compare

Modo PascalModo JSONConteúdo comparado
hcmPageCountpagecountContagens de folhas da page tree
hcmPageTextpagetextContagens de páginas e texto Unicode extraído
hcmObjectCountobjectcountContagens de páginas e de objetos físicos em uso da cross-reference
hcmRenderedImagerenderedimageContagens de páginas, dimensões renderizadas e pixels nativos Cairo
hcmStructuralstructuralContagens de páginas e grafos normalizados de catalog, information e objetos inalcançáveis
hcmFullfullContagens de páginas e objetos, grafos normalizados, texto Unicode e pixels renderizados

Equivalência estrutural

A comparação estrutural resolve referências indiretas e ordena entradas de dicionários, normaliza PDF names e representações de strings literais ou hexadecimais, e decodifica filters comuns de streams antes de fazer o hash do conteúdo com SHA-256

Números de objetos, ordem de serialização e compressão comum de streams não mudam a equivalência estrutural; encodings terminais de imagens retêm seu filter e política de decode, enquanto objetos inalcançáveis são comparados como multiset

Dicionários de criptografia e containers de armazenamento de cross-references ou object-streams são excluídos da estrutura semântica; conteúdo autenticado AES R5/R6 é comparado após a descriptografia, com permissão de extração aplicada

Uma diferença estrutural reporta o path de nível de documento $Document; as contagens físicas de objetos permanecem um modo separado e podem diferir quando conteúdo equivalente usa layouts de armazenamento diferentes

Comparação renderizada

Cada página é realmente renderizada usando o device Cairo nativo no DPI selecionado; pixels de imagens decodificadas são compostos sobre branco e comparados em RGB ou luminância

Os relatórios contêm dimensões, contagens de pixels alterados, delta máximo de canal, erro absoluto médio, razão de pixels alterados e similaridade; similaridade é 1 - meanAbsoluteError / 255

Um pixel muda quando seu delta máximo de canal excede ColorTolerance; uma página passa apenas quando as dimensões correspondem e tanto a similaridade quanto a razão de pixels alterados atendem aos thresholds configurados

O rendering exige as mesmas fontes, codecs de imagens e semântica de gráficos do rendering nativo de páginas; uma página não suportada faz a comparação falhar, em vez de produzir um relatório idêntico

Execução delimitada

As opções de comparação delimitam traversal, profundidade, objetos, streams decodificados, preparação de texto, armazenamento de resultados e pixels renderizados; o cancelamento alcança traversal, extração de texto e rendering

Mantenha ambas as instâncias de documentos vivas e sob posse exclusiva durante uma comparação Pascal; seu conteúdo original e opções de recursos são preservados em sucesso, falha e cancelamento

A ABI do Linux aceita os seis nomes de modos em minúsculas acima e membros estritos de options correspondendo aos limites Pascal, além de dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio e colorSpace:rgb ou luminance

Resultados da ABI são totalmente preparados e delimitados antes da publicação síncrona por callbacks; chamadas de mesmo handle e chamadas concorrentes em ordem oposta usam a ordenação estável de locks existente

Campos do relatório · Comparação semântica de contratos · C ABI nativa do Linux