$ whoami
Kotz
projetos pessoais
$ ls ~/codes
pdfcomparer
github.com/kotzcc/pdfcomparer →CLI em Rust que compara dois PDFs em três níveis — número de páginas, texto (diff linha a linha) e visual (diff pixel a pixel renderizado via PDFium) — com tolerância a pequenas variações de renderização entre exportações diferentes do mesmo documento.
Rust
PDFium
CLI
Paralelismo
- ▸ Paraleliza renderização em processos (PDFium não é thread-safe) e faz diff/gravação em pipeline de threads — até 6× mais rápido.
- ▸ Alinha páginas com dimensões levemente diferentes e tolera deslocamento subpixel de glifos, evitando falsos positivos.
- ▸ Monitor de CPU em tempo real no terminal e visualizador HTML/nativo lado a lado, sobreposto ou com diff destacado.
Uso
./pdfcomparer arquivo_a.pdf arquivo_b.pdf
Opções
-
-o, --output <DIR>padrão: diff_output - Diretório para as imagens de diff
-
--dpi <N>padrão: 150 - Resolução da renderização
-
--tolerance <0-255>padrão: 8 - Tolerância por canal de cor (ignora ruído de anti-aliasing)
-
--shift-tolerance <px>padrão: 1 - Raio de tolerância a deslocamento subpixel (0 = exato)
-
-j, --threads <N>padrão: nº de núcleos - Número de threads de trabalho
-
-p, --processes <N>padrão: nº de núcleos - Número de processos para paralelizar a renderização
--no-cpu-monitor- Desativa o monitor de CPU em tempo real
--viewer- Abre no navegador um visualizador das páginas divergentes
--viewerg- Abre um visualizador gráfico nativo (janela própria)
--skip-text- Pula a comparação de texto
--skip-visual- Pula a comparação visual
Código de saída: 0 se os PDFs são equivalentes, 1 se houver diferenças — útil em scripts e CI.
⚠ Testado apenas em Linux