Jak porównać różnice między dwoma plikami PDF w systemie Windows?


205

Czy znasz dobry sposób na porównanie plików PDF obok siebie i pokazanie modyfikacji między nimi?

Szukam oprogramowania Windows, aby to osiągnąć. Byłoby wspaniale, gdybyś mógł publikować zarówno darmowe, jak i niewolne produkty.



1
Istnieje DARMOWA biblioteka do porównywania plików pdf piksel po pikselu. Sprawdź tego bloga: testautomationguru.com/…
Vinoth S

Odpowiedzi:


109

Wypróbuj WinMerge z wtyczką xdocdiff . Oba są całkowicie bezpłatne. Nieskrępowany.


Kilka poniższych komentarzy sugeruje, że nie widzą żadnej różnicy. Oznacza to, że wtyczka nie została poprawnie zainstalowana. Oto jak:

  1. Umieść pliki w miejscu, w którym xdocdiffplik readme wtyczki mówi o ich umieszczeniu (są dwa miejsca; nie wymienię ich tutaj, ponieważ nazwy plików mogą ulec zmianie itp. - przeczytaj plik readme)

  2. W WinMerge przejdź do Wtyczki> Lista i zaznacz pole wyboru „Włącz wtyczki” (tego kroku brakuje w xdocdiffpliku Readme)

  3. W WinMerge wybierz Wtyczki> Automatyczne rozpakowywanie (zostało wyłączone przed krokiem 2)

Następnie podczas porównywania zobaczysz, jak wyglądają pliki tekstowe w oknach porównania.


Próbowałem tego, ale nie widziałem żadnej różnicy, gdy nie korzystałem z wtyczki xdocdiff. Czy istnieje opcja do wyboru w interfejsie użytkownika WinMerge?
Umber Ferrule,

1
Jaki jest cel przeglądania tekstu binarnego w pliku PDF? Spodziewałem się zobaczyć różnice wizualne wykonane przez i-net PDFC .
JJD

Czy był jakiś sposób na rozbicie kolumny tego uchwytu? Bez tego jedna kaskada zmienia się w kilka.
Stuart

1
Plugins > List and tick the "Enable Plugins" checkboxbyło to, czego mi brakowało!
Wrz

Brakuje wielu znaków w wersjach tekstowych plików PDF pokazanych w oknach różnicowych WinMerge
cja

168

W systemach Linux i Windows możesz używać diffpdf(który różni się od diff-pdfwspomnianego w tym wątku).

wprowadź opis zdjęcia tutaj

W systemie Ubuntu zainstaluj za pomocą:

sudo apt-get install diffpdf

Zobacz tę stronę UbuntuGeek na temat porównywania pds tekstowo lub wizualnie .

W systemie Windows ta wersja Windows Diffpdf działa naprawdę świetnie. Możesz pobrać ze strony http://soft.rubypdf.com/software/diffpdf (przewiń w dół do wersji statycznej Win32 ).


12
Prawidłowa nazwa to DiffPDF (jak widać na zrzucie ekranu) i jest oparta na bibliotece Qt 4 i Poppler, dzięki czemu jest przenośna. Zobacz stronę główną DiffPDF : qtrac.eu/diffpdf.html . Informacje na temat kompilacji systemu Windows znajdują się tutaj: soft.rubypdf.com/software/diffpdf . Twoja instrukcja instalacji działa również na Debianie.
przemoc

3
Strona główna DiffPDF zawiera teraz również linki do instalacji Linuksa, Windowsa i Mac DMG ( qtrac.eu/diffpdf.html ).
studgeek

6
DiffPDF jest moim zdaniem najbardziej zaawansowanym narzędziem przedstawionym tutaj. Nie tylko oferuje ładne graficzne porównanie, ale także śledzi zmiany sprytniej niż inne, np. Xdocdiff dla WinMerge. Ma jednak jeden poważny problem: ogranicza porównanie do stron. Oznacza to, że jeśli masz tekst na stronie 2 dokumentu A, ale ten tekst przenosi się na stronę 3 w dokumencie B, to narzędzie myśli, że zniknęło w A i zostało dodane w B.
caw

7
Starsze darmowe wersje można znaleźć tutaj
Shafik Yaghmour

3
Próbowałem użyć tego do powieści, którą eksportuję do formatu PDF. Niestety narzędzie straciło orientację po około 10 stronach i uznało wszystko za „inne”, mimo że duże fragmenty były dokładnie takie same.
Eric J.

42

Niedawno to znalazłem i uwielbiam to.

https://github.com/vslavik/diff-pdf

Wieloplatformowy, bezpłatny i działa dobrze.

Oto zrzut ekranu z diff-pdfakcji - zwróć uwagę, że tekst nie różni się w pliku PDF, a jedynie czcionkami (i odpowiednio ustawieniami układu):

diff-pdf.png

Wezwaniem do uzyskania tego obrazu było:

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

 

... gdzie testA.pdf / testB.pdf są uzyskiwane przez kompilację tego prostego pliku lateksowego pdflatex(odpowiednio dla każdego pliku pdf, patrz komentarz):

\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}

10
Jeszcze jedna uwaga na temat diff-pdf: DiffPDF jest świetny do szybkiego wizualnego porównania zmienionego tekstu, ale praktycznie niemożliwe jest debugowanie rzeczy takich jak, powiedzmy, małe zmiany w odstępach między wierszami - diff-pdfz drugiej strony, zasadniczo umieszcza zawartość strony z obu porównywanych plików na tej samej stronie (ale w innym kolorze) - więc problemy z odstępami między wierszami można łatwo zidentyfikować ... Pozdrawiam!
sdaau

To jest świetne! Czy w ogóle można śledzić postępy w przypadku dużych plików podczas wysyłania do pliku PDF (bez użycia opcji --view)? Opcja verbose / v wydaje się nic nie robić. Również po uruchomieniu polecenia w celu wygenerowania porównywalnego pliku PDF działa on w osobnym procesie, więc nie wstrzymuje wiersza polecenia, jak zwykle dzieje się, gdy wykonujesz coś z wiersza polecenia.
Łukasza

Tego potrzebowałem. Porównuję raporty PDF o wykonaniach numerycznych, więc szukam różnic w jednej cyfrze na całej stronie. Problem polega na tym, że nie potrafię zidentyfikować cyjan, ale wiedza na temat różnicy wystarczy, aby znaleźć ją w oryginalnych raportach.
manuelvigarcia

22

Musieliśmy także porównać pliki PDF w naszej firmie i nie byliśmy zadowoleni z żadnego z rozwiązań, które znaleźliśmy, dlatego stworzyliśmy własne: i-net PDFC . To nie jest darmowe, ale oferujemy 30-dniowy okres próbny.

Jest napisany w Javie, więc jest wieloplatformowy.

zrzut ekranu

To, co ją wyróżnia, polega na tym, że porównuje zawartość w przeciwieństwie do samego tekstu (lub po prostu konwertuje plik pdf na obraz i porównuje obraz). Ma również ładne narzędzie do porównywania wizualnego.


1
Niezły kawałek oprogramowania.
Umber Ferrule,

Nie mogłem tego uruchomić. Załadowałem dwa pliki i kliknąłem przycisk porównania i nic się nie dzieje.
Craig Fisher

1
Prawidłowo obsługuje różnice między stronami. Posiada funkcję eksportu / drukowania. Różne profile porównania (w tym niestandardowe). Najedź myszką na więcej informacji o tym, co się zmieniło. Wygląda świetnie. Wady to próba / koszt i nie obsługuje ruchów. Zdecydowanie lepszy od narzędzi, które uzyskały większy głos IMO.
Jonathan Gawrych

@JathanathanGawrych dziękuje za miłe słowa! Co dokładnie rozumiesz przez „ruchy”? Może moglibyśmy dodać tę funkcjonalność ...
Epaga,

@Epaga Jeśli sekcja tekstu zostanie przeniesiona z jednej strony na drugą, zostanie wyświetlona jako usunięcie i dodatek. Na przykład porównaj propozycje c ++ N4663 i N4680 . Patrz strona 19, przykład przeniesiono z paragrafu 11 do 8, jednak jest on traktowany jako uzupełnienie / usunięcie. Aby zobaczyć rzeczywiste różnice, trzeba ręcznie wykryć, że coś się poruszyło, a następnie skopiować przykład do innego narzędzia różnicowego, aby zobaczyć, że rzeczy zostały dodane do przykładu (wyjątek nieobsługiwany, unikaj zwrotu itp.)
Jonathan Gawrych,


10

Chciałem to ostatnio zrobić (różne pliki PDF) z następującymi wymaganiami:

  • ignoruj ​​spacje, podziały wierszy, podziały stron itp.
  • łatwo zobaczyć, kiedy zmieniło się tylko kilka słów, a nie tylko całe wiersze / akapity.
  • wyjście różnicowania kolorów

Zainstalowałem pdftotext, wdiff i colordiff, dostępne w różnych menedżerach pakietów. (DarwinPorts: sudo port install poppler wdiff colordiff)

Następnie:

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

Teraz widzę, które słowa, ładnie zabarwione, się zmieniły.

Więcej informacji: http://philfreo.com/blog/how-to-view-a-color-diff-of-text-from-two-pdfs/

Zmiana:

Używanie dwdiffmoże dać nieco lepsze wyniki.

Chciałem również HTML, więc ten mały skrypt tworzy podstawową stronę internetową z odrobiną CSS.

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

Następnie otwórz q.htmlza pomocą przeglądarki internetowej.

pc-script.bash plik:

#!/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

Przykład wyników można zobaczyć tutaj

wprowadź opis zdjęcia tutaj


@philcolbourn Google+ jest zamykany, może udostępnić zrzut ekranu przez imgur?
myrdd

fwiw, natknąłem się na to małe repozytorium: github.com/tpltnt/cli-diffpdf/blob/master/cli-diffpdf.sh
myrdd

Jeśli używasz Windowsa, Maca, Fedory, openSUSE lub jesteś w stanie skompilować pliki binarne ze źródła dla swojego systemu, diff-pdf jest lepszym rozwiązaniem, które osiąga to bez potrzeby instalowania trzech różnych zależności. Nie mylić z diffpdf wymienionym w innej odpowiedzi, która działa tylko poprzez GUI.
Hashim

Pamiętaj, że pc-script.bashskrypt nie zmienia znaków w HTML.
Federico

7

Jeśli porównujesz tekst w pliku pdf, funkcja Beyond Compare to robi.

Nie za darmo, ale trwa trzydziestodniowy okres próbny.


Tak, New > Text Comparepomogło mi zobaczyć podstawowe różnice w tekście między 2 plikami PDF.
Ryan

6

Świetne narzędzie i łatwy w użyciu: Compare-It v4 (z http://www.grigsoft.com/ )

Porównuje wiele różnych rodzajów plików. Ma kilka wbudowanych konwerterów, w tym jeden do plików PDF.

Użyłem go kilka razy z zadowalającymi wynikami.

Naprawdę powinienem spróbować. Wersja próbna pozwala na porównanie przez nieograniczony czas.


1
To było dla mnie najlepsze i najłatwiejsze. Dzięki!
Ankur Jain,

Najłatwiejsze i najprostsze narzędzie, z którego korzystałem. Chciałbym móc to głosować więcej niż raz!
Czad

W przypadku plików PDF porównanie wydaje się tekstowe. Ostatnie wydanie w 2010 roku. Możesz za to zapłacić, ale pewna jest różnica - nie widziałem żadnych ograniczeń?
Zitrax,


1

Bezpłatny, nie najlepszy, ale ...

Otwieram oba dokumenty i dzielę między nimi ekran.

Nie jest to najbardziej praktyczne rozwiązanie, ale działa!

Nie widziałem dobrego pakietu DIFF dla plików PDF i chociaż ręczne i irytujące, moja droga działa!


Hum ... nie do końca to, czego szukałem, ale dzięki.
Nelson Reis,

Niestety, nie znam dobrej odpowiedzi, ale po prostu mówię, że nigdy nie znalazłem dobrego narzędzia do plików PDF.
William Hilsum

3
krzyż oczy, aby dwie kopie zachodziły na siebie, a wszelkie różnice będą migotać. : D
endolith

Zoptymalizowana wersja tej metody: otwórz oba pliki PDF na pełnym ekranie czytnika akrobatycznego za pomocą CTRL + L, a następnie użyj CTRL + F6, aby przełączać się między plikami PDF, wszystko, co się porusza, jest inne ...
Bernard Vander Beken


0

Kolejne mniej niż idealne rozwiązanie:

  1. Konwertuj oba pliki PDF na dokumenty Microsoft Word za pomocą jednej ze stron internetowych, które robią to za darmo .
  2. Użyj funkcji porównywania dokumentów w programie Word.

W zależności od złożoności formatowania w plikach PDF i rodzaju zmian, których szukasz, może to być OK.


W takim przypadku byłoby to trudne, ponieważ istnieje wiele dokumentów PDF, a modyfikacje zdarzają się bardzo często. Ale dzięki za sugestię.
Nelson Reis,

Również nie jest świetny dla wyjścia LaTeX - nie znalazłem jednego z tych konwerterów, który poprawnie obsługuje ligatury itp.
Chris H

0

Komercyjny: Możesz użyć oryginalnego programu Adobe Acrobat Professional za ogromną kwotę 449 USD:
Porównaj poprawiony plik PDF z wcześniejszą wersją .

Jeśli zdecydujesz się na Acrobat, komentarze na tej stronie odnoszą się do jego użycia.


„za ogromne 449 $” ... i ile MB miejsca na dysku?
Hugh Allen,

3
@Hugh Allen: Piekło dużo miejsca na dysku i kilkadziesiąt tysięcy wpisów w rejestrze. Prawdziwe wzdęcia.
harrymc

Zaktualizowany artykuł pomocy dla Adobe Acrobat XI: adobe.com/uk/products/acrobat/file-compare-two-pdf-files.html
Squig



0

Aby uzyskać bardzo prymitywną formę zsynchronizowanego przewijania między dwoma plikami pdf, możesz użyć następującego skryptu autohotkey, który napisałem. Zakłada się, że masz otwarte dwa okna SumatraPDF. Naciśnij w prawo, aby przejść do następnej strony w obu oknach, naciśnij w lewo, aby przejść do poprzedniej strony.

#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

0

Użyłem tego (nie idealnego, ale dla mnie wystarczającego) rozwiązania:

  • Konwertuj PDF na zwykły tekst (w moim przypadku z Adobe Reader, bezpłatna aplikacja)
  • Użyj opendiff (dołączony do XCode, bezpłatny) i zobacz zmiany


0

Dostępny jest również bezpłatny https://www.diffchecker.com/diff online .

Podkreśla jednak tylko różnice w tekście bez obrazów i formatowania. I jest zbyt słaby w dopasowywaniu niezmienionych fragmentów w dużych plikach.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.