使用透明背景将PDF转换为PNG

时间:2012-06-24 14:25:39

标签: ruby-on-rails heroku imagemagick transparency rmagick

我们有一个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生成的问题,我下载了一个在Heroku上生成的PDF,并使用上面的代码(略微修改为读取文件而不是生成它)成功转换为透明PNG

我尝试过各种组合的一些事情是:

  • page.matte = true
  • page.format = "PNG32"
  • page.background_color = "none"
  • page.transparent_color = "white"
  • page.transparent("white")

所以,问题是“这可能吗?”。如果是这样,在写出之前我需要在图像上设置哪些设置?

我还在调查在Heroku上包含一个更新的Imagemagick的编译二进制文件。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这不再是问题,因为Heroku在其各个堆栈上都有ImageMagick 6.7-6.9版本。