Convertendo PDF para PNG com fundo transparente
Temos um aplicativo Ruby on Rails que precisa converter um PDF em um PNG com um plano de fundo transparente. Estamos usando o rmagick 2.13.1. Em nossas máquinas de desenvolvimento, o código a seguir funciona exatamente como queremos.
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" } )
Nós, então, salvamos o arquivo_de_imagem e tudo é pêssego. Quando implantamos em um servidor de revisão no Heroku, a imagem gerada tem um fundo branco. Acontece que a pilha de cedros da Heroku está usando imagemagick ImageMagick 6.5.7-8 2010-12-02 onde estamos usando o ImageMagick 6.7.5-7 2012-05-08 em nossas máquinas de desenvolvimento.
Eu pesquisei na rede por postagens mais antigas que podem se aplicar à versão antiga para tentar descobrir como gerar os PNGs transparentes. É certamente suportado, mas até agora não consegui descobrir a combinação certa de configurações.
Para verificar se não era a geração de PDF que era o problema, eu baixei um PDF gerado no Heroku e converti com sucesso usando o código acima (ligeiramente modificado para ler o arquivo em vez de gerá-lo) para um PNG transparente.
Algumas das coisas que eu tentei em várias combinações são:
page.matte = true
page.format = "PNG32"
page.background_color = "none"
page.transparent_color = "white"
page.transparent("white")
Então, a questão é "isso é possível?" Em caso afirmativo, quais configurações eu preciso definir na imagem antes de escrevê-la?
Eu também estou investigando incluindo um binário compilado de um Imagemagick mais atualizado no Heroku.
Qualquer ajuda é apreciada.