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

Moh*_*ikh 4 pdf render report ruby-on-rails-3

我希望表格以pdf格式显示.

我们正在使用

format.html
format.json{render json: @user}
Run Code Online (Sandbox Code Playgroud)

等用于生成html,json格式

同样

  • 我想将页面呈现为pdf.

那么如果有可能在轨道上有什么步骤???

Sam*_*ron 7

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

format.pdf只要您的路线支持.:format部分,您将始终能够使用.所以只需使用它来捕获pdf请求.然后使用渲染pdf wicked_pdf.

基本用法如下所示

def controller_action
    ... ... ...
    ... ... ...
    format.pdf do
        render :pdf => "file_name"
    end
end
Run Code Online (Sandbox Code Playgroud)

这是另一篇文章可能有助于理解其用法.


sil*_*rdr 7

第一步:注册PDF类型以在respond_to块中使用

# config/mime_types.rb
Mime::Type.register "application/pdf", :pdf
Run Code Online (Sandbox Code Playgroud)

第二步:在你的控制器中响应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
Run Code Online (Sandbox Code Playgroud)

要生成PDF,您可以使用pdfkitwkthmltopdf,Prawn等.请参阅相应的文档说明其用法.


Sam*_*ron 5

另一件事是大虾

似乎更健壮并支持复杂情况。因此,您可以选择此选项以处理复杂的问题。在此处获取http://prawn.majesticseacreature.com/manual.pdf


Sam*_*ron 5

最后完成了prawnprawn-rails.这是详细信息.

使我的系统准备好

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

# run
bundle install
Run Code Online (Sandbox Code Playgroud)

我打的网址http://localhost:3000/regions即打indexRegionsController,它显示的页面为PDF格式.

我有一个Region具有单一属性的模型name.表中有两个条目regions.

[
 #<Region id: 1, name: "Region 1", ... >,
 #<Region id: 2, name: "Region 2", ... >
]
Run Code Online (Sandbox Code Playgroud)

我的控制器方法:

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
Run Code Online (Sandbox Code Playgroud)

我在中创建了一个视图文件views/regions/index.pdf.prawn.无论如何,视图文件名格式是:action.pdf.prawn,视图文件包含

prawn_document() do |pdf|
    @regions.each {|r| pdf.text r.name}
end
Run Code Online (Sandbox Code Playgroud)

这将只输出Regions的名称.

而已.您的页面为pdf格式.现在只需使用Prawn和提供的所有其他选项Prawn-Rails.你可以在这里找到一些 - http://prawn-rails-demo.heroku.com/

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

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

  • 你为什么不把你的第二个答案合并到第一个答案中? (2认同)