Находить разрешение изображения в файле PDF?


15

У меня проблема с тем, что некоторые пользователи создают очень большие PDF-файлы. С другой стороны, у меня есть PDF, отправленный с наших факсимильных аппаратов, который очень маленький по размеру и полностью пригоден для печати. Мой вопрос

  • Есть ли способ найти разрешение (DPI) PDF. Я ищу в интернете, не смог найти ответа. Проверял свойства файла, эта информация там не хранилась, по крайней мере, в моем случае.
  • Какое оптимальное разрешение преобразования текстового файла в PDF изображения. 96dpi, 300dpi или больше?
  • Веселый вопрос. Могу ли я изменить размер PDF-файла, который был отсканирован с высоким разрешением, с меньшим разрешением?

Я знаю, что некоторые ответы могут быть недоступны, так как я уже искал в Интернете и не мог найти ответы.

Примечание: мой PDF полностью изображения, текст в изображения. Я также знаком с primoPDF (бесплатным), с которым можно экспериментировать

Ответы:


18

Ответ slhck и комментарий scruss заслуживают обновления: pdfimagesтеперь (по крайней мере, начиная с версии 0.26.5) явно перечислены x-ppiи y-ppi. Вот пример вывода:

$ pdfimages -list example.pdf 
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    2244  2244  cmyk    4   8  image  no       215  0   301   301  418K 2.1%
   2     1 image     900   600  rgb     3   8  image  no       324  0  1524  1525 35.5K 2.2%

На Debian (Wheezy) и Fedora (23) pdfimagesвходит в состав poppler-utilsпакетов.


Мои все пусты
theonlygusti

8

Я знаю, что вы не хотите извлекать данные изображения, но это, вероятно, единственный способ узнать оригинальное разрешение.


На * Никс, если у вас есть ImageMagick - х identifyи Xpdf установлен 1 :

pdfimages -j test.pdf test && for file in $(find . -name "test*.jpg"); do identify "$file"; done

Где test.pdfваш входной PDF. Выходные файлы записываются test-000.jpg, test-001.jpgи так далее. Это даст вам исходный размер всех содержащихся изображений этого PDF 2 .

Пример вывода для файла PDF, который содержит только одно большое изображение:

./test-000.jpg JPEG 2500x1961 2500x1961+0+0 8-bit DirectClass 1.022MB 0.000u 0:00.000

1) В Windows они тоже есть, но сценарий, конечно, будет другим.
2) Обратите внимание, что изображения на самом деле не несут информацию о DPI. Проще говоря: это просто то, что используется для печати, и изображения не нуждаются в измерении DPI.


Какое оптимальное разрешение преобразования текстового файла в PDF изображения. 96dpi, 300dpi или больше?

Как правило, все, что вы хотите напечатать, должно иметь разрешение 300 точек на дюйм или более. Большинство принтеров также поддерживают более высокое разрешение.


2
Версия pdfimages (возможно , более поздний , чем оригинальный вопрос) из проекта Poppler добавляет -list варианта: pdfimages -list test.pdf. Вместо вывода файлов в этом списке указывается размер и тип изображения. Все еще не дает явного разрешения, но избегает создания выходных файлов.
2013 г.

1
@scruss Начиная с версии 0.34.0, pdfimages -listпредоставляет явно x-ppiи y-ppi, как и много другой информации.
Скиппи ле Гран Гуру

Это действительно так, @SkippyleGrandGourou: примерно через пять лет после того, как вопрос был задан. pdfimages все еще не применяет это разрешение / размер к изображениям, которые он извлекает.
scruss

@scruss На самом деле, кажется, что разрешение, заданное с помощью, pdfimagesможет быть совсем отключено (например, когда изображение больше, чем его видимая область, в PDF, создаваемом с помощью scribus). (К сожалению, у меня действительно нет времени подавать отчет об ошибке.)
Skippy le Grand Gourou

4

По какой-то причине последняя версия pdfimages, которую я могу обновить в своем CentOS, - это версия 3.04.

Итак, у меня нет опции -list, как указано в предыдущих ответах. Однако тестовое изображение, созданное из pdfimages на основе ответа slhck, содержит желаемый ответ!

определить -бесный тест-0000.jpg | Больше

Image: test-0000.jpg  
Format: JPEG (Joint Photographic Experts Group JFIF format)  
Mime type: image/jpeg  
Class: DirectClass  
Geometry: 6600x5100+0+0  
Resolution: 600x600  
Print size: 11x8.5

Таким образом, dpi явно отображается в 6-й строке, используя опцию -verbose в команде identifier.

Таким образом, ответ Слхка можно изменить следующим образом.

pdfimages -j test.pdf test && для файла в $ (найти. -name "test * .jpg"); определить -verbose "$ file" | awk 'NR == 6'; сделано

С другой стороны, я попытался запустить

определить -беский тест.pdf

Format: PDF (Portable Document Format)  
Mime type: application/pdf  
Class: DirectClass  
Geometry: 792x612+0+0  
Resolution: 72x72  
Print size: 11x8.5  

Кажется, что Imagemagick всегда принимает 72dpi, и поэтому информация, напечатанная здесь, кажется неверной.


1

Файл PDF не имеет собственного разрешения, каждое растровое изображение в нем (если оно есть) будет иметь свое собственное разрешение. Я не знаю простого способа извлечь одно число для медианного / модального разрешения XObjects встроенного изображения.


Кстати, я не заинтересован в извлечении данных изображения из pdf, я просто хочу знать, какое было разрешение сканирования и, если оно очень высокое, излишне хотело бы избежать этого в будущем.
hk_

@Dave: На самом деле я имел в виду извлечь информацию о встроенных изображениях, а не извлечь изображение. Но ответ Slhck может решить вашу проблему.
RedGrittyBrick

1

Это работало с pdf, сгенерированным из mfp Kyocera ... Это возможно только для полностраничных изображений, таких как сканы.

  1. Откройте PDF с Reader-
  2. Файл> Свойства -Вкладка Описание -Размер страницы. Мой пример сказал 8.5x11.0 в.

  3. Откройте PDF с помощью текстового редактора (блокнота), найдите /widthи/height

  4. Возьмите высоту и ширину и разделите их на высоту и ширину страницы (в дюймах)

Пример:

5100/8.5=600
6600/11.0=600

Мой PDF был отсканирован с разрешением 600x600.

Вы можете пропустить первые 2 шага, если вы знаете размер документа (обычно A4 - 8,27x11,69).


0

Чтобы ответить на ваш второй вопрос, в дополнение к упоминанию @slhck о dpi принтера, 300dpi также является типичным минимальным рекомендуемым числом для распознавания текста с размером шрифта 10 + pt.

Кроме того, современный 15-дюймовый экран ноутбука с разрешением 4K также имеет только около 280 пикселей на дюйм, поэтому, если вы хотите просмотреть весь формат А4 на экране (альбомная ориентация), нет смысла сканировать с разрешением выше ~ 320 точек на дюйм, потому что любой документ выше этого будет Уменьшить. Конечно, это не имеет значения, если вы планируете увеличить, то вам может потребоваться более высокое разрешение.

Чтобы ответить на другие два вопроса, по крайней мере, в настоящее время вы можете использовать Acrobat Pro для проверки DPI и разрешения изображения, а также можете редактировать его.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.