2009-09-24 09:45:45 +0000 2009-09-24 09:45:45 +0000
209
209

Como comparar as diferenças entre dois ficheiros PDF no Windows?

Conhece uma boa forma de comparar ficheiros PDF lado a lado e mostrar as modificações entre os dois?

Estou à procura de software Windows para o conseguir. Seria óptimo se pudesse colocar tanto produtos gratuitos como não gratuitos.

Respostas (18)

173
173
173
2011-05-22 17:46:19 +0000

Em Linux e Windows pode usar diffpdf (que difere de diff-pdf mencionado neste tópico).

No Ubuntu instalar usando:

sudo apt-get install diffpdf

Veja mais esta página do UbuntuGeek em comparar pds textualmente ou visualmente .

Para Windows , esta versão Diffpdf Windows funciona realmente bem. Pode descarregar a partir de http://soft.rubypdf.com/software/diffpdf (desça até Win32 versão estática).

111
111
111
2009-09-24 14:29:20 +0000

Experimente WinMerge com o plugin xdocdiff . Ambos são completamente gratuitos. Sem compromisso.


Alguns dos comentários abaixo sugerem que não vêem qualquer diferença. Isto significa que o plug-in não está instalado correctamente. Eis como:

  1. Coloque os ficheiros onde o ficheiro readme do plug-in xdocdiff diz para os colocar (existem dois lugares; não os vou listar aqui pois os nomes dos ficheiros podem mudar, etc. - leia o readme)

  2. No WinMerge, vá a Plugins > Listar e assinale a caixa de verificação “Enable Plugins” (falta este passo no ficheiro readme do xdocdiff)

  3. No WinMerge, escolha Plugins > Desembalar automaticamente (este passo foi desactivado antes do passo 2)

Depois, ao comparar, verá o que se parece com ficheiros de texto nas janelas de comparação.

44
44
44
2011-01-06 16:59:33 +0000

Recentemente encontrei isto e adorei. https://github.com/vslavik/diff-pdf

Plataforma Cross, grátis, e funciona bem.

Aqui está uma imagem do diff-pdf em acção - note que o texto não é diferente no PDF, mas apenas fontes (e correspondentemente, definições de layout):

A chamada para obter essa imagem foi:

diff-pdf --view testA.pdf testB.pdf

 

. … onde testA.pdf/testB.pdf são obtidos compilando este simples ficheiro Latex com pdflatex (de acordo com cada pdf, ver comentário):

\documentclass[12pt]{article}

                        % without mathpazo: testA.pdf
\usepackage{mathpazo} % with mathpazo: testB.pdf
\usepackage{lipsum}

\title{A brand new test}
\author{Testulio}

\begin{document}

\maketitle

\lipsum[1-3]

\end{document}
22
22
22
2012-09-05 07:12:08 +0000

Também precisávamos de comparar PDFs na nossa empresa e não estávamos satisfeitos com nenhuma das soluções que encontrámos, por isso fizemos as nossas: i-net PDFC . Não é grátis, mas oferecemos um teste de 30 dias.

Está escrito em Java, por isso é multi-plataforma.

O que o torna especial é que compara o conteúdo em vez de apenas o texto (ou apenas converter o pdf para uma imagem e comparar a imagem). Tem também uma boa ferramenta de comparação visual.

11
11
11
2010-12-03 09:51:50 +0000

Também pode utilizar o Adobe Acrobat X. Tem a funcionalidade de comparação PDF integrada em “Ver -> Comparar Documentos”.

10
10
10
2013-09-28 03:47:29 +0000

Eu quis fazer isto (diff PDFs) recentemente com estes requisitos:

  • ignorar espaços em branco, quebras de linha, quebras de página, etc.
  • ver facilmente quando apenas algumas palavras que mudaram, não apenas linhas/parágrafos inteiros.
  • saída dif de cor

Eu instalei pdftotext, wdiff, e colordiff, disponíveis em vários gestores de pacotes. (Com macports: sudo port install poppler wdiff colordiff)

Depois:

wdiff <(pdftotext old.pdf -) <(pdftotext new.pdf -) | colordiff

Agora posso ver quais palavras, bem coloridas, mudaram.

Mais detalhes: http://philfreo.com/blog/how-to-view-a-color-diff-of-text-from-two-pdfs/

Variação:

Usando dwdiff posso produzir resultados ligeiramente melhores.

Eu também queria a saída HTML para que este pequeno script faça uma página web básica com um pouco de CSS.

bash pc-script.bash old.pdf new.pdf > q.htlm

Depois abra q.html com o seu navegador web.

pc-script.bash ficheiro:

#!/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 saída pode ser visto aqui

7
7
7
2009-09-24 13:40:01 +0000

Se está a comparar texto dentro de um pdf, então Beyond Compare faz isto.

Não é grátis, mas há um teste de trinta dias.

2
2
2
2010-12-16 12:24:34 +0000

Não sei, mas também há o comparPDF (não gratuito, mas um teste de 30 dias possível): http://www.compare-pdf.com/download.htm

1
1
1
2016-02-17 12:10:03 +0000

Aqui pode carregar dois pdf’s e recuperar o terceiro que lhe mostrará a diferença entre os dois.

Funciona em todas as plataformas, nada aprende ou instala e é grátis. https://synodins.com/apps/pdf_difference/intro.html

1
1
1
2009-09-24 09:50:05 +0000

Gratuito, não é o melhor mas…

Abro ambos os documentos e tenho-os em ecrã dividido um contra o outro.

Não é a solução mais prática, mas funciona!

Não tenho visto um bom pacote DIFF para ficheiros PDF e embora manual e aborrecido, a minha maneira funciona!

0
0
0
2020-02-28 21:17:24 +0000

A minha proposta de melhor ferramenta para comparar PDFs é Kiwi PDF Comparer .

Ao contrário da maioria, pode comparar texto e imagens no documento e também tem outra opção para comparar páginas pixel a pixel. Ao comparar texto tem mais resolução para todos os outros porque destaca caracteres alterados e não palavras inteiras.

Deve ser também o único software a fazer uma comparação PDF em que não tem de procurar as diferenças marcadas porque pode ir de uma diferença para outra apenas com um clique.

Existe uma versão gratuita que funciona muito bem, mas a versão paga é também a mais barata com uma diferença entre aplicações profissionais. Ser escrito em Java pode ser executado em Windows, Linux e Mac OS.

0
0
0
2016-07-26 22:42:20 +0000

pdf-diff é um pacote Python para este fim.

0
0
0
2009-09-24 10:47:45 +0000

Comercial: Pode utilizar o original Adobe Acrobat Professional, por um impressionante preço de 449 dólares: Compare um PDF revisto com uma versão anterior .

Se decidir usar o Acrobat, os comentários desta página são pertinentes para a sua utilização.

0
0
0
2009-09-24 12:31:16 +0000

Diff Doc - não livre.

0
0
0
2009-09-24 10:04:34 +0000

Outra solução menos do que ideal:

  1. Converter ambos os PDFs para Microsoft Word utilizando um dos websites que o fazem gratuitamente .
  2. Use a funcionalidade comparação de documentos no Word.

Dependendo da complexidade da formatação nos PDFs e do tipo de alterações que procura, isto pode ser OK.

0
0
0
2013-01-21 13:35:52 +0000

Utilizei esta solução (não ideal, mas para mim suficiente):

  • Converter PDF para texto simples (no meu caso com Adobe Reader, aplicação gratuita)
  • Utilizar opendiff (incluído com XCode, gratuito) e ver alterações
0
0
0
2019-02-26 10:15:54 +0000

Existe também gratuitamente online https://www.diffchecker.com/diff .

. Mas apenas destaca as diferenças de texto sem imagens e formatação. E é demasiado fraco na correspondência de fragmentos inalterados em ficheiros grandes.

0
0
0
2011-12-21 23:27:52 +0000

Para uma forma muito primitiva de rolagem sincronizada entre dois arquivos pdf, você pode usar o seguinte script autohotkey que escrevi. Assume que tem duas janelas SumatraPDF abertas. Prima a direita para ir para a página seguinte em ambas as janelas, prima a esquerda para a página anterior.

#IfWinActive ,SumatraPDF
Right::
orig := WinExist("A")
WinGet, outvar, List, SumatraPDF
win1 := outvar1
win2 := outvar2
WinActivate, ahk_id %win1%
sendinput {Right}
WinActivate, ahk_id %win2%
sendinput {Right}
WinActivate, ahk_id %orig%
return

Left::
orig := WinExist("A")
WinGet, outvar, List, SumatraPDF
win1 := outvar1
win2 := outvar2
WinActivate, ahk_id %win1%
sendinput {Left}
WinActivate, ahk_id %win2%
sendinput {Left}
WinActivate, ahk_id %orig%
return