如何在rails中以pdf格式化格式

时间:2012-08-25 07:54:13

标签: ruby-on-rails-3 pdf report render

我希望表格以pdf 格式显示

我们正在使用

format.html
format.json{render json: @user}

等用于生成html,json格式

类似地

  • 我想将页面呈现为pdf。

如果可以在rails ???

中有什么步骤

5 个答案:

答案 0 :(得分:7)

我认为这可能有助于[https://github.com/mileszs/wicked_pdf]

只要您的路线支持format.pdf部分,您就可以像.:format一样使用。所以只需使用它来捕获pdf请求。然后使用wicked_pdf

渲染pdf

基本用法如下所示

def controller_action
    ... ... ...
    ... ... ...
    format.pdf do
        render :pdf => "file_name"
    end
end

以下another article可能有助于了解其用法。

答案 1 :(得分:7)

第一步:注册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,您可以将pdfkitwkthmltopdf,Prawn和其他一些一起使用。请参阅有关其用法的相应文档。

答案 2 :(得分:5)

另一件事是Prawn

它似乎更强大并支持复杂的情况。所以你可以选择这个来处理复杂的事情。在这里获取http://prawn.majesticseacreature.com/manual.pdf

答案 3 :(得分:5)

最后用prawnprawn-rails完成。这是详细信息。

让我的系统准备就绪

# Add this to your Gemfile
gem 'prawn'
gem 'prawn_rails'

# run
bundle install

我点击了网址http://localhost:3000/regions,即点击了index的{​​{1}},并将该网页显示为pdf格式。

我有一个RegionsController模型,其中包含一个属性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

这将只输出Regions的名称。

多数民众赞成。您的页面为pdf格式。现在只需使用prawn_document() do |pdf| @regions.each {|r| pdf.text r.name} end Prawn提供的所有其他选项即可。你可以在这里找到一些 - http://prawn-rails-demo.heroku.com/

只是想写一系列博客,指导如何使用不同的pdf生成工具和rails 3。

如果它能解决您的问题,请告诉我。

答案 4 :(得分:0)

如果您需要使用模板,您可以随时使用the combine_pdf gem(它具有较小的编辑功能,例如表格和文本框),或者与上述任何解决方案一起使用,例如{{3} }。