将PDF转换为具有透明背景的PNG

问题描述 投票:4回答:1

我们有一个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的已编译二进制文件。

感谢您的任何帮助。

ruby-on-rails heroku imagemagick transparency rmagick
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.