【问题标题】:How to render format in pdf in rails如何在rails中以pdf格式呈现
【发布时间】:2012-08-25 07:54:12
【问题描述】:

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

我们正在使用

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

等生成html,json格式

同样

  • 我想将页面呈现为 pdf 。

那么如果在rails中可以有哪些步骤???

【问题讨论】:

  • 是否可以使用 format.pdf {render :pdf } 等

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


【解决方案1】:

第一步:

注册 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 等。有关其用法,请参阅各自的文档。

从 Rails 5 开始:

第三步:

添加 gem 'responders' 如 Rails 5 变更日志所述:“删除 respond_to/respond_with 占位符方法,此功能已提取到响应者 gem”

【讨论】:

【解决方案2】:

另一件事是Prawn

它似乎更健壮并支持复杂的情况。所以你可以选择这个来处理一些复杂的事情。在此处获取https://prawnpdf.org/manual.pdf。 API 文档:https://prawnpdf.org/api-docs/2.3.0/

感谢格伦指出。

【讨论】:

  • 你想使用Prawn?或Wicked_pdf
  • 大虾,但首先我想要工作示例,我不了解手册和互联网内容...
  • 链接已损坏。这个大虾? prawnpdf.org/api-docs/2.3.0
【解决方案3】:

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

只要您的路线支持.:format 部分,您将始终能够像format.pdf 一样使用。因此,只需使用它来捕获对 pdf 的请求。然后使用wicked_pdf 渲染pdf。

基本用法如下所示

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

这里是another article 可能有助于理解用法。

【讨论】:

【解决方案4】:

终于用prawnprawn-rails 完成了。这是详细信息。

让我的系统准备就绪

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

# run
bundle install

我点击了网址http://localhost:3000/regions,即点击RegionsControllerindex,它将页面显示为pdf格式。

我有一个具有单个属性 nameRegion 模型。 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 格式。现在只需使用PrawnPrawn-Rails 提供的所有其他选项。你可以在这里找到一些 - http://prawn-rails-demo.heroku.com/

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

如果它解决了你的问题,请告诉我。

【讨论】:

  • 你为什么不把你的第二个答案合并到第一个?
  • 嗯...大约两年前,但可能是因为第二个回答就像对Prawn 说“嗨”,第三个回答是与他和一个新伙伴prawn_rails 做生意。不想混在一起。
【解决方案5】:

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

【讨论】:

    猜你喜欢
    • 2014-10-04
    • 2010-11-22
    • 1970-01-01
    • 2023-03-18
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 2010-09-25
    相关资源
    最近更新 更多