4

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

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

问题是,当应用程序在 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
4

1 回答 1

2

有一种简单的方法无需进行繁重的修补和配置即可工作 - Base64 编码 SVG 文件并将其包含在 HTML 中:

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

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

于 2013-07-14T21:01:05.107 回答