Как получить разность двух файлов PDF в Python?

Я нахожу следующее решение простым и легким читать:

@a = (1, 2, 3);
@b = ('apple', 'orange', 'grape');
@zipped = map {($a[$_], $b[$_])} (0 .. $#a);

Я полагаю, что это также быстрее, чем решения, которые создают массив в неправильном порядке сначала и затем используют часть для переупорядочения, или решения, которые изменяют @a и @b.

7
задан Goutham 21 August 2009 в 09:01
поделиться

3 ответа

Что вы подразумеваете под «различием»? Разница в тексте PDF-файла или некоторое изменение макета (например, был изменен размер встроенной графики). Первый легко обнаружить, вторую почти невозможно получить (PDF - это ОЧЕНЬ сложный формат файла, который предлагает бесконечные возможности форматирования файлов).

Если вы хотите получить различие текста, просто запустите утилиту pdf to text на двух PDF-файлах, а затем используйте встроенную библиотеку Python diff для получения различий в преобразованных текстах.

Этот вопрос касается преобразования PDF в текст в Python: Модуль Python для преобразования PDF в текст .

Надежность этого метода зависит от используемых вами Генераторов PDF. Если вы используете, например, Adobe Acrobat и какой-нибудь PDF-Creator на основе Ghostscript для создания двух PDF-файлов из одного и того же текстового документа, вы все равно можете получить различие, хотя исходный документ был идентичным.

Это связано с тем, что существует множество способов кодирования информации исходного документа в PDF-файл, и каждый конвертер использует свой подход. Часто конвертер PDF в текст не может определить правильный текстовый поток, особенно со сложными макетами или таблицами.

вы все равно можете получить различие, хотя исходный документ был идентичным.

Это связано с тем, что существует множество способов кодирования информации исходного документа в PDF-файл, и каждый конвертер использует свой подход. Часто конвертер PDF в текст не может определить правильный текстовый поток, особенно со сложными макетами или таблицами.

вы все равно можете получить различие, хотя исходный документ был идентичным.

Это связано с тем, что существует множество способов кодирования информации исходного документа в PDF-файл, и каждый конвертер использует свой подход. Часто конвертер PDF в текст не может определить правильный текстовый поток, особенно со сложными макетами или таблицами.

6
ответ дан 6 December 2019 в 23:11
поделиться

Я не знаю вашего варианта использования, но для регрессионных тестов скрипта, который генерирует pdf с помощью reportlab, я делаю diff pdfs путем

  1. преобразования каждой страницы в изображение с помощью ghostsript
  2. Diffing каждая страница сравнивается с изображением страницы стандартного pdf, используя PIL

, например,

im1 = Image.open(imagePath1)
im2 = Image.open(imagePath2)

imDiff = ImageChops.difference(im1, im2)

Это работает в моем случае для отметки любых изменений, внесенных из-за изменений кода.

3
ответ дан 6 December 2019 в 23:11
поделиться

Посмотрите, это может быть полезно: http://pybrary.net/pyPdf/

0
ответ дан 6 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: