Làm cách nào để so sánh sự khác biệt giữa hai tệp PDF trên Windows?


205

Bạn có biết một cách hay để so sánh các tệp PDF cạnh nhau và hiển thị các sửa đổi giữa hai tệp không?

Tôi đang tìm kiếm phần mềm Windows để thực hiện điều này. Sẽ thật tuyệt nếu bạn có thể đăng cả sản phẩm miễn phí và không miễn phí.



1
Có một thư viện MIỄN PHÍ để so sánh pixel pdf theo pixel. Kiểm tra blog này: testautomationguru.com/ từ
Vinoth S

Câu trả lời:


109

Hãy thử WinMerge với plugin xdocdiff . Cả hai đều hoàn toàn miễn phí. Không có chuỗi đính kèm.


Một vài ý kiến ​​dưới đây cho thấy họ không thấy bất kỳ sự khác biệt nào. Điều đó có nghĩa là trình cắm không được cài đặt chính xác. Đây là cách thực hiện:

  1. Đặt các tệp mà xdocdifftệp readme của plugin nói để đặt chúng (có hai vị trí; tôi sẽ không liệt kê chúng ở đây vì tên tệp có thể thay đổi, v.v. - đọc readme)

  2. Trong WinMerge, đi tới Plugins> List và đánh dấu vào hộp kiểm "Kích hoạt plugin" (bước này bị thiếu trong xdocdiffreadme)

  3. Trong WinMerge, chọn Plugin> Tự động giải nén (điều này đã bị vô hiệu hóa trước bước 2)

Sau đó, khi so sánh, bạn sẽ thấy những gì trông giống như các tệp văn bản trong các cửa sổ so sánh.


Đã thử điều này nhưng không thể thấy bất kỳ sự khác biệt nào khi không sử dụng plugin xdocdiff. Có tùy chọn nào để chọn trong UI của WinMerge không?
Umber Ferrule

1
Mục đích của việc xem văn bản nhị phân trong PDF là gì? Tôi dự kiến ​​sẽ thấy sự khác biệt trực quan như được thực hiện bởi i-net PDFC .
JJD

Có cách nào để làm cho cột này xử lý? Không có nó, một tầng thay đổi thành nhiều.
Stuart

1
Plugins > List and tick the "Enable Plugins" checkboxlà những gì đã mất cho tôi!
Seph

Nhiều ký tự bị thiếu trong các phiên bản văn bản của các tệp PDF được hiển thị trong các cửa sổ khác của WinMerge
cja

168

Trên Linux và Windows, bạn có thể sử dụng diffpdf(khác với diff-pdfđề cập trong chủ đề này).

nhập mô tả hình ảnh ở đây

Trên Ubuntu cài đặt bằng cách sử dụng:

sudo apt-get install diffpdf

Xem thêm trang UbuntuGeek này để so sánh pds bằng văn bản hoặc trực quan .

Đối với Windows , phiên bản Windows Diffpdf này hoạt động thực sự tuyệt vời. Bạn có thể tải xuống từ http://soft.rubypdf.com/software/diffpdf (cuộn xuống phiên bản tĩnh Win32 ).


12
Tên thích hợp là DiffPDF (như trong ảnh chụp màn hình) và nó dựa trên thư viện Qt 4 và Poppler, do đó nó có thể mang theo được. Xem trang chủ DiffPDF : qtrac.eu/diffpdf.html . Thông tin về bản dựng Windows có tại đây: soft.rubypdf.com/software/diffpdf . Và hướng dẫn cài đặt của bạn cũng hoạt động trên Debian.
przemoc

3
Trang chủ DiffPDF hiện có các liên kết cho Linux, trình cài đặt Windows và Mac DMG cũng cài đặt ( qtrac.eu/diffpdf.html ).
studgeek

6
DiffPDF là công cụ tiên tiến nhất được trình bày ở đây, theo ý kiến ​​của tôi. Nó không chỉ cung cấp một so sánh đồ họa đẹp mà còn theo dõi các thay đổi thông minh hơn các thứ khác, ví dụ xdocdiff cho WinMerge. Tuy nhiên, nó có một vấn đề nghiêm trọng: Nó giới hạn việc so sánh với các trang. Điều đó có nghĩa là, nếu bạn có một số văn bản trên trang 2 của tài liệu A, nhưng văn bản này chuyển sang trang 3 trong tài liệu B, thì công cụ nghĩ rằng nó đã biến mất trong A và được thêm vào B.
caw

7
Các phiên bản miễn phí cũ hơn có thể được tìm thấy ở đây
Shafik Yaghmour

3
Tôi đã thử sử dụng nó cho một cuốn tiểu thuyết mà tôi xuất sang PDF. Thật không may, công cụ bị mất dấu sau khoảng 10 trang và coi mọi thứ là "khác biệt", mặc dù các đoạn lớn hoàn toàn giống nhau.
Eric J.

42

Gần đây tôi đã tìm thấy nó và tôi thích nó.

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

Đa nền tảng, miễn phí, và hoạt động tốt.

Dưới đây là một ảnh chụp màn hình diff-pdfđang hoạt động - lưu ý rằng văn bản không khác nhau trong PDF, mà chỉ có phông chữ (và tương ứng, cài đặt bố cục):

diff-pdf.png

Cuộc gọi để có được hình ảnh đó là:

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

 

... nơi testA.pdf / testB.pdf có được bằng cách biên dịch tệp latex đơn giản này với pdflatex(phù hợp với từng pdf, xem bình luận):

\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
Chỉ cần lưu ý thêm về diff-pdf: DiffPDF rất tốt để so sánh trực quan nhanh chóng với văn bản đã thay đổi, nhưng thực tế không thể gỡ lỗi những thứ như, nói, những thay đổi nhỏ trong khoảng cách dòng - diff-pdfmặt khác, về cơ bản đặt nội dung trang từ cả hai tệp được so sánh trên cùng một trang (nhưng có màu khác nhau) - vì vậy các vấn đề về khoảng cách dòng có thể dễ dàng được xác định ... Chúc mừng!
sdaau

Điều đó thật tuyệt! Có cách nào để theo dõi tiến trình trên các tệp lớn khi xuất ra tệp PDF (không sử dụng tùy chọn --view) không? Tùy chọn verbose / v dường như không làm gì cả. Ngoài ra, khi bạn chạy lệnh để tạo một tệp PDF so sánh, nó sẽ chạy trong một quy trình riêng để nó không tạm dừng dấu nhắc lệnh như thường xảy ra khi bạn thực hiện một cái gì đó từ dấu nhắc.
LukeS

Đây là cái tôi cần. Tôi đang so sánh các báo cáo PDF về thực thi số, vì vậy tôi đang tìm kiếm sự khác biệt trong một chữ số trong toàn bộ trang. Vấn đề là, tôi không thể xác định các ký tự màu lục lam, nhưng biết sự khác biệt ở đâu là đủ để tìm thấy nó trong các báo cáo ban đầu.
manuelvigarcia

22

Chúng tôi cũng cần so sánh các tệp PDF tại công ty của chúng tôi và không hài lòng với bất kỳ giải pháp nào chúng tôi tìm thấy, vì vậy chúng tôi đã tự tạo ra: i-net PDFC . Nó không miễn phí, nhưng chúng tôi cung cấp bản dùng thử 30 ngày.

Nó được viết bằng Java, vì vậy nó là nền tảng chéo.

ảnh chụp màn hình

Điều làm cho nó đặc biệt là nó so sánh nội dung trái ngược với chỉ văn bản (hoặc chỉ chuyển đổi pdf thành hình ảnh và so sánh hình ảnh). Nó cũng có một công cụ so sánh trực quan tốt đẹp.


1
Một chút tốt đẹp của phần mềm.
Umber Ferrule

Tôi không thể làm điều này để làm việc. Tải hai tệp và nhấp vào nút so sánh và không có gì xảy ra.
Craig Fisher

1
Xử lý chính xác sự khác biệt giữa các trang. Có chức năng xuất / in. Hồ sơ so sánh khác nhau (bao gồm cả tùy chỉnh). Chuột qua cho bạn biết thêm chi tiết về những gì đã thay đổi. Trông thật tuyệt. Hạn chế là thử nghiệm / chi phí và không xử lý di chuyển. Chắc chắn là vượt trội so với các công cụ IMO được bình chọn cao hơn.
Jonathan Gawrych

@JonathanGawrych cảm ơn vì những lời tốt đẹp! Chính xác thì bạn có ý nghĩa gì khi "di chuyển"? Có lẽ chúng ta có thể thêm chức năng đó ...
Epaga

@Epaga Nếu một phần văn bản được di chuyển từ trang này sang trang khác, nó sẽ được hiển thị dưới dạng xóa và bổ sung. Ví dụ so sánh các đề xuất c ++ N4663N4680 . Xem xung quanh trang 19, một ví dụ được chuyển từ đoạn 11 đến 8, tuy nhiên, nó được coi là một bổ sung / xóa. Để thấy sự khác biệt thực tế, người ta sẽ cần phát hiện thủ công một cái gì đó đã di chuyển, sau đó sao chép ví dụ sang một công cụ khác để thấy rằng mọi thứ đã được thêm vào ví dụ (unsandled_exception, return_void, v.v.)
Jonathan Gawrych

12

Bạn cũng có thể sử dụng Adobe Acrobat X. Nó được tích hợp chức năng so sánh PDF trong "Xem -> So sánh tài liệu.


1
Acrobat hay Acrobat Reader? phần mềm Reader không có cái này
Jason S

4
AcrobatX Pro là phiên bản duy nhất có tính năng này. "Chỉ đơn giản là AcrobatX" thì không.
Carl Witthoft

2
Trong Acrobat 9 Pro, nó nằm trong menu Tài liệu.
Svinto


10

Tôi muốn làm điều này (diff PDF) gần đây với các yêu cầu sau:

  • bỏ qua khoảng trắng, ngắt dòng, ngắt trang, v.v.
  • dễ dàng nhìn thấy khi chỉ một vài từ thay đổi, không chỉ toàn bộ dòng / đoạn.
  • đầu ra khác màu

Tôi đã cài đặt pdftotext, wdiff và colordiff, có sẵn trong các trình quản lý gói khác nhau. (Với macports sudo port install poppler wdiff colordiff:)

Sau đó:

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

Bây giờ tôi có thể thấy những từ, màu sắc đẹp, đã thay đổi.

Thêm chi tiết: http://philfreo.com/blog/how-to-view-a-color-diff-of-text-from-two-pdfs/

Sự biến đổi, biến hoá, thay đổi:

Sử dụng dwdiffcó thể tạo ra kết quả tốt hơn một chút.

Tôi cũng muốn đầu ra HTML để tập lệnh nhỏ này tạo ra một trang web cơ bản với một chút CSS.

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

Sau đó mở q.htmlbằng trình duyệt web của bạn.

pc-script.bash tập tin:

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

Một ví dụ về đầu ra có thể được nhìn thấy ở đây

nhập mô tả hình ảnh ở đây


@philcolbourn Google+ đang bị tắt, có thể chia sẻ ảnh chụp màn hình qua imgur?
21:30

fwiw, tôi đã tình cờ phát hiện ra repo nhỏ này: github.com/tpltnt/cli-diffpdf/blob/master/cli-diffpdf.sh
myrdd

Nếu bạn đang sử dụng Windows, Mac, Fedora, openSUSE hoặc bạn có khả năng biên dịch các tệp nhị phân từ nguồn cho hệ thống của mình, diff-pdf là một giải pháp tốt hơn để thực hiện việc này mà không cần phải cài đặt ba phụ thuộc khác nhau. Không nên nhầm lẫn với diffpdf được đề cập trong một câu trả lời khác, chỉ hoạt động thông qua GUI.
Hashim

Lưu ý rằng pc-script.bashtập lệnh không thoát các ký tự cho HTML.
Federico

7

Nếu bạn đang so sánh văn bản trong pdf, thì Beyond So sánh thực hiện điều này.

Không miễn phí, nhưng có một thử nghiệm ba mươi ngày.


Đúng, New > Text Compaređã giúp tôi thấy sự khác biệt cơ bản trong văn bản giữa 2 tệp PDF.
Ryan

6

Công cụ tuyệt vời và dễ sử dụng: So sánh-Nó v4 (từ http://www.grigsoft.com/ )

So sánh nhiều loại tập tin khác nhau. Nó có một số bộ chuyển đổi tích hợp, bao gồm một bộ chuyển đổi cho các tệp PDF.

Tôi đã sử dụng nó khá nhiều lần với kết quả hài lòng.

Thực sự nên thử điều này. Phiên bản dùng thử cho phép so sánh không giới hạn thời gian.


1
Đây là điều tốt nhất và dễ nhất đối với tôi. Cảm ơn!
Ankur Jain

Công cụ dễ nhất và đơn giản nhất tôi tìm thấy để sử dụng. Tôi ước tôi có thể nâng cao điều này hơn một lần!
Chad

Đối với PDF, sự so sánh dường như là văn bản. Lần phát hành cuối cùng vào năm 2010. Bạn có thể trả tiền cho nó nhưng chắc chắn sự khác biệt là gì - Tôi không thấy bất kỳ giới hạn nào?
Zitrax


1

Miễn phí, Không phải tốt nhất nhưng ...

Tôi mở cả hai tài liệu lên và để chúng tách màn hình với nhau.

Không phải là giải pháp thiết thực nhất, nhưng nó hoạt động!

Tôi chưa thấy gói DIFF tốt cho các tệp PDF và trong khi thủ công và gây phiền nhiễu, cách của tôi hoạt động!


Hum ... không hoàn toàn những gì tôi đang tìm kiếm, nhưng cảm ơn.
Nelson Reis

Xin lỗi, tôi biết không phải là một câu trả lời hay nhưng chỉ nói rằng tôi chưa bao giờ tìm thấy một công cụ tốt cho các tệp PDF.
William Hilsum

3
lác mắt để hai bản sao trùng nhau, và bất kỳ sự khác biệt nào sẽ xuất hiện nhấp nháy. : D
endolith

Phiên bản được tối ưu hóa của phương pháp này: mở cả hai tệp PDF trong toàn bộ trình đọc acrobat qua CTRL + L, sau đó sử dụng CTRL + F6 để chuyển đổi giữa các tệp PDF, mọi thứ di chuyển đều khác nhau ...
Bernard Vander Beken


0

Một giải pháp ít hơn lý tưởng:

  1. Chuyển đổi cả PDF thành tài liệu Microsoft Word bằng một trong những trang web thực hiện điều này miễn phí .
  2. Sử dụng chức năng so sánh tài liệu trong Word.

Tùy thuộc vào mức độ phức tạp của định dạng trong các tệp PDF và loại thay đổi bạn đang tìm kiếm, điều này có thể ổn.


Trong trường hợp này sẽ khó, vì có rất nhiều tài liệu PDF và việc sửa đổi xảy ra rất thường xuyên. Nhưng cảm ơn vì lời đề nghị.
Nelson Reis

Cũng không tuyệt vời cho đầu ra LaTeX - Tôi chưa tìm thấy một trong những bộ chuyển đổi này xử lý chữ ghép vv.
Chris H

0

Thương mại: Bạn có thể sử dụng Adobe Acrobat Professional gốc, với mức giá khổng lồ $ 449:
So sánh bản PDF đã sửa đổi với phiên bản cũ hơn .

Nếu bạn quyết định về Acrobat, các bình luận trên trang này phù hợp với việc sử dụng nó.


"Với số tiền khổng lồ $ 449" ... và bao nhiêu MB dung lượng đĩa?
Hugh Allen

3
@Hugh Allen: Một địa ngục có rất nhiều dung lượng đĩa và vài chục ngàn mục trong sổ đăng ký. Một bloatware thực sự.
harrymc

Bài viết trợ giúp được cập nhật cho Adobe Acrobat XI: adobe.com/uk/products/acrobat/file-compare-two-pdf-files.html
Squig

Và dù sao nó cũng có lỗi: forum.adobe.com/thread/647854?tstart=0
Michal Sokolowski


0

Đối với một hình thức cuộn đồng bộ rất nguyên thủy giữa hai tệp pdf, bạn có thể sử dụng tập lệnh autohotkey sau đây mà tôi đã viết. Nó giả sử bạn có hai cửa sổ SumatraPDF mở. Nhấn phải để đến trang tiếp theo trong cả hai cửa sổ, nhấn trái cho trang trước.

#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

Tôi đã sử dụng giải pháp này (không lý tưởng, nhưng đối với tôi là đủ):

  • Chuyển đổi PDF thành văn bản thuần túy (trong trường hợp của tôi với Adobe Reader, ứng dụng miễn phí)
  • Sử dụng opendiff (bao gồm XCode, miễn phí) và xem các thay đổi


0

Ngoài ra còn có https://www.diffchecker.com/diff trực tuyến miễn phí .

Nhưng nó chỉ làm nổi bật sự khác biệt văn bản mà không có hình ảnh và định dạng. Và nó quá yếu trong việc kết hợp các đoạn không thay đổi trong các tệp lớn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.