197

Знаете ли вы хороший способ сравнить PDF-файлы бок о бок и показать изменения между ними?

Я ищу программное обеспечение Windows для достижения этой цели. Было бы здорово, если вы можете размещать как бесплатные, так и несвободные продукты.

18 ответов18

166

В Linux и Windows вы можете использовать diffpdf (который отличается от diff-pdf упомянутого в этой теме).

На Ubuntu установить с помощью:

sudo apt-get install diffpdf

Смотрите далее эту страницу UbuntuGeek о сравнении pds текстуально или визуально.

Для Windows эта версия Diffpdf для Windows работает очень хорошо. Вы можете скачать с http://soft.rubypdf.com/software/diffpdf (прокрутите вниз до статической версии Win32).

104

Попробуйте WinMerge с плагином xdocdiff . Оба абсолютно бесплатны. Безвоздмездно.


Несколько комментариев ниже предполагают, что они не видят никакой разницы. Это означает, что плагин установлен неправильно. Вот как:

  1. Поместите файлы в файл readme плагина xdocdiff для их размещения (есть два места; я не буду перечислять их здесь, так как имена файлов могут изменяться и т.д. - прочитайте readme)

  2. В WinMerge перейдите в «Плагины> Список» и установите флажок "Включить плагины" (этот шаг отсутствует в файле readme для xdocdiff ).

  3. В WinMerge выберите "Плагины"> "Автоматическая распаковка" (это было отключено до шага 2)

Затем при сравнении вы увидите, как выглядят текстовые файлы в окнах сравнения.

37

Я недавно нашел это, и мне это нравится.

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

Кроссплатформенный, бесплатный и хорошо работает.

Вот скриншот diff-pdf в действии - обратите внимание, что текст в PDF не отличается, а только шрифты (и, соответственно, настройки макета):

Diff-pdf.png

Призыв получить это изображение был:

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

 

... где testA.pdf/testB.pdf получают путем компиляции этого простого латексного файла с pdflatex (соответственно для каждого pdf см. комментарий):

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

Нам также нужно было сравнить PDF-файлы в нашей компании, и мы не были удовлетворены каким-либо из найденных нами решений, поэтому мы сделали свое собственное: i-net PDFC. Это не бесплатно, но мы предлагаем 30-дневную пробную версию.

Он написан на Java, поэтому он кроссплатформенный.

Скриншот

Что делает его особенным, так это то, что он сравнивает содержимое, а не только текст (или просто конвертирует pdf в изображение и сравнивает изображение). У этого также есть хороший визуальный инструмент сравнения.

12

Вы также можете использовать Adobe Acrobat X. Он имеет встроенную функцию сравнения PDF в «Просмотр -> Сравнить документы».

8

Я хотел сделать это (diff PDFs) недавно с этими требованиями:

  • игнорировать пробелы, разрывы строк, разрывы страниц и т. д.
  • легко увидеть, когда изменилась пара слов, а не только целые строки / абзацы.
  • вывод цветового различия

Я установил pdftotext, wdiff и colordiff, доступные в различных менеджерах пакетов. (С помощью macports: sudo port install poppler wdiff colordiff)

Затем:

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

Теперь я вижу, какие слова, красиво окрашенные, изменились.

Более подробная информация: http://philfreo.com/blog/how-to-view-a-color-diff-of-text-from-two-pdfs/

Вариация:

Использование dwdiff может дать немного лучшие результаты.

Я также хотел вывод HTML, поэтому этот крошечный скрипт создает базовую веб-страницу с небольшим количеством CSS.

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

Затем откройте q.html с помощью веб-браузера.

Файл pc-script.bash :

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

Пример вывода можно увидеть здесь

7

Если вы сравниваете текст внутри PDF, то Beyond Compare делает это.

Не бесплатно, но есть 30-дневная пробная версия.

6

Отличный инструмент и простой в использовании: Compare-It v4 (с http://www.grigsoft.com/)

Сравнивает много разных видов файлов. Он имеет несколько встроенных конвертеров, в том числе один для PDF-файлов.

Я использовал это довольно много раз с удовлетворительными результатами.

На самом деле следует попробовать это. Пробная версия позволяет сравнивать неограниченное время.

2

Не знаю, но есть также ComparePDF (не бесплатно, но возможна 30-дневная пробная версия): http://www.compare-pdf.com/download.htm

1

Бесплатно, не самый лучший, но ...

Я открываю оба документа и разделяю их друг на друга.

Не самое практичное решение, но оно работает!

Я не видел хорошего пакета DIFF для PDF-файлов, и, несмотря на то, что он ручной и надоедливый, мой способ работает!

1

Здесь вы можете загрузить два файла PDF и получить третий, который покажет вам разницу между ними.

Работает на всех платформах, ничего не изучать и не устанавливать и бесплатно.

https://synodins.com/apps/pdf_difference/intro.html

0

Для очень примитивной формы синхронизированной прокрутки между двумя файлами PDF вы можете использовать следующий скрипт autohotkey, который я написал. Предполагается, что у вас открыто два окна SumatraPDF. Нажмите вправо, чтобы перейти на следующую страницу в обоих окнах, нажмите влево для перехода на предыдущую страницу.

#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

Я использовал это (не идеальное, но для меня достаточное) решение:

  • Конвертировать PDF в обычный текст (в моем случае с Adobe Reader, бесплатное приложение)
  • Используйте opendiff (входит в XCode, бесплатно) и смотрите изменения
0

Еще одно не идеальное решение:

  1. Конвертируйте оба PDF-файла в документы Microsoft Word, используя один из веб-сайтов, которые делают это бесплатно.
  2. Используйте функцию сравнения документов в Word.

В зависимости от того, насколько сложным является форматирование в PDF-файлах и какие изменения вы ищете, это может быть нормально.

0

Коммерческий: Вы можете использовать оригинальный Adobe Acrobat Professional, за колоссальные $ 449:
Сравните исправленный PDF с более ранней версией.

Если вы выбираете Acrobat, комментарии на этой странице имеют отношение к его использованию.

0

pdf-diff - это пакет Python для этой цели.

0

Diff Doc - не бесплатно.

0

Существует также бесплатный онлайн https://www.diffchecker.com/diff.

Но он подчеркивает только различия текста без изображений и форматирования. И он слишком слаб в сопоставлении неизмененных фрагментов в больших файлах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .