Eu queria fazer isso (diff PDFs) recentemente com esses requisitos:
- ignora espaços em branco, quebras de linha, quebras de página, etc.
- veja facilmente quando apenas algumas palavras mudaram, não apenas linhas / parágrafos inteiros.
- saída de diferenças de cores
Instalei pdftotext, wdiff e colordiff, disponíveis em vários gerenciadores de pacotes. (Com macports: sudo port install poppler wdiff colordiff
)
Então:
wdiff <(pdftotext old.pdf -) <(pdftotext new.pdf -) | colordiff
Agora eu posso ver quais palavras, bem coloridas, mudaram.
Mais detalhes: link
Variação:
A utilização de dwdiff
pode produzir resultados ligeiramente melhores.
Eu também queria a saída em HTML, então esse minúsculo script cria uma página web básica com um pouco de CSS.
bash pc-script.bash old.pdf new.pdf > q.htlm
Em seguida, abra q.html
com seu navegador da Web.
pc-script.bash
file:
#!/bin/bash
OLD="$1"
NEW="$2"
cat <<EOF
<html><head><meta charset="UTF-8"/><title>Changes from $OLD to $NEW</title></head><style>
.plus { color: green; background: #E7E7E7; }
.minus { color: red; background: #D7D7D7; text-decoration: line-through; }
</style><body><h1>Changes from [ <span class="minus">$OLD</span> ] to [ <span class="plus">$NEW</span> ]</h1><pre>
EOF
dwdiff -i -A best -P \
--start-delete='<span class="minus">' --stop-delete='</span>' \
--start-insert='<span class="plus" >' --stop-insert='</span>' \
<( pdftotext -enc UTF-8 -layout "$OLD" - ) \
<( pdftotext -enc UTF-8 -layout "$NEW" - ) \
cat <<EOF
</pre></body></html>
EOF
Um exemplo de resultado pode ser visto aqui