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

Это - мое понимание это pdfimages -all извлечения отображают от PDFs в их собственных форматах.

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

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

Есть ли что-то, что я не понимаю? pdfimages добавление информации о пикселе по умолчанию, когда это создает .ppm и .pbm файлы?

5
задан 1 November 2019 в 10:15

1 ответ

pdfimages -all возвращает точный файл, который хранился в PDF.

Мы можем протестировать это путем выполнения распространения в прямом и обратном направлениях: начиная с изображения jpg, мы добавляем его к PDF с помощью ЛАТЕКСА, извлекаем его использование pdfimages -all, и затем сравните его с оригиналом. (Причина использования ЛАТЕКСА будет объяснена позже.)

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

$ 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 является байтом для байта, идентичным оригиналу.

Сноска: причина использования ЛАТЕКСА

Вышеупомянутый тест не может быть сделан с помощью просто любого создателя 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.

7
ответ дан 23 November 2019 в 09:05

Другие вопросы по тегам:

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