
Создание миниатюр PDF-файлов с помощью imagemagickиногдаотображает некорректные цвета. Мы используем старую версию imagemagick (6.5.7-8, это версия, установленная на серверах heroku). Вот команда, которую мы сейчас используем:
convert \
-size "725x1200>" \
-colorspace RGB \
-flatten \
-density 300 \
-quality 100 \
input.pdf \
output.jpg
Я пробовал использовать разные цветовые пространства, такие как sRGB, YIQ, но ни одно из них не отображает цвета правильно.
Локальное использование imagemagick-6.7.7-6 работает, поэтому я попытался объединить команду «convert» в каталоге моего приложения /bin. Команда работает, но результат все еще неверный. Похоже, проблема связана либо с другой командой imagemagick, используемой «convert», либо с другой библиотекой.
Вот пример выходных данных:
- Правильный вывод: слева
- Неправильный вывод: справа
Странно, но с некоторыми страницами одного и того же pdf-файла вывод всегда правильный. Есть идеи, какая библиотека или команда может быть проблемой, или есть ли правильный набор опций для передачи в imagemagick, чтобы всегда получать правильно?
решение1
После некоторых дополнительных исследований выяснилось, что проблема исходит от ghostscript, в котором отсутствует опция -dUseCIEColor
. И из того, что я собрал в Интернете, невозможно передать параметры ghostscript через imagemagick. Однако возможно вызвать 2 команды вместе с помощью конвейера:https://stackoverflow.com/questions/653380/converting-a-pdf-to-png
Мой конкретный вариант использования
Это немного более специфично для моего варианта использования, но я подумал, что кому-то это может быть интересно. Поскольку мы генерируем миниатюры через Paperclip в нашем приложении rails, я создал новый процессор paperclip, чтобы позаботиться о преобразовании pdf в jpg, а затем imagemagick берет на себя обычное изменение размера. Мой код с примером здесь:https://gist.github.com/3059321