Конвертация PDF в изображения с сохранением векторного качества.

Вопрос или проблема

Я использую ImageMagick для преобразования некоторых PDF файлов в изображения PNG и сталкиваюсь с проблемами качества, поскольку полученное изображение имеет очень низкое качество. Я экспериментировал с флагами плотности, пересэмплирования, интерполяции и фильтра команды convert, но мне не удалось получить изображение высокого качества, как если бы я сделал скриншот из программы просмотра PDF (которая, конечно, сохраняет векторное качество файла PDF).

Можете мне помочь, пожалуйста?

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

Если вы хотите, чтобы “векторные особенности” вашего PDF-файла оставались такими же, вам следует использовать ghostscript, который, в конечном итоге, и используется Imagemagick.

Поскольку цель — читать PDF и записывать PNG, ImageMagick вызовет GhostScript для выполнения этой задачи. Поэтому нет необходимости использовать IM, используйте GS напрямую.

У PDF НЕТ DPI, поэтому вы решаете точно, какое качество пикселей вам нужно, и как приблизительное руководство большинство экранов (номинально 96 ppi) и принтеров (часто от 200 до 2400+ ppi) работают хорошо при разумной плотности 300 пикселей на дюйм.

Таким образом, одна разумная команда качества (существуют десятки вариантов) следующая

GS -sDEVICE=png16m -r300 -dPDFFitPage -ooutput%%d.png -dTextAlphaBits=4 -f input.pdf

Таким образом, если этот вопрос распечатан как PDF, то приведенная выше однострочная команда производит текущий результат (нажмите для увеличения и снова для проверки фиксированных линий в качестве пикселей) :
введите описание изображения здесь

Вы можете сделать это, используя метод супер-пикселей. Увеличьте плотность при чтении PDF, затем уменьшите масштаб на обратное количество. Например:

magick -density 288 image.pdf -resize 25% output.png

Для PDF по умолчанию плотность составляет 72. Таким образом, 288 = 72 * 4. Следовательно, мы уменьшаем масштаб на 1/4 = 25%

.

Ответ или решение

При решении задачи по конвертации PDF в изображения с сохранением векторного качества, стоит внимательно изучить используемые инструменты и методы, чтобы обеспечить наилучшее качество полученного изображения. Ваша проблема с качеством изображения, созданного с помощью ImageMagick, действительно заслуживает внимания, и здесь можно применить несколько подходов для достижения требуемого уровня качества.

Теория

Конвертация PDF в изображение — это процесс, который неизбежно связан с некоторыми потерями в качестве, поскольку PDF файлы содержат векторную графику, а изображения в формате PNG — это растровые изображения. В отличие от растров, векторная графика не теряет качество при увеличении или уменьшении, потому что она построена на математических формулах. Что касается использования ImageMagick, он действительно конвертирует PDF в растровый формат прежде, чем применить дальнейшие преобразования, что приводит к потере векторного качества.

Для достижения наилучшего качества вам следует использовать инструменты, которые могут более эффективно работать с PDF-файлами, таким как Ghostscript. Это программное обеспечение специально разработано для обработки PDF и PostScript файлов и может предложить больше контроля над процессом преобразования.

Пример

Базовая команда для конвертирования PDF в PNG с использованием Ghostscript выглядит следующим образом:

gs -sDEVICE=png16m -r300 -dPDFFitPage -o output%d.png -dTextAlphaBits=4 -f input.pdf

Давайте разберем ключевые параметры:

  • -sDEVICE=png16m определяет тип выходного устройства (в данном случае — PNG файл с 24-битным цветом).
  • -r300 указывает разрешение в 300 точек на дюйм, что является стандартным для печати и обеспечивает хорошее качество.
  • -dPDFFitPage автоматически подгоняет страницу PDF, чтобы она подходила к размерам выходного устройства.
  • -dTextAlphaBits=4 улучшает качество обработки текста, уменьшает эффект зубчатости на шрифтах.

Эти настройки помогут сохранить как можно больше от качества исходной векторной графики.

Применение

При использовании Ghostscript вы глубже управляете процессом конвертации, чем при простой настройке в ImageMagick. Это позволяет вам получать более качественные результаты на стадии создания изображений. В вашем случае, настройка разрешения влияет напрямую на качество конечного изображения. Увеличение значения разрешения приводит к получению большего количества деталей изображения.

Если вы все же хотите использовать ImageMagick, вы можете комбинировать его с Ghostscript для достижения лучших результатов. Например, вы можете использовать одинаковый подход, увеличивая плотность при чтении PDF, а потом изменяя размер обратно, чтобы сохранить качество:

magick -density 288 input.pdf -resize 25% output.png

Здесь вы увеличиваете плотность до 288 PPI, что в четыре раза выше базового значение 72, и затем уменьшаете изображение до 25% от этой плотности, что стабилизирует качество изображения, уменьшая эффект растрирования.

Другим моментом, который стоит учесть, это правильный выбор формата PNG, который вы используете. Разные подформаты PNG поддерживают различные уровни компрессии и глубину цвета. Uбедитесь, что настройки глубины цвета и фильтрации учитывают особенности вашего контента, особенно если он включает сложные векторные элементы или прозрачность.

Подводя итог, оптимизацию качества финального изображения можно достигнуть посредством регулировки разрешений, глубины цвета и других специфических параметров обработки, особенно используя Ghostscript для начальной обработки PDF. Это может потребовать некоторого экспериментации, но позволит добиться максимально возможного векторного качества в вашем PNG изображении.

Оцените материал
Добавить комментарий

Капча загружается...