我的网站上有可打印的发票系统。这是通过我的发票显示页面的print.html.erb版本完成的,该版本嵌入在iframe中,然后使用javascript $("#print-frame").get(0).contentWindow.print();
进行打印。所以它基本上打印print.html.erb文件。
我希望能够在来自控制器的电子邮件中将完全相同的发票作为pdf发送。换句话说,它应该看起来与此页面的打印预览完全相同(如果您使用Firefox,可以使用pdf中的finder进行预览)
(print.html.erb有内联样式表)
如何?
答案 0 :(得分:0)
我们使用acts_as_flying_saucer
- 它是flying_saucer
的rails包装器,它是一个将html页面转换为pdfs的Java应用程序。
https://github.com/amardaxini/acts_as_flying_saucer
当您打印页面时,它将使用任何样式表,其中媒体设置为" print"或者"所有"。您将设置一个模板以呈现为使用相同样式表的pdf。然后,您可以使用此模板在浏览器中查看该页面 - 它应该类似于您的打印预览。然后,您可以将页面呈现为pdf,确信您所看到的就是您所获得的内容。你不需要每次都经历这个过程,就在你真正设置它的时候,但它很好,因为你可以测试网页中的格式而不必渲染到每次都是pdf。
一些潜在的陷阱:
xmllint
用于调试很方便,还有各种用于XHTML验证的浏览器插件。<img>
标记以使用文件系统位置,而不是像往常一样使用相对于公用文件夹的路径。