Rails html文件以pdf格式发送

时间:2014-06-19 08:59:11

标签: javascript ruby-on-rails ruby-on-rails-3 pdf printing

我的网站上有可打印的发票系统。这是通过我的发票显示页面的print.html.erb版本完成的,该版本嵌入在iframe中,然后使用javascript $("#print-frame").get(0).contentWindow.print();进行打印。所以它基本上打印print.html.erb文件。

我希望能够在来自控制器的电子邮件中将完全相同的发票作为pdf发送。换句话说,它应该看起来与此页面的打印预览完全相同(如果您使用Firefox,可以使用pdf中的finder进行预览)

(print.html.erb有内联样式表)

如何?

1 个答案:

答案 0 :(得分:0)

我们使用acts_as_flying_saucer - 它是flying_saucer的rails包装器,它是一个将html页面转换为pdfs的Java应用程序。

https://github.com/amardaxini/acts_as_flying_saucer

当您打印页面时,它将使用任何样式表,其中媒体设置为" print"或者"所有"。您将设置一个模板以呈现为使用相同样式表的pdf。然后,您可以使用此模板在浏览器中查看该页面 - 它应该类似于您的打印预览。然后,您可以将页面呈现为pdf,确信您所看到的就是您所获得的内容。你不需要每次都经历这个过程,就在你真正设置它的时候,但它很好,因为你可以测试网页中的格式而不必渲染到每次都是pdf。

一些潜在的陷阱:

  • 您的网页需要通过严格的XHTML测试。无论如何,他们应该,但在浏览器中,你可以摆脱有点草率,但不是在这里。 xmllint用于调试很方便,还有各种用于XHTML验证的浏览器插件。
  • 当您在页面中拥有本地源图像时,需要修改<img>标记以使用文件系统位置,而不是像往常一样使用相对于公用文件夹的路径。