采用HTML并将其转换为PDF的最佳和最简单的方法是什么,类似于在ColdFusion上使用CFDOCUMENT?
更新:我非常感谢人们迄今给出的所有意见和建议,但我觉得人们遗漏了他们的答案.
1)解决方案必须是免费的或开源的.一个人建议使用pricexml和另一个pd4ml.这两种解决方案都需要花钱(价格是花费一条腿和一条腿),这不是关于岔路口的问题.
2)他们必须能够接受html(从文件,url或字符串变量),然后生成pdf.像prawn,rprf,rtex这样的库是使用自己的方法生成的,而不是使用html.
请不要认为我对这些建议不感恩,只是对于像我这样使用ColdFusion但想转换为Rails的人来说,pdf生成似乎是一个真正的问题.
宝石,WickedPDF,不正是这一点.
现在最棒的是PDFKit用于这项工作:
https://github.com/pdfkit/PDFKit
http://railscasts.com/episodes/220-pdfkit
试试WickedPDF,PDF生成器(来自HTML)插件.
这是一个例子
gem 'wicked_pdf' gem 'wkhtmltopdf-binary' #wicked_pdf is a wrapper for wkhtmltopdf, you'll need to install that, too
在你的控制器中(我猜你是在show方法):
respond_to do |format| format.html format.pdf do pdf = render_to_string :pdf => 'test', layout: 'pdf.html.erb', template: 'show.pdf.slim', header: { :right => '[page] of [topage]'}, margin: {top: 0, bottom: 0, left: 0, right: 0}, outline: {outline: true, outline_depth: 2} end end
在您的PDF链接视图中
= link_to 'Download Pdf', you_show_path(@uour_object, format: :pdf)
如果您想在电子邮件附件中发送pdf,请首先将您的pdf文件保存在公共或临时文件夹中,然后保存在邮件程序类中(例如,在mailers/e_mailer.rb中)
attachments["test.pdf"] = File.read(Rails.root.join('public',"test.pdf")) mail(:to => to, :cc => cc , :subject => "subject")
发送电子邮件后,您可以删除文件
File.delete(Rails.root.join("public", "test.pdf"))