Подтвердить что ты не робот

Визуальный diff PDF файлов для определения совершенства пикселей

Мне нужно реорганизовать некоторые отчеты (сгенерированные с помощью Jasper) с помощью служб MS Reporting Services. Копии исходных отчетов доступны в формате PDF. Требование состоит в том, чтобы сделать новые отчеты "идеальными пикселями", которые очень громоздки...

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

Является ли такой инструмент там?

4b9b3361

Ответ 1

Самый простой, немедленно доступный метод для этого: используйте ImageMagick compare (который также доступен в Windows).

Он даже может сравнивать страницы PDF (хотя он использует Ghostscript в качестве своего делегата для отображения страниц PDF на пиксельные изображения):

 compare.exe         ^
    tested.pdf[0]    ^
    reference.pdf[0] ^
   -compose src      ^
    delta.pdf

В результате delta.pdf будет отображаться каждый пиксель как красный, который имеет другой цвет между двумя сравниваемыми страницами PDF. Все идентичные пиксели будут чисто белыми. [0] сообщите compare, чтобы использовать первые страницы каждого файла для сравнения (количество страниц равно нулю).

Вы можете увидеть, как это работает в следующем примере:

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -compose src                   ^
    delta.pdf

Вот соответствующие страницы (конвертированные в уменьшенные PNG для веб-дисплея). Страница ссылки находится слева, измененная страница - средняя, ​​справа - изображение "треугольник-красный".

first pagesecond pagedelta image

Немного другой визуальный результат, который вы можете получить, пропуская параметр -compose src. Затем вы получите исходные пиксели файлов в виде затененного серым фоном (для контекста) с треугольными пикселями красного цвета:

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
    delta.pdf

first pagesecond pagedelta.pdf

Если вам не нравится красный цвет для различий пикселей, используйте -highlight-color:

 compare.exe                      ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -highlight-color green         ^
    delta.pdf

Разрешение по умолчанию, используемое для визуализации страниц PDF, составляет 72 dpi. Если вам нужна более высокая точность, вы можете переключиться на 300 dpi с помощью параметра -density следующим образом:

 compare.exe                      ^
   -density 300                   ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
    delta.pdf

Примечание. переключение на более высокие плотности замедлит процесс и создаст более крупные файлы.

Вы даже можете создать файл *.txt для дельта-изображения, которое описывает каждую координату пикселя и соответствующие значения цвета:

 compare                          ^
    http://qtrac.eu/boson1.pdf[1] ^
    http://qtrac.eu/boson2.pdf[1] ^
   -compose src                   ^
   -highlight-color black         ^
    delta.txt

Затем просто подсчитайте количество общих против чёрных пикселей (извините, это синтаксис Unix/Linux/MacOSX):

 total_pixels=$(( $(cat delta.txt | wc -l) - 1))
 black_pixels=$(( $(grep black delta.txt | wc -l) -1 ))

В примере, использованном для приведенных выше иллюстраций, я получаю

 total_pixels=500990
 black_pixels=8727

Конечно, "идеальным" результатом было бы

 black_pixels=0

Ответ 2

Этот вопрос уже принят, но я хотел бы дать два цента. Мы сделали i-net PDFC, который идеально соответствует вашему сценарию. Было сделано для проверки отчетов, сделанных с помощью другого инструмента отчетности, соответствующего выпуску нашего программного обеспечения для отчетности. Но это еще более мощно. Что PDFC не делает, это: проверить идеальность пикселей на основе изображений, но он проверяет с определенными настройками, что документ в основном (и визуально) тот же на основе его содержимого. Путь более мощный, чем чистое сравнение на основе пикселей.

i-net PDFC может работать визуально или на основе командной строки (например, пакетный процесс) и работает с системами непрерывной интеграции. Визуальный компонент даже позволяет полупрозрачно накладывать два файла PDF, чтобы пользователь мог проверить пиксельные совершенства.

Программное обеспечение вышло из бета-версии. Попробуйте и сообщите нам, что вы думаете. (Да, я работаю в компании, которая сделала это.)

Ответ 3

diffpdf позволяет сравнивать два PDF файла бок о бок.

Ответ 4

Я рекомендую печатать отчеты с помощью PDFCreator в виде PNG-изображения, затем вы можете использовать графическую программу, такую ​​как Paint.NET, чтобы сделать фоновый прозрачный слой и обе эти отчеты поверх друг друга.

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

Здесь вы найдете PDFCreator http://de.pdfforge.org/pdfcreator. Он полностью свободен в использовании.