wicked_pdf,wkhtmltopdf在Heroku上没有使用SVG

时间:2012-09-24 22:26:33

标签: ruby-on-rails heroku svg wkhtmltopdf wicked-pdf

我有一个Ruby on Rails 3.2应用程序,使用 wicked_pdf gem和 wkhtmltopdf 0.9.9 库在我的本地计算机上生成PDF,这是一个 MAC OSX 10.7.5 Lion 。该应用程序成功地将HTML页面(包括SVG图像)呈现为PDF文件,这是我们旨在让应用程序完成的确切行为。

在本地,我们不得不使用wkhtmltopdf 0.9.9,因为OSX的11.0.0版本存在错误。

问题是当应用程序在Heroku上推送到生产时,它必须使用不同的二进制文件: wkhtmltopdf-0.9.9 Linux静态二进制文件(amd64)并且SVG呈现似乎下降分开。生成PDF,但SVG图像无法正确呈现。它们只是空白或方形的“贝壳”,图像应该在那里。

我们尝试使用 wkhtmltopdf-heroku gem,但不断收到“Broken Pipe”错误。

没有与此问题相关的错误消息,我们不知道Linux版本存在哪些问题。那里有什么想法吗?

这是config/initializers/wicked_pdf.rb文件中的代码:

if Rails.env.staging? || Rails.env.production?  
  exe_path = Rails.root.join('bin', 'wkhtmltopdf-amd64').to_s  
else  
  exe_path = Rails.root.join('bin', 'wkhtmltopdf').to_s  
end

1 个答案:

答案 0 :(得分:1)

有一种简单的方法,无需进行繁重的修补和配置 - Base64编码SVG文件并将其内嵌在HTML中:

<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGF...>

我使用此方法在CSS中嵌入字体,但它也适用于SVG和其他图像格式。