Rails 4 wicked_pdf 从模型生成时生成空白 pdf
Rails 4 wicked_pdf generate blank pdf while generating from model
我正在尝试使用 rails 模型在服务器上保存 pdf,但它生成了一个空白 pdf。早些时候在控制器中没有问题,但现在它创建了一个空白。知道我做错了什么吗?
def generate_bulk_pdf
view = ActionView::Base.new(ActionController::Base.view_paths, {})
view.extend(ApplicationHelper)
view.extend(AbstractController::Rendering)
view.extend(Rails.application.routes.url_helpers)
students = Student.all.order('id ASC')
students.each do | aStudent |
pdf = WickedPdf.new.pdf_from_string(
view.render_to_string(
:template => "#{Rails.root.join('templates/challen.pdf.erb')}",
:locals => { '@student' => aStudent }
)
)
save_path = Rails.root.join('pdfs','filename.pdf')
File.open(save_path, 'wb') do |file|
file << pdf
end
end
end
知道我做错了什么吗?我找不到任何解决方案
一个好的测试是在您的模板中放置一行简单的文本,然后查看您是否获得包含该行的 PDF。去掉所有东西,这样你就可以生成一个没有本地人的 PDF,只有那 1 个字符串,让我知道。
这是我的设置方式,它工作正常,它可能会点击某些东西:)
def generate_pdf_voucher(voucher, dir_name)
view = ActionView::Base.new(Rails.root.join('app/views'))
view.class.include ApplicationHelper
view.class.include Rails.application.routes.url_helpers
pdf = view.render :pdf => a_name,
:template => 'layouts/pdfs/voucher_pdf',
:layout => 'layouts/pdfs/pdf.html.erb',
:header => {:right => '[page] of [topage]'},
:locals => {:@voucher => voucher}
# then save to a file
pdf = WickedPdf.new.pdf_from_string(pdf)
save_path = Rails.root.join('public', 'pdfs', dir_name, "#{voucher[:user].id.to_s}.pdf")
File.open(save_path, 'wb') do |file|
file << pdf
end
end
pdf.html.erb
是PDF的结构
voucher_pdf
都是动态的东西
如果这没有帮助,请发表评论,我会删除它。
我正在尝试使用 rails 模型在服务器上保存 pdf,但它生成了一个空白 pdf。早些时候在控制器中没有问题,但现在它创建了一个空白。知道我做错了什么吗?
def generate_bulk_pdf
view = ActionView::Base.new(ActionController::Base.view_paths, {})
view.extend(ApplicationHelper)
view.extend(AbstractController::Rendering)
view.extend(Rails.application.routes.url_helpers)
students = Student.all.order('id ASC')
students.each do | aStudent |
pdf = WickedPdf.new.pdf_from_string(
view.render_to_string(
:template => "#{Rails.root.join('templates/challen.pdf.erb')}",
:locals => { '@student' => aStudent }
)
)
save_path = Rails.root.join('pdfs','filename.pdf')
File.open(save_path, 'wb') do |file|
file << pdf
end
end
end
知道我做错了什么吗?我找不到任何解决方案
一个好的测试是在您的模板中放置一行简单的文本,然后查看您是否获得包含该行的 PDF。去掉所有东西,这样你就可以生成一个没有本地人的 PDF,只有那 1 个字符串,让我知道。
这是我的设置方式,它工作正常,它可能会点击某些东西:)
def generate_pdf_voucher(voucher, dir_name)
view = ActionView::Base.new(Rails.root.join('app/views'))
view.class.include ApplicationHelper
view.class.include Rails.application.routes.url_helpers
pdf = view.render :pdf => a_name,
:template => 'layouts/pdfs/voucher_pdf',
:layout => 'layouts/pdfs/pdf.html.erb',
:header => {:right => '[page] of [topage]'},
:locals => {:@voucher => voucher}
# then save to a file
pdf = WickedPdf.new.pdf_from_string(pdf)
save_path = Rails.root.join('public', 'pdfs', dir_name, "#{voucher[:user].id.to_s}.pdf")
File.open(save_path, 'wb') do |file|
file << pdf
end
end
pdf.html.erb
是PDF的结构
voucher_pdf
都是动态的东西
如果这没有帮助,请发表评论,我会删除它。