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文件