从当前页面

时间:2015-10-23 08:57:09

标签: ruby-on-rails ruby-on-rails-4 pdf

我想要做的是,从当前页面生成PDF文件。 (HTML)

我调用一个控制器函数来生成我的页面,它从数据库中获取数据等等。

现在我想要一个按钮,将当前呈现的页面保存为访问者计算机上的PDF文件。我怎样才能做到这一点?

如果我使用这样的代码:

respond_to do |format|
  format.html { render :template => "user/settings" }
  format.pdf {
    kit = PDFKit.new('http://google.com')
    kit.stylesheets << "#{Rails.root}/public/stylesheets/pdf.css"
    send_data(kit.to_pdf, :filename=>"sdasd.pdf",
              :type => 'application/pdf', :disposition => 'inline')
  }

end

并重新加载页面......没有任何内容可以下载为pdf ...为什么?

1 个答案:

答案 0 :(得分:1)

您可以为当前页面的pdf创建类似的模板。然后你可以使用pdfkit gem。

将此宝石添加到您的gemfile:

gem "pdfkit"
gem "wkhtmltopdf-binary"

在你的控制器上添加这样的东西:

  def show
    @user= User.find(params[:id])
    respond_to do |format|
      format.html { render :template => "users/show" }
      format.pdf {
        html = render_to_string(:layout => false , :action => "show.pdf.erb") # your view erb files goes to :action 

        kit = PDFKit.new(html)
        kit.stylesheets << "#{Rails.root}/public/stylesheets/pdf.css"
        send_data(kit.to_pdf, :filename=>"#{@user.id}.pdf",
          :type => 'application/pdf', :disposition => 'inline')
    }

    end

  end

现在,您可以通过将.pdf添加到控制器路径来下载pdf。例如:controller/routes/path/1.pdf

或者,如果你不喜欢它,你可以做到

kit = PDFKit.new('http://google.com')