我想要做的是,从当前页面生成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 ...为什么?
答案 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')