Инструмент для сравнения большого количества файлов PDF?
Мне нужно сравнить большое количество PDF-файлов для этого оптического контента. Поскольку файлы PDF были созданы на разных платформах и с разными версиями программного обеспечения, существуют структурные различия. Например:
- fragmentация текста может быть разной
- порядок записи может быть различным
- позиция может отличаться от некоторых пикселей
Он должен сравнивать контент, как человек, а не внутреннюю структуру. Я хочу проверить регрессии между различными версиями генератора PDF, которые мы использовали.
- Что такое тест в Турции?
- Как добавить тестовое покрытие к частному конструктору?
- Запустить одно исполнение плагина Maven?
- Ошибка java.lang.RuntimeException: Stub! в Android с тестированием Fitnesse
- Можно ли запустить несколько версий Google Chrome на одном компьютере? (Mac или Windows)
- Зависимость от теста
- Сценарии сценариев установки
- Как spec / rails_helper.rb отличается от spec / spec_helper.rb? Нужно ли мне это?
- Ошибка тестирования студийной студии Apple Studio: пустой тестовый комплект
- Переопределить Java System.currentTimeMillis для проверки кода с временным кодом
- Получение контекста в AndroidTestCase или InstrumentationTestCase в функции тестирования устройства Android Studio
- Как разработать и протестировать приложение, отправляющее электронные письма (без заполнения чей-то почтового ящика с тестовыми данными)?
- Автоматизированное тестирование веб-интерфейса
Потому что нет такого инструмента, который мы написали. Вы можете скачать i-net PDF-контент и использовать его. Надеюсь, что поможет другим с той же проблемой. Если у вас есть проблемы с этим или у вас есть обратная связь для нас, вы можете обратиться в нашу службу поддержки.
На самом деле есть инструмент diffpdf.
http://www.qtrac.eu/diffpdf.html
Его слабость заключается в том, что он не реагирует хорошо, когда добавления делают новый перенос текста частично на новую страницу. Например, если старую страницу 4 следует сравнить с концом страницы 5 и началом страницы 6, вам нужно будет сдвинуть параметры для сравнения двух срезов отдельно.
Я использовал домашний скрипт, который
- конвертирует все страницы в два PDF-файла в растровые изображения
- цветные страницы PDF 1 до красно-белых
- изменяет белый на прозрачный на страницах PDF 2
- накладывает каждую страницу из PDF 2 поверх соответствующей страницы из PDF 1
- запускает преобразование / раскраску и наложение параллельно на несколько ядер
Используемое программное обеспечение:
- GhostScript для конвертации PDF-to-bitmap
- ImageMagick для раскраски, прозрачности и наложения
- inotify для синхронизации параллельных процессов
- любой просмотрщик изображений с поддержкой PNG для просмотра результата
Плюсы:
- простая реализация
- все используемые инструменты – с открытым исходным кодом
- отлично подходит для поиска небольших различий в макете
Минусы:
- конверсия медленная
- основные различия между PDF-файлами (например, разбиение на страницы) приводят к беспорядку
- растровые изображения не масштабируются
- работает только для черно-белого текста и диаграмм
- нет простого в использовании графического интерфейса пользователя
Я искал инструмент, который будет делать то же самое на уровне PDF / PostScript.
Вот как наш скрипт вызывает утилиты (обратите внимание, что ImageMagick использует GhostScript за кулисами для преобразования PDF-> PNG):
$ convert -density 150x150 -fill red -opaque black +antialias 1.pdf back%02d.png $ convert -density 150x150 -transparent white +antialias 2.pdf front%02d.png $ composite front01.png back01.png result01.png # do this for all pairs of images
Кажется, я не вижу этого здесь, так вот: через суперпользователя: как сравнить различия между двумя файлами PDF? (ответ # 229891, by @slestak) , есть
https://github.com/vslavik/diff-pdf
(шаги сборки для Ubuntu Natty можно найти в get-diff-pdf.sh )
Насколько я вижу, он в основном накладывает текст / графику на каждую страницу в pdf (-ых), позволяя вам легко увидеть, были ли какие-либо изменения …
Ура!
Мы также использовали pdftotext (см. Ответ Sklivvz) для создания ASCII-версий PDF-файлов и wdiff для их сравнения.
Используйте переключатель -layout
pdftotext для повышения удобочитаемости и получите некоторое представление об изменениях в макете.
Чтобы получить хороший цветной вывод из wdiff, используйте этот сценарий оболочки:
#!/bin/sh RED=$'\e'"[1;31m" GREEN=$'\e'"[1;32m" RESET=$'\e'"[0m" wdiff -w$RED -x$RESET -y$GREEN -z$RESET -n $1 $2
Я думаю, что ваш лучший подход состоял бы в том, чтобы преобразовать PDF в изображения с приемлемым разрешением и сравнить изображение.
Чтобы создавать изображения из PDF, вы можете использовать Adobe PDF Library или предлагаемое решение для лучшего преобразования файлов PDF в файлы tiff .
Чтобы сравнить сгенерированные файлы TIFF, я нашел GNU tiffcmp (для части windows GnuWin32 tiff ) и tiffinfo сделал хорошую работу. Используйте tiffcmp -l и подсчитайте количество строк вывода, чтобы найти какие-либо различия. Если вы довольны небольшим количеством изменений контента (например, сглаживания сглаживания), используйте tiffinfo для подсчета общего количества пикселей, и затем вы можете получить процентное значение разницы.
Кстати, для тех, кто делает простое сравнение PDF, когда структура не изменилась, можно использовать diff командной строки и игнорировать некоторые шаблоны, например, с GNU diff 2.7:
diff --brief -I xap: -I xapMM: -I / CreationDate -I / BaseFont -I / ID -binary -text
У этой проблемы все еще есть проблема, что она не всегда улавливает изменения в генерируемых именах шрифтов.
Наш продукт, PDF Comparator – http://www.premediasystems.com/pdfc.html “- будет делать это довольно элегантно и эффективно, а также не является бесплатным и представляет собой приложение только для Mac OS X.
Исходя из ваших потребностей, преобразование в текстовое решение было бы самым простым и самым прямым. Я действительно думал, что идея растрового изображения была довольно крутой.
Программное обеспечение blubeam pdf сделает это за вас
Вы можете сравнивать файлы PDF с Tarkware Pdf Comparer. Но это не бесплатно и требует Adobe Acrobat.