5

现在我正在使用 Rails 3.0.0。我已经安装了 gem wicked_pdf。现在想将 pdf 文件保存在公共文件夹中。请帮助我。

4

3 回答 3

10

If you need to just create a pdf and not display it:

# create a pdf from a string
pdf = WickedPdf.new.pdf_from_string('<h1>Hello There!</h1>')

# create a pdf from string using templates, layouts and content option for header or footer
WickedPdf.new.pdf_from_string(
    render_to_string(:pdf => "pdf_file.pdf", :template => 'templates/pdf.html.erb', :layout => 'pdfs/layout_pdf'), 
    :footer => {:content => render_to_string({:template => 'templates/pdf_footer.html.erb', :layout => 'pdfs/layout_pdf'})}

# or from your controller, using views & templates and all wicked_pdf options as normal
pdf = render_to_string :pdf => "some_file_name"

# then save to a file
save_path = Rails.root.join('pdfs','filename.pdf')
File.open(save_path, 'wb') do |file|
  file << pdf
end
于 2012-06-04T09:41:09.767 回答
7

这是关于如何在 ruby​​ on rails 中转换 pdf 中的字符串的
最佳答案 如果您不反对,我提出了一个答案:
某些服务将 pdf 作为字符串返回,例如:JVBERi0xLjQKJeLjz9MKNCAwIG9iago8PC9Ue. . .
您可以从 sting 创建一个 pdf 文件,其中:

f = File.new("/tmp/file.pdf", "w")
f.write(Base64.decode64(invoice[:file]).force_encoding('UTF-8'))
f.close

AcrobatReader然后您可以使用或其他 pdf 阅读器打开 pdf 文件。
希望它有所帮助。

于 2014-09-15T17:47:27.900 回答
6

此外,您可以这样做:

render :pdf          => 'foo',
       :save_to_file => Rails.root.join('public', "foo.pdf"),
       :save_only    => true
于 2012-06-05T23:21:51.793 回答