Windows'ta iki PDF dosyası arasındaki farklar nasıl karşılaştırılır?


205

PDF dosyalarını yan yana karşılaştırmanın ve ikisi arasındaki değişiklikleri göstermenin iyi bir yolunu biliyor musunuz?

Bunu gerçekleştirmek için Windows yazılımı arıyorum. Hem ücretsiz hem de ücretsiz ürünler gönderebilirseniz çok iyi olur.



1
Pdf piksel ile piksel karşılaştırmak için ücretsiz bir kütüphane var. Bu blogu kontrol et: testautomationguru.com/…
Vinoth S

Yanıtlar:


109

WinMerge'ı xdocdiff eklentisi ile deneyin . Her ikisi de tamamen ücretsizdir. Koşulsuz.


Aşağıdaki yorumlardan birkaçı, bir fark göremediklerini göstermektedir. Bu, eklentinin doğru yüklenmediği anlamına gelir. İşte nasıl:

  1. xdocdiffEklentinin benioku dosyasının yer aldığı dosyaları koyun (iki yer var; burada dosya isimleri değişebileceği gibi bunları listeleyemem, vs. - benioku oku)

  2. WinMerge uygulamasında, Eklentiler> Liste'ye gidin ve "Eklentileri Etkinleştir" onay kutusunu işaretleyin (bu adımda xdocdiffbenioku eksik )

  3. WinMerge'de, Eklentiler> Otomatik Paket Açma'yı seçin (bu 2. adımdan önce devre dışı bırakıldı)

Sonra karşılaştırma yaparken, karşılaştırma pencerelerinde metin dosyalarının nasıl göründüğünü göreceksiniz.


Bunu denedim, ancak xdocdiff eklentisini kullanmadığınızda hiçbir fark göremedim. WinMerge Kullanıcı Arayüzünde seçmek için bir seçenek var mı?
Umber Yüksük

1
İkili metni PDF olarak görüntülemenin amacı nedir? İ-net PDFC tarafından yapılan görsel farkları görmeyi umuyordum .
JJD

Bu tanıtıcı sütun sonlarını yapmak için herhangi bir yolu var mıydı? O olmadan, bir değişiklik birkaç taneye yükselir.
Stuart

1
Plugins > List and tick the "Enable Plugins" checkboxbenim için eksik olan buydu!
Seph

WinMerge diff pencerelerinde gösterilen PDF'lerin metin sürümlerinde birçok karakter eksik
cja

168

Linux ve Windows'ta kullanabilirsiniz diffpdf(bu diff-pdfkonudakilerden farklıdır ).

görüntü tanımını buraya girin

Ubuntu’da şunları kullanarak kurun:

sudo apt-get install diffpdf

Ayrıca bkz metin olarak veya görsel PDS karşılaştırarak bu UbuntuGeek sayfasını .

Windows için , bu Diffpdf Windows sürümü gerçekten harika çalışıyor. Http://soft.rubypdf.com/software/diffpdf adresinden indirebilirsiniz ( Win32 statik sürümüne gidin ).


12
Uygun adıdır DiffPDF (ekran görüntüsünde görüldüğü gibi) ve Qt 4 ve Poppler kütüphaneye dayanıyor böylece, olduğu taşınabilir. DiffPDF ana sayfasına bakın: qtrac.eu/diffpdf.html . Windows derlemesi hakkında bilgi burada: soft.rubypdf.com/software/diffpdf . Ve kurulum talimatınız Debian'da da çalışıyor.
przemoc

3
DiffPDF ana sayfasında artık Linux, Windows yükleyici ve Mac DMG yüklemeleri için de bağlantılar var ( qtrac.eu/diffpdf.html ).
studgeek

6
DiffPDF bence burada sunulan en gelişmiş araçtır. Sadece güzel bir grafik karşılaştırma yapmakla kalmıyor, aynı zamanda değişiklikleri diğerlerinden daha akıllıca izliyor, örneğin WinMerge için xdocdiff. Ancak, ciddi bir sorunu var: Sayfalarla karşılaştırmayı sınırlandırıyor. Yani belge A'nın 2. sayfada bazı metne, ancak bu metin belgesi B sayfa 3'e taşırsa, o zaman aracı kendi B'de A'da gitmiş ve katma düşünür demektir
gak

7
Eski ücretsiz sürümleri burada bulabilirsiniz
Shafik Yaghmour

3
Bunu PDF'ye dışa aktardığım bir roman için kullanmayı denedim. Ne yazık ki, araç yaklaşık 10 sayfadan sonra izini kaybetti ve büyük bölümler tamamen aynı olsa bile her şeyi "farklı" olarak kabul etti.
Eric J.

42

Son zamanlarda bunu buldum ve seviyorum.

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

Çapraz platform, ücretsiz ve iyi çalışıyor.

İşte diff-pdfeylem halindeki bir ekran görüntüsü - metnin PDF'de farklı olmadığını, sadece fontların (ve buna göre düzen ayarlarının) olduğunu unutmayın:

diff-pdf.png

Bu görüntüyü elde etmek için yapılan çağrı:

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

 

... bu basit Lateks dosyasını derleyerek testA.pdf / testB.pdf elde edilir pdflatex(her pdf için, yorumuna bakınız):

\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
Bununla ilgili bir not daha diff-pdf: DiffPDF , değiştirilen metnin yan yana hızlı bir şekilde görsel olarak karşılaştırılması için mükemmeldir, ancak satır boşluklarında küçük değişiklikler yapılması gibi hataların giderilmesi neredeyse imkansızdır - diff-pdfdiğer yandan, temel olarak sayfa içeriğini koymak aynı sayfadaki her iki karşılaştırılmış dosyadan (ancak farklı renkte) - böylece satır aralığı sorunları kolayca tanımlanabilir ... Şerefe!
sdaau

Bu harika! Bir PDF dosyasına çıkarken büyük dosyalardaki ilerlemeyi izlemek için yine de var mı (--view seçeneğini kullanmadan)? Ayrıntılı seçenek / v hiçbir şey yapmıyor gibi görünüyor. Ayrıca, karşılaştırmalı bir PDF oluşturmak için komutu çalıştırdığınızda ayrı bir işlemde çalışır, böylece komut isteminde bir şey çalıştırdığınızda normalde olduğu gibi komut istemini duraklatmaz.
Luke

İhtiyacım olan bu. Sayısal işlemlerle ilgili PDF raporlarını karşılaştırıyorum, bu nedenle tüm sayfada bir basamakta farklılıklar arıyorum. Sorun şu ki, mavi karakterleri tanımlayamıyorum, ancak farkın nerede olduğunu bilmek, orijinal raporlarda onu bulmak için yeterli.
manuelvigarcia

22

Ayrıca PDF'leri şirketimizde karşılaştırmamız gerekti ve bulduğumuz çözümlerden hiç memnun kalmadık , bu yüzden kendimiz yaptık: i-net PDFC . Ücretsiz değil, ancak 30 günlük bir deneme sunuyoruz.

Java ile yazılmış, yani platformlar arası.

ekran görüntüsü

Özel kılan, içeriği yalnızca metnin tersine (veya sadece pdf'i bir resme dönüştürüp, resimyi karşılaştırarak) karşılaştırmasıdır. Aynı zamanda güzel bir görsel karşılaştırma aracına sahiptir.


1
Yazılımın biraz güzel.
Umber Yüksük

Bunu işe alamadım. İki dosyayı yükledi ve karşılaştır düğmesini tıkladığınızda hiçbir şey olmuyor.
Craig Fisher

1
Çapraz sayfa farklarını doğru şekilde işler. Bir dışa aktarma / yazdırma işlevi vardır. Farklı karşılaştırma profilleri (özel dahil). Mouse over, nelerin değiştiği konusunda size daha fazla ayrıntı verir. Harika görünüyor. Dezavantajları deneme / maliyettir ve hamle yapmaz. Kesinlikle daha yüksek araçlardan üstün IMO oy verdi.
Jonathan Gawrych

@JonathanGawrych tür sözler için teşekkürler! Tam olarak "hamle" derken ne demek istiyorsun? Belki bu işlevselliği ekleyebiliriz ...
Epaga

@Epaga Metnin bir bölümü bir sayfadan diğerine taşınırsa, silme ve ekleme olarak görüntülenir. Örneğin, c ++ önerilerini N4663 ve N4680'i karşılaştırın . Sayfa 19'a bakın, bir örnek paragraf 11'den 8'e taşınır, ancak bir ekleme / silme olarak kabul edilir. Gerçek farklılıkları görmek için, kişinin taşınan bir şeyi manuel olarak algılaması, daha sonra örneğe şeylerin eklendiğini görmek için örneği başka bir diff aracına kopyalamanız gerekir (unhandled_exception, return_void, vs.)
Jonathan Gawrych


10

Son zamanlarda bunu (zorunlu PDF'ler) şu şartlarla yapmak istedim:

  • boşlukları, satır sonlarını, sayfa sonlarını vb. yoksay
  • sadece satırların / paragrafların tamamını değil, sadece birkaç kelimenin ne zaman değiştiğini kolayca görün.
  • renk farkı çıkışı

Çeşitli paket yöneticilerinde bulunan pdftotext, wdiff ve colordiff'i kurdum. (MacPorts ile: sudo port install poppler wdiff colordiff)

Sonra:

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

Şimdi hangi kelimelerin güzel renkle değiştiğini görebiliyorum.

Daha fazla ayrıntı: http://philfreo.com/blog/how-to-view-a-color-diff-of-text-from-two-pdfs/

Varyasyon:

Kullanımı dwdiffbiraz daha iyi sonuçlar üretebilir.

Ayrıca HTML çıktısı almak istedim, böylece bu küçük betik biraz CSS içeren basit bir web sayfası oluşturuyor.

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

Ardından q.htmlweb tarayıcınızla açın.

pc-script.bash dosya:

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

Çıktı örneği burada görülebilir

görüntü tanımını buraya girin


@philcolbourn Google+ kapatılıyor, ekran resmini imgur aracılığıyla paylaşıyor olabilirsiniz?
myrdd

fwiw, bu küçük depoya
myrdd

Windows, Mac, Fedora, openSUSE kullanıyorsanız veya ikili dosyaları sisteminizin kaynağından derleyebiliyorsanız , diff-pdf , üç farklı bağımlılık kurmanıza gerek kalmadan bunu yapan daha iyi bir çözümdür. Yalnızca GUI ile çalışan başka bir cevapta belirtilen diffpdf ile karıştırılmamalıdır.
Hashim

Not pc-script.bashkomut HTML karakterlerden kurtulmak etmez.
Federico,


6

Harika bir araç ve kullanımı kolay: Compare-It v4 ( http://www.grigsoft.com/ adresinden )

Birçok farklı dosya türünü karşılaştırır. Bir PDF dosyaları için de dahil olmak üzere bazı yerleşik dönüştürücülere sahiptir.

Tatmin edici sonuçlarla birkaç kez kullandım.

Bunu gerçekten denemelisin. Deneme sürümü, sınırsız bir süre için karşılaştırmaya izin verir.


1
Bu benim için en iyisi ve en kolayıydı. Teşekkürler!
Ankur Jain

Kullandığım en kolay ve en basit araçtır. Keşke bunu bir kereden fazla yenebilseydim!
Chad

PDF için karşılaştırma metinsel görünmektedir. 2010'daki son sürüm. Bunun bedelini ödeyebilirsiniz, ancak bunun ne gibi bir şey olduğuna emin olabilirsiniz - Herhangi bir sınırlama görmedim mi?
Zitrax


1

Ücretsiz, en iyisi değil ama ...

Her iki dokümanı da açıyorum ve ekranları birbirine yaslandırıyorum.

En pratik çözüm değil ama işe yarıyor!

PDF dosyaları için iyi bir DIFF paketi görmedim ve manuel ve sinir bozucu iken, yolum işe yarıyor!


Hum ... aradığım şey değil, ama teşekkürler.
Nelson Reis

Üzgünüm, iyi bir cevap olmadığını biliyorum ama sadece PDF dosyaları için iyi bir araç bulamadığımı söylüyorum.
William Hilsum

3
iki kopya üst üste binecek şekilde gözlerinizi çaprazlayın; : D
Endolit

Bu yöntemin optimize edilmiş versiyonu: her iki PDF dosyasını da CTRL + L aracılığıyla tam ekran Acrobat Reader'da açın, sonra PDF dosyaları arasında geçiş yapmak için CTRL + F6 tuşlarını kullanın, hareket eden her şey farklı ...
Bernard Vander Beken


0

İdeal çözümden başka bir az:

  1. Her iki PDF'yi de ücretsiz yapan web sitelerinden birini kullanarak Microsoft Word belgelerine dönüştürün .
  2. Word'de belge karşılaştırma işlevini kullanın .

PDF’lerde biçimlendirmenin ne kadar karmaşık olduğuna ve aradığınız değişiklik türüne bağlı olarak, bu doğru olabilir.


Bu durumda zor olacaktır, çünkü birçok PDF belgesi vardır ve değişiklikler çok sık gerçekleşir. Ancak öneri için teşekkürler.
Nelson Reis

Ayrıca LaTeX çıkışı için de iyi değil - bitişik harfleri vb. İşleyen bu dönüştürücülerden birini bulamadım.
Chris H,

0

Ticari: Orijinal Adobe Acrobat Professional'ı kullanabilirsiniz, çok iyi bir $ 449 için:
Düzeltilmiş bir PDF'yi önceki bir sürümle karşılaştırın .

Acrobat'a karar verirseniz, bu sayfadaki yorumlar onun kullanımıyla ilgilidir.


"bir dolarlık 449 dolar için" ... ve kaç MB disk alanı?
Hugh Allen

3
@Hugh Allen: Çok fazla disk alanı ve kayıt defterine birkaç on binlerce giriş. Gerçek bir bloatware.
harrymc

Adobe Acrobat XI için güncellenmiş yardım makalesi: adobe.com/uk/products/acrobat/file-compare-two-pdf-files.html
Squig



0

İki pdf dosyası arasında ilkel senkronize kaydırma yapmak için yazdığım aşağıdaki autohotkey betiğini kullanabilirsiniz. İki SumatraPDF penceresinin açık olduğunu varsayar. Her iki pencerede bir sonraki sayfaya gitmek için sağa, bir önceki sayfa için sola basın.

#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

Bu (ideal olmayan, fakat benim için yeterli) çözümü kullandım:

  • PDF'yi düz metne dönüştürün (benim durumumda Adobe Reader, ücretsiz uygulama ile)
  • Opendiff kullanın (XCode ile birlikte verilir, ücretsiz) ve değişiklikleri görün


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.