Rails 3 + PDFKit:如何将视图转换为PDF?
在Windows上的 Rails 3应用程序中,我有以下页面,其中显示了作业收据并允许用户编辑它:
http://localhost:3001/jobs/45/invoice
我在页面底部还有一个“创建PDF”按钮。 按下时,调用我的JobsController
create_pdf_invoice
:
def create_pdf_invoice job = Job.find(params[:id]) kit = PDFKit.new("Hello
This is PDF!!!
", :page_size => "A4") file = kit.to_file("my_file_name.pdf") redirect_to(:action => 'index') end end
这一切都很好,即PDF已创建!
我的问题是如何打印发票本身而不是这个静态文本(如果我在http://localhost:3001/jobs/45/invoice
页面上按“打印”)?
UPDATE
我试着把
require 'pdfkit'
和
config.middleware.use PDFKit::Middleware
在config/application.rb
,如此处所示 。
服务器正常启动,但是当我去的时候
http://localhost:3001/jobs/45/invoice.pdf
Ruby崩溃:
我用:
ruby 1.9.2p0 (2010-08-18) [i386-mingw32] Rails 3.0.1 rake, version 0.8.7 pdfkit (0.5.0)
有任何想法吗 ?
首先,您需要告诉应用程序使用pdfkit作为中间件。
所以在初始化器中的某个位置需要放置:
# PDFKit require 'pdfkit' middleware.use PDFKit::Middleware PDFKit.configure do |config| config.wkhtmltopdf = 'windows_path_to_wkhtmltopdf' end
在此之后,如果你打电话
http://localhost:3001/jobs/45/invoice.pdf
应该为您生成pdf。
PDFkit是一种中间件,它拦截了相应地呈现页面的pdf格式。
如果需要,还可以通过正则表达式或字符串限制配置中的pdfable路由。
只是一个警告,如果页面中有图像,则必须使用绝对路径调用它们。
我们也发现了pdfkit 0.5.0的一些问题,但是版本0.4.6的工作正常,它与路径有关,所以它可以解决你的问题。
在PDFKit中间件的帮助下,您只能在浏览器中以pdf格式查看html页面。 如果要显示下载提示,则必须在操作中设置标题。
headers [“Content-Disposition”] =“attachment; filename = export”
此外,如果要将pdf文件保存在服务器中,则可以尝试此链接。
保存PDFKit中间件显示的PDF文件