Почему изображения, создаваемые pdfimages, отличаются при использовании флага -all?

Почему изображения, создаваемые pdfimages, отличаются при использовании флага -all?

Насколько я понимаю, эта программа pdfimages -allизвлекает изображения из PDF-файлов в их исходных форматах.

Поэтому я ожидал, что изображения JPG (с потерями), извлеченные с помощью этой команды, будут иметь ту же информацию о пикселях, что и файлы .ppm и .pbm, созданные без этой -allопции, а также файлы PNG (без потерь), созданные при щелчке правой кнопкой мыши и сохранении изображения в Evince.

Однако мое использование команды ImageMagick compareговорит мне, что есть различия в изображениях, содержащихся в файлах JPG, по сравнению с другими вариантами выше. Чтобы воспроизвести, загрузите PDF по этой ссылке (https://fccid.io/document.php?id=2149405), использовать его как аргумент для pdfimagesи pdfimages -allи использовать первый файл .ppm и первый файл .jpg как аргументы для compare. Когда я это делаю, создается файл изображения, содержащий красный цвет для обозначения разницы в изображениях.

Я чего-то не понимаю? pdfimagesДобавляет ли он информацию о пикселях по умолчанию при создании файлов .ppm и .pbm?

решение1

pdfimages -allвозвращаетточныйфайл, который был сохранен в формате pdf.

Мы можем проверить это, выполнив цикл: начиная с изображения JPG, мы добавляем его в PDF с помощью LaTeX, извлекаем его с помощью pdfimages -all, а затем сравниваем с оригиналом. (Причина использования LaTeX будет объяснена позже.)

У меня есть первое изображение jpg, извлеченное из вашей ссылки, и я назвал его device.jpg. Давайте поместим его в файл PDF с помощью LaTeX:

$ cat img.tex 
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\includegraphics[width=5in,keepaspectratio]{device}
\end{document}
$ pdflatex img
[...snip...]
Output written on img.pdf (1 page, 672455 bytes).
Transcript written on img.log.

Теперь давайте извлечем его с помощью pdfimages -allи сравним с оригиналом:

$ pdfimages -all img.pdf img-all
$ cmp device.jpg img-all-000.jpg 
$

Извлеченный jpg-файлбайт в байт идентичнык оригиналу.

Сноска: причина использования LaTeX

Вышеуказанный тест не может быть выполнен с использованием любого PDF-редактора. Это потому, что не все PDF-редакторы будут помещать изображения в PDF без помех. Например, давайте попробуем ImageMagick convert:

$ convert device.jpg device.pdf
$ pdfimages -all device.pdf device-all
$ cmp device.jpg device-all-000.jpg 
device.jpg device-all-000.jpg differ: byte 4, line 1

convertперед помещением в PDF-файл уменьшил размер изображения.

$ ls -1s device.jpg device-all-000.jpg 
528 device-all-000.jpg
656 device.jpg

Точность изображения была частью целей дизайна pdflatex. Другое программное обеспечение для создания PDF может по умолчанию «оптимизировать» изображения перед их размещением в PDF.

Обновлять: ШриватсаРуказывает на то, чтоimg2pdfУтилита также обеспечивает метод без потерь для преобразования изображений в PDF. Пользователи, не являющиеся пользователями TeX, также, вероятно, найдут его гораздо более простым в использовании.

Связанный контент