Когда я конвертирую файл PDF в кучу файлов JPG, используя
convert -quality 100 file.pdf page_%04d.jpg
У меня заметная потеря качества.
Однако, если я сделаю следующее, нет (заметной) потери качества:
Запустите gscan2pdf, выберите file-> import (и выберите file.pdf). Затем перейдите во временный каталог gscan2pdf. Существует множество файлов pnm (по одному на каждую страницу pdf-файла). Сейчас делаю
for file in *.pnm; do
convert $file $file.jpg done
Получающиеся jpg-файлы (примерно) того же качества, что и исходный pdf (что я и хочу).
Теперь у меня вопрос: есть ли простой способ командной строки для преобразования pdf-файла в набор jpg-файлов без заметной потери качества? (Решение выше является слишком сложным и трудоемким).
Ответы:
Непонятно, что вы подразумеваете под «потерей качества». Это может означать много разных вещей. Не могли бы вы опубликовать несколько образцов для иллюстрации? Возможно, вырежьте тот же раздел из версий низкого качества и хорошего качества (как PNG, чтобы избежать дальнейшей потери качества).
Возможно, вам нужно использовать
-density
для преобразования с более высоким dpi:(Вы можете добавить
-units PixelsPerInch
или,-units PixelsPerCentimeter
если необходимо, по умолчанию моя копия ppi.)Обновление: Как вы указали,
gscan2pdf
(способ, которым вы его используете) является просто оберткой дляpdfimages
(из poppler ).pdfimages
не делает то же самое, чтоconvert
и при вводе PDF-файла.convert
берет PDF, отображает его с некоторым разрешением и использует полученное растровое изображение в качестве исходного изображения.pdfimages
просматривает PDF-файл для встроенных растровых изображений и экспортирует каждое из них в файл. Он просто игнорирует любые текстовые или векторные команды рисования в PDF.В результате, если то, что у вас есть, это PDF, который является просто оберткой вокруг ряда растровых изображений,
pdfimages
будет гораздо лучше извлекать их, потому что он получает необработанные данные в их исходном размере. Возможно, вы также захотите использовать эту-j
опциюpdfimages
, потому что PDF может содержать необработанные данные JPEG. По умолчаниюpdfimages
все конвертируется в формат PNM, а конвертирование JPEG> PPM> JPEG - процесс с потерями.Так что попробуйте
Вы можете или не может понадобиться , чтобы следовать , что с
convert
на.jpg
стадии ( в зависимости от того, какое изображение форматировать PDF использовал).Я попробовал эту команду в PDF, который я сделал сам из последовательности изображений JPEG. Извлеченные файлы JPEG были побайтно идентичны исходным изображениям. Вы не можете получить более высокое качество, чем это.
источник
convert
также нецелесообразно для больших PDF-файлов. Например, для обработки книги из 700 6-мегапиксельных страниц потребовалось 45 ГБ памяти. Это также заняло около тысячи раз дольше, чемpdfimages
.Как сказал ответ студента,
pdfimages
это хороший вариант. Исходя из моего опытаgs
иconvert
экспорт в низкое качество независимо от того, если вы указали правильный точек на дюйм.Но если pdf имеет несколько слоев на страницу
pdfimages
, не работает и извлекает слои как отдельное изображение, в этом случае лучше всего использоватьinskcape
экспорт страницы, как видно.Это команды, которые я использую:
Первая команда разбивает все страницы, вторая команда преобразует страницу за страницей в png. Вы можете сохранить их PNG или просто конвертировать их в JPEG
По сравнению с
pdfimages
,gs
и ImageMagick's,convert
я считаюinkscape
, экспорт самый лучший по качеству.источник
Ответ от @cjm правильный, но если вам нравится GUI и вы не хотите отображать все страницы PDF, просто чтобы получить изображение, используйте gimp.
Откройте pdf с помощью gimp, и вы получите окно импорта со всеми отображаемыми страницами. Выберите нужные страницы и установите разрешение 600 пикселей / дюйм (во многих случаях я обнаружил, что резкость слишком велика на 300). Сохранить в нужный формат с помощью «Файл / экспорт»
В любом случае, должен быть флажок для выбора нужных страниц из командной строки.
источник
Глядя на исходный код gscan2pdf, я заметил, что он использует pdfimages. Так
pdfimages file.pdf page
что в результатеpage-001.ppm, page-002.ppm
и т.д.источник
Что неясно в вашем вопросе, так это то, говорите ли вы о текстовой и векторной графике в вашем PDF-файле или содержит ли ваш PDF-файл встроенные изображения.
Прочитав, что такое gscan2pdf, я предполагаю, что ваши PDF-файлы содержат (только) встроенную графику.
convert
по сути, «печатает» ваш PDF безотносительно к содержанию. Как подсказывает @cjm, вы можете изменить плотность печати. Это единственный способ повысить качество векторной графики.Если вместо этого вы хотите извлечь встроенные изображения (похоже, что это делает gscan2pdf), предположив, что плотность обычно приводит либо к потере качества, либо к более высокому качеству, чем требуется (и к потере дискового пространства). Ответ тогда - извлечь изображение, а не распечатать PDF. Смотрите эту статью, которая в основном выступает за использование
pdfimages
для извлечения изображений без потери качества.источник