首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 3的Pdf Writer

Rails 3的Pdf Writer
EN

Stack Overflow用户
提问于 2011-01-23 02:44:09
回答 2查看 4.5K关注 0票数 4

有没有人知道一个简单的PDF写入器,可以很好地和Rails3一起工作?如果是这样的话,谁能给我指点一下,告诉我如何配置它以便与Rails3协同工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-23 07:38:42

在Rails中创建pdf主要有两种方法。

要么从头开始构建,要么使用某种工具从html生成pdf。第二种方法比较简单,但如果你想放入pdf中的内容比较复杂,那么它可能还不够。

如果你想完全控制你的pdf,你必须从头开始构建它。为此,请使用prawnprawnto之间的组合。

对于第二种更简单的选择,您可以使用PDFKit,它使用wkhtmltopdf直接从html页面生成pdf。我建议从这个开始,看看它是否适合您的目的;然后,如果您认为您需要更多的控制,而这还不够,请使用对虾。

票数 2
EN

Stack Overflow用户

发布于 2012-03-12 20:14:54

对于那些像我一样前段时间来到这里寻找在Rails3应用程序中工作的PDF::Writer的人,也许是迁移现有的Rails2.x应用程序,我最终实现了pdf-writer 1.1.8版,可以在Rails3.2应用程序中工作。

Gemfile

代码语言:javascript
复制
gem 'pdf-writer'

我在config/initializers/pdfwriter_template.rb中有这个

代码语言:javascript
复制
module ActionView
  module Template::Handlers
    class PDFWriter
      def call(template)
        require_engine 
        "pdf = ::PDF::Writer.new( :paper => 'A4' );" +
        "pdf.compressed = true if Rails.env.to_s == 'production';" +
        template.source + 
        ";pdf.render"
      end

      protected
      def require_engine
        @required ||= begin
          require 'pdf/writer'
          require 'pdf/simpletable'

          true
        end
      end
    end
  end
end

ActiveSupport.on_load(:action_view) do
  ActionView::Template.register_template_handler :rpdf, ActionView::Template::Handlers::PDFWriter.new 
end

然后,在控制器操作中,我可以编写类似这样的代码:

代码语言:javascript
复制
def pdf_test
  @record = Record.find(params[:id])

  fileout = render_to_string :layout=>false
  send_data(fileout, :type => "application/pdf", :filename => 'test_record.pdf')
end

有一个模板文件pdf_test.rpdf

代码语言:javascript
复制
pdf.text "Hello from record number #{@record.number}!!"

注意:这不是当前在Rails中呈现的最佳实践方式!请使用PDFKit或对虾!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4769799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档