Ruby on rails Rails 3+PDFKit:如何将视图转换为PDF?

Ruby on rails Rails 3+PDFKit:如何将视图转换为PDF?,ruby-on-rails,ruby-on-rails-3,pdfkit,Ruby On Rails,Ruby On Rails 3,Pdfkit,在Windows上的Rails 3应用程序中,我有以下页面,该页面显示作业回执并允许用户编辑它: http://localhost:3001/jobs/45/invoice 我在页面底部还有一个创建PDF按钮。按下时,将调用“创建我的作业的pdf发票”控制器: def create_pdf_invoice job = Job.find(params[:id]) kit = PDFKit.new("<h1>Hello</h1><p>This

在Windows上的Rails 3应用程序中,我有以下页面,该页面显示作业回执并允许用户编辑它:

http://localhost:3001/jobs/45/invoice
我在页面底部还有一个创建PDF按钮。按下时,将调用“创建我的作业的pdf发票”控制器:

def create_pdf_invoice
    job = Job.find(params[:id])

    kit = PDFKit.new("<h1>Hello</h1><p>This is PDF!!!</p>", :page_size => "A4")
    file = kit.to_file("my_file_name.pdf")

    redirect_to(:action => 'index')
  end
end

按建议在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用作中间件

因此,在初始值设定项的某个地方,您需要输入:

# 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格式的html页面。 如果要显示下载提示,则必须在操作中设置标题

headers["Content-Disposition"] = "attachment; filename=export" 此外,如果您想在服务器中保存pdf文件,则可以尝试此链接


我不确定我是否理解正确。您想将视图转换为http://localhost:3001/jobs/45/invoice 转换为PDF格式,还是要使用激光打印机等打印当前视图?或者打印PDF而不是HTML?我想转换http://localhost:3001/jobs/45/invoice 在@tommasop的回答之后,我没有什么要说的:但是,这可能也有帮助。我不确定我是否正确理解了你。您想将视图转换为http://localhost:3001/jobs/45/invoice 转换为PDF格式,还是要使用激光打印机等打印当前视图?或者打印PDF而不是HTML?我想转换http://localhost:3001/jobs/45/invoice 在@tommasop的回答之后,我没有太多要说的:但是,可能也会有帮助。我上面提到的代码示例是有效的,即wkhtmltopdf配置正确,所以这不是这里的问题……我可以给你两个一般提示:1。您可以在windows xp机器2上尝试此pdfkit版本。问题可能是windows中不存在fork函数。你知道如何解决windows中的fork问题吗?我上面提到的代码示例很有效,即wkhtmltopdf配置正确,因此这不是问题所在……我可以给你两个一般提示:1。您可以在windows xp机器2上尝试此pdfkit版本。windows中不存在fork函数似乎是一个问题。您知道如何解决windows中的fork问题吗?