我希望表格以pdf格式显示。
我们正在使用
format.html
format.json{render json: @user}
等用于生成 html ,json 格式
相似地
- 我想将页面呈现为 pdf 。
那么如果可以在rails中执行哪些步骤???
我希望表格以pdf格式显示。
我们正在使用
format.html
format.json{render json: @user}
等用于生成 html ,json 格式
相似地
那么如果可以在rails中执行哪些步骤???
注册 PDF 类型以在 respond_to 块中使用
# config/mime_types.rb
Mime::Type.register "application/pdf", :pdf
在您的控制器中响应 PDF 格式请求
respond_to do |format|
format.html
format.json{render json: @user}
format.pdf do
# ...
# here your PDF generating code
# ...
send_data(your_generated_pdf, filename: 'your_filename.pdf', type: 'application/pdf')
end
end
要生成 PDF,您可以将pdfkit与wkthmltopdf、 Prawn 等一起使用。有关其用法,请参阅各自的文档。
从 Rails 5 开始:
添加gem 'responders'
为 Rails 5 更改日志说:“删除 respond_to/respond_with 占位符方法,此功能已提取到响应者 gem”
我认为这可能会有所帮助 [ https://github.com/mileszs/wicked_pdf ]
format.pdf
只要您的路线支持.:format
部分,您将始终能够使用like 。因此,只需使用它来捕获对 pdf 的请求。然后使用wicked_pdf
.
基本用法如下所示
def controller_action
... ... ...
... ... ...
format.pdf do
render :pdf => "file_name"
end
end
这是另一篇文章可能有助于理解用法。
另一件事是虾。
它似乎更健壮并支持复杂的情况。所以你可以选择这个来处理一些复杂的事情。在此处获取https://prawnpdf.org/manual.pdf。API 文档:https ://prawnpdf.org/api-docs/2.3.0/
感谢格伦指出。
最后它完成了prawn
and prawn-rails
。这是详细信息。
准备好我的系统
# Add this to your Gemfile
gem 'prawn'
gem 'prawn_rails'
# run
bundle install
我点击 urlhttp://localhost:3000/regions
即点击index
ofRegionsController
并将页面显示为 pdf 格式。
我有一个Region
具有单个属性的模型name
。表中有两个条目regions
。
[
#<Region id: 1, name: "Region 1", ... >,
#<Region id: 2, name: "Region 2", ... >
]
我的控制器方法:
def index
@regions = Region.all # Should return two region objects :)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @regions }
format.pdf # <---------- This will handle the pdf response
end
end
我在views/regions/index.pdf.prawn
. 无论如何,视图文件名格式是:action.pdf.prawn
并且视图文件包含
prawn_document() do |pdf|
@regions.each {|r| pdf.text r.name}
end
这将只输出区域的名称。
就是这样。您的页面为 pdf 格式。现在只需使用 和 提供的所有其他Prawn
选项Prawn-Rails
。你可以在这里找到一些 - http://prawn-rails-demo.heroku.com/
只是想写一系列博客来指导如何在 rails 3 中使用不同的 pdf 生成工具。
让我知道它是否能解决您的问题。
如果您需要使用模板,您始终可以单独使用combine_pdf gem(它具有较小的编辑功能,例如表格和文本框)或与上述任何解决方案一起使用,例如Prawn。