4

PDFを透明な背景のPNGに変換する必要があるRubyonRailsアプリケーションがあります。rmagick2.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の杉スタックはimagemagickImageMagick6.5.7-8 2010-12-02を使用しており、開発マシンではImageMagick6.7.5-72012-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のコンパイル済みバイナリを含めることも検討しています。

どんな助けでも大歓迎です。

4

1 に答える 1