Comparação nativa headless de documentos
HPDFHeadlessCompare compara dois documentos nativos carregados através de HPDFCompareHeadlessDocuments; a ABI de callbacks de Linux expõe a mesma implementação através de hpdf_document_compare_json_v1 com type:compare
| Modo Pascal | Modo JSON | Conteúdo comparado |
|---|---|---|
| hcmPageCount | pagecount | Contagens de folhas de árvores de páginas |
| hcmPageText | pagetext | Contagens de páginas e texto Unicode extraído |
| hcmObjectCount | objectcount | Contagens de páginas e contagens físicas de objetos de referências cruzadas em uso |
| hcmRenderedImage | renderedimage | Contagens de páginas, dimensões renderizadas e píxeis nativos Cairo |
| hcmStructural | structural | Contagens de páginas e grafos normalizados de catalog, informação e objetos inalcançáveis |
| hcmFull | full | Contagens de páginas e de objetos, grafos normalizados, texto Unicode e píxeis 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 descodifica filtros ordinários de streams antes de calcular o hash do conteúdo com SHA-256
Números de objetos, ordem de serialização e compressão ordinária de streams não alteram a equivalência estrutural; encodings terminais de imagens mantêm a política delas de filtros e de descodificação, enquanto objetos inalcançáveis são comparados como um multiconjunto
Dicionários de encriptação e contentores de armazenamento de referências cruzadas ou de object streams são excluídos da estrutura semântica; o conteúdo autenticado AES R5/R6 é comparado após desencriptação, com permissão de extração imposta
Uma diferença estrutural reporta o caminho ao nível do 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 dispositivo nativo Cairo no DPI selecionado; os píxeis descodificados das imagens são compostos sobre branco e comparados em RGB ou luminância
Os relatórios contêm dimensões, contagens de píxeis alterados, delta máximo de canais, erro absoluto médio, rácio de píxeis alterados e similaridade; a similaridade é 1 - meanAbsoluteError / 255
Um píxel muda quando o delta máximo de canais dele excede ColorTolerance; uma página passa apenas quando as dimensões correspondem e tanto a similaridade como o rácio de píxeis alterados atingem os limiares configurados
A renderização exige os mesmos tipos de letra, codecs de imagens e semântica de gráficos suportados da renderização nativa de páginas; uma página não suportada faz falhar a comparação em vez de produzir um relatório idêntico
Execução delimitada
As opções de comparação delimitam travessia, profundidade, objetos, streams descodificadas, preparação de texto, armazenamento de resultados e píxeis renderizados; o cancelamento alcança a travessia, a extração de texto e a renderização
Mantenha ambas as instâncias de documentos vivas e sob propriedade exclusiva durante uma comparação Pascal; o conteúdo original delas e as opções de recursos são preservadas em sucesso, falha e cancelamento
A ABI de Linux aceita os seis nomes de modos em minúsculas acima e membros options estritos correspondendo aos limites Pascal, mais dpi, colorTolerance, minimumSimilarity, maxChangedPixelRatio e colorSpace:rgb ou luminance
Os resultados da ABI são completamente 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 existente de bloqueios
Campos de relatórios · Comparação semântica de contratos · ABI C nativa de Linux