Преобразование PDF в PNG с прозрачным фоном
У нас есть приложение Ruby on Rails, которое должно конвертировать PDF в PNG с прозрачным фоном. Мы используем rmagick 2.13.1. На наших машинах разработки следующий код работает именно так, как мы этого хотим.
pages = Magick::Image.from_blob(book.to_pdf.render){ self.density = 300 }
page = pages[0]
image_file = Tempfile.new(['preview_image', '.png'])
image_file.binmode
image_file.write( page.to_blob { |opt| opt.format = "PNG" } )
Затем мы сохраняем файл image_file, и все выглядит превосходно. Когда мы развернули на сервере обзора на Heroku, сгенерированное изображение имеет белый фон. Оказывается, что стек кедровых изделий Heroku использует imagemagick ImageMagick 6.5.7-8 2010-12-02, где мы используем ImageMagick 6.7.5-7 2012-05-08 на наших машинах для разработки.
Я искал в сети старые посты, которые могут относиться к более старой версии, чтобы попытаться выяснить, как генерировать прозрачные PNG. Это, безусловно, поддерживается, но до сих пор я не смог определить правильную комбинацию настроек.
Чтобы убедиться, что проблема заключалась не в создании PDF-файла, я загрузил PDF-файл, созданный в Heroku, и успешно преобразовал его, используя приведенный выше код (слегка измененный для чтения файла вместо его создания), в прозрачный PNG.
Некоторые из вещей, которые я пробовал в различных комбинациях:
page.matte = true
page.format = "PNG32"
page.background_color = "none"
page.transparent_color = "white"
page.transparent("white")
Итак, вопрос «возможно ли это?». Если да, то какие настройки мне нужно установить на изображении, прежде чем записывать его?
Я также исследую, включая скомпилированный двоичный файл более современного Imagemagick на Heroku.
Любая помощь приветствуется.