Rails 4个邪恶的pdf问题
Rails 4 wicked pdf Issue
我正在尝试使用 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。
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
当我尝试呈现页面时,出现 Template is missing
错误。如果我将 invoice.pdf.erb
重命名为 invoice.html.erb
我可以绕过错误,但我将得到一个 html 页面而不是 pdf。
我错过了什么吗?
wicked_pdf的文档中有提到,可以这样使用。它不言自明。不要忘记创建 "pdfs" 目录
# 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
如果您只想渲染 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
我正在尝试使用 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。
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
当我尝试呈现页面时,出现 Template is missing
错误。如果我将 invoice.pdf.erb
重命名为 invoice.html.erb
我可以绕过错误,但我将得到一个 html 页面而不是 pdf。
我错过了什么吗?
wicked_pdf的文档中有提到,可以这样使用。它不言自明。不要忘记创建 "pdfs" 目录
# 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
如果您只想渲染 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