我正在尝试使用wicked pdf将html页面呈现为pdf。
mime_types.rb
Mime::Type.register "application/pdf", :pdf
控制器方法
def invoice
respond_to do |format|
format.html
format.pdf do
render pdf: "invoice"
end
end
end
wicked_pdf.rb
:exe_path => '/usr/local/bin/wkhtmltopdf'
invoice.pdf.erb
<div id="test_pdf">
test data
</div>
我已添加上述代码并将以下宝石添加到我的项目中。
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
当我尝试渲染页面时,出现Template is missing
错误。如果我将invoice.pdf.erb
重命名为invoice.html.erb
我可以绕过错误,但我将获得一个HTML页面而不是pdf。
我错过了什么吗?
答案 0 :(得分:3)
如wicked_pdf文档中所述,您可以像这样使用它。它自我解释。不要忘记创建&#34; pdfs&#34;目录
# or from your controller, using views & templates and all wicked_pdf options as normal
pdf = render_to_string pdf: "some_file_name", template: "templates/pdf.html.erb", encoding: "UTF-8"
# then save to a file
save_path = Rails.root.join('pdfs','filename.pdf')
File.open(save_path, 'wb') do |file|
file << pdf
end
send_file save_path, :type=>'text/pdf
答案 1 :(得分:1)
如果你只想渲染pdf,那么这段代码就足够了:
def show
respond_to do |format|
format.html
format.pdf do
render pdf: 'file_name',
template: 'example/pdf_view.pdf.erb',
layout: 'layouts/application.pdf.erb'
end
end
end
如果您想保存为pdf:
def save
pdf = WickedPdf.new.pdf_from_string(
render_to_string(
template: 'example/pdf_view.pdf.erb',
layout: 'layouts/application.pdf.erb'))
send_data(pdf,
filename: 'file_name.pdf',
type: 'application/pdf',
disposition: 'attachment')
end