我有一个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
答案 0 :(得分:1)
有一种简单的方法,无需进行繁重的修补和配置 - Base64编码SVG文件并将其内嵌在HTML中:
<img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGF...>
我使用此方法在CSS中嵌入字体,但它也适用于SVG和其他图像格式。