PDF к jpg без качественной потери; gscan2pdf

Большую часть времени мне нравится помещать мой собственный скомпилированный материал в /opt. Это - вид псевдостандартного места. Можно также рассмотреть /usr/local, но я предпочитаю сохранять свой материал 100% изолированный.

52
22.04.2011, 23:02
5 ответов

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

Возможно, необходимо использовать -density сделать преобразование на уровне более высоких точек на дюйм:

convert -density 300 file.pdf page_%04d.jpg

(Можно предварительно ожидать -units PixelsPerInch или -units PixelsPerCentimeter при необходимости. Мои значения по умолчанию копии к пкс/дюйм)

Обновление: Поскольку Вы указали, gscan2pdf (способ, которым Вы используете его) просто обертка для pdfimages (от poppler). pdfimages не делает того же самого это convert делает при предоставлении PDF как вход.

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

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

В результате, если то, что Вы имеете, является PDF, это - просто обертка вокруг серии битовых массивов, pdfimages сделает намного лучшее задание извлечения их, потому что это получает Вас необработанные данные в его первоначальном размере. Вы, вероятно, также хотите использовать -j опция к pdfimages, потому что PDF может содержать необработанные данные JPEG. По умолчанию, pdfimages преобразовывает все в формат PNM и преобразование JPEG> PPM>, JPEG является процессом с потерями.

Так, попробуйте

pdfimages -j file.pdf page

Вы можете или, возможно, не должны следовать за этим с a convert кому: .jpg шаг (в зависимости от того, что растровый формат PDF использовал).

Я попробовал эту команду на PDF, который я сделал сам из последовательности изображений JPEG. Извлеченные JPEGs были байтом для байта, идентичным исходным изображениям. Вы не можете получить более высокое качество, чем это.

95
27.01.2020, 19:33
  • 1
    +1 я так рад, что не отправлял снобизму, неправильно читающему одно из Ваших предложений, вселенных в меня и на самом деле попробованный pdfimages - вероятно, самая полезная программа, которую я использовал в течение многих месяцев! Я поощрил бы всех пробовать его! –  ixtmixilix 22.04.2012, 18:45
  • 2
    @ixtmixilix, мне любопытно. Что Вы неправильно читали, и как? –  cjm 22.04.2012, 18:57
  • 3
    Довольно потрясающий! Решенный мой день.Спасибо! –  Geppettvs D'Constanzo 06.09.2012, 01:45
  • 4
    convert также непрактично для большого PDFs. Например, потребовалось 45 ГБ памяти для обработки книги 700 страниц на 6 мегапикселей. Это также сопроводило в тысячу раз дольше, чем pdfimages. –  Camille Goudeseune 08.12.2015, 00:47
  • 5
    Для наоборот, преобразуйте изображения в PDF, или лучше, перенесите изображения в PDF, используйте img2pdf, здесь: gitlab.mister-muffin.de/josch/img2pdf (переносит jpg и jpg2000 в PDF). –  erik 15.03.2016, 16:10

Рассмотрение gscan2pdf исходного кода, я заметил, что это использует pdfimages. Так pdfimages file.pdf page привел бы к page-001.ppm, page-002.ppm и т.д.

2
27.01.2020, 19:33
  • 1
    pdfimages действительно, делает задание –  Eduard Florinescu 03.02.2018, 20:55

То, что не ясно в Вашем вопросе, - говорите ли Вы о тексте и векторной графике в Вашем PDF, или содержит ли Ваш PDF встроенные изображения.

Считав, о чем gscan2pdf, мое предположение - то, что Ваши файлы PDF содержат (только) встроенную графику.

convert по существу "печатает" Ваш PDF без отношений к тому, какой содержание. Как @cjm предлагает, Вы могли бы хотеть изменить плотность печати. Это - единственный способ увеличить качество для векторной графики.

Если вместо этого, то, что Вы хотите сделать, извлечь встроенные изображения (во многом как gscan2pdf, кажется, делает), предполагая, что плотность будет обычно приводить или к качественной потере или к более высокому качеству, чем необходимый (и трата дискового пространства). Ответ затем должен извлечь изображение, а не распечатать PDF. См. эту статью, которая в основном защищает использование pdfimages для извлечения изображений без качественной потери.

2
27.01.2020, 19:33

ответ от @cjm корректен, но если Вы любите GUI и не хотите представлять все страницы PDF, только получать некоторое изображение, используйте калеку.

Откройте PDF с калекой, Вы получат окно импорта со всеми представленными страницами. Выберите любые страницы, Вы хотите и устанавливаете разрешение на 600 пкс/дюйм (я нашел 300, слишком много увеличивают резкость во многих случаях). Сохраните для форматирования Вас, хотят с "Файлом/экспортом"

Так или иначе должен быть флаг для выбора желаемых страниц из командной строки.

3
27.01.2020, 19:33

convertу меня не работает . Однако этот(pdftoppm)работает отлично. Каждая из приведенных ниже команд обеспечит существование каталога «images», создаст его, если это не так, и сохранит сгенерированные изображения в этом каталоге.

1200 точек на дюйм

mkdir -p images && pdftoppm -jpeg -r 1200 mypdf.pdf images/pg

600 точек на дюйм

mkdir -p images && pdftoppm -jpeg -r 600 mypdf.pdf images/pg

300 DPI (создает ~файлы размером 1 МБ -на страницу)

mkdir -p images && pdftoppm -jpeg -r 300 mypdf.pdf images/pg

300 DPI с наименьшим сжатием/максимальным качеством (создает файлы размером ~2 МБ -на страницу)

mkdir -p images && pdftoppm -jpeg -jpegopt quality=100 -r 300 mypdf.pdf images/pg

Дополнительные показания:

  1. https://stackoverflow.com/questions/43085889/how-to-convert-a-pdf-into-jpg-with-commandline-in-linux/61700520#61700520
  2. https://stackoverflow.com/questions/6605006/convert-pdf-to-image-with-high-resolution/58795684#58795684
  3. https://askubuntu.com/questions/150100/extracting-embedded-images-from-a-pdf/1187844#1187844
8
09.05.2020, 17:07

Теги

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