Преобразование PDF в изображения с помощью Ruby / JRuby
-
21-08-2019 - |
Вопрос
Я ищу простой способ создания предварительных просмотров для меток, сгенерированных в формате pdf.Было бы здорово, если бы я мог преобразовать эти PDF-файлы в изображения и показать их пользователю перед фактической печатью / загрузкой.
В настоящее время приложение работает в среде Jruby на rails, но вполне возможно, что мы переключимся на два приложения, одно из которых работает на родном ruby (основное приложение), а другое на jruby (средство pdf).Так что выбор на самом деле не ограничивается одним из этих миров.
Пока я вижу следующие варианты:
- Рмагик:кажется зрелым, ImageMagick как серверная часть, вероятно, не работает на jruby
- RMagick4J рмагик4j:как RMagick, но доступен для JRuby, выглядит неактивным, поддерживает только подмножество.
- Джмагик:Интерфейс JNI для Java, работает только в JRuby
Сама генерация PDF всегда будет осуществляться в среде Jruby, поэтому JMagick звучит как хорошая идея (ожидайте возможных проблем с JNI).С другой стороны, было бы здорово, если бы решение не ограничивалось одной платформой.
Есть какие-нибудь идеи?Предложения?Плохой опыт?Может быть, совершенно другая идея?
Спасибо!
Решение
Вот очень тонкая оболочка pure Ruby для ImageMagick.Вы можете легко отправлять любые команды, которые вы хотите, в ImageMagick с помощью некоторых методов модуля:
www.misuse.org/science/2008/01/30/mojomagick-ruby-image-library-for-imagemagick/
Это должно отлично работать и на jruby, поскольку там нет никакой DLL magic или чего-то еще под капотом.
Другие советы
Вы используете Linux?
sudo apt-get install imagemagick
В вашем коде ruby сделайте
system "convert -colorspace rgb -density 150 ../path/whatever.pdf ../path/whatever.jpg"
-плотность - это DPI конечного изображения
-colorspace исправляет проблемы, которые у меня были с отключением цветов
Я использую iText - Текст для генерации / обработки PDF-файлов.Это Java-jar, но его действительно легко вызвать из JRuby.Если вы объедините это с Летающий инструктор проект вы также можете создавать изображения.Оба они очень просты в использовании.