
Насколько я понимаю, эта программа 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, также, вероятно, найдут его гораздо более простым в использовании.