WickedPDF 在尝试呈现多个 pdf 时生成空白 pdf
WickedPDF generating blank pdfs when attempting to render multiple pdfs
我在 Rails 6 项目中使用 WickedPDF 从 HTML 生成 PDF,然后将它们与预填充的 PDF 表单合并。 WickedPDF 生成的 PDF 分为两个部分,每个部分都必须与一个表格组合。表格必须出现在各自部分的开头。
我尝试使用 WickedPDF 生成两个 PDF,然后使用 combine_pdf 以适当的顺序将它们与预填表格合并。
render_ar_docs 和 render_gl_docs 在我单独访问它们的路线时都按预期工作:它们生成并保存预期的 PDF。但是,当我在 print_complete_docs 操作中按顺序调用它们时,生成的 PDF 是一个空白页。
如何通过一次操作生成多个 PDF?
感谢您的帮助。
def print_complete_docs
@policy.fill_and_save_acord28
@policy.fill_and_save_acord25
render_ar_docs
render_gl_docs
pdf = CombinePDF.new
pdf << CombinePDF.load("tmp/acord28.pdf")
pdf << CombinePDF.load("tmp/ar_docs.pdf")
pdf << CombinePDF.load("tmp/acord25.pdf")
pdf << CombinePDF.load("tmp/gl_docs.pdf")
pdf.save "tmp/complete_docs.pdf"
send_file("#{Rails.root}/tmp/complete_docs.pdf", filename: "tmp/#{@policy.legal_vesting} Complete Docs.pdf", type: 'application/pdf')
end
def render_ar_docs
render pdf: 'ar_docs',
layout: 'document',
save_to_file: Rails.root.join('tmp', "ar_docs.pdf"),
save_only: true
end
def render_gl_docs
render pdf: 'gl_docs',
layout: 'document',
save_to_file: Rails.root.join('tmp', "gl_docs.pdf"),
save_only: true
end
我的问题似乎与尝试在单个请求中多次呈现有关,Rails 不允许这样做。相反,我应该使用 WickedPDF 的 pdf_from_string 方法。
我的新方法(过于冗长且未经重构,但功能强大)如下所示:
def print_complete_docs
@policy.fill_and_save_acord28
@policy.fill_and_save_acord25
render_ar_docs
render_gl_docs
pdf = CombinePDF.new
pdf << CombinePDF.load("tmp/acord28.pdf")
pdf << CombinePDF.load("tmp/ar_docs.pdf")
pdf << CombinePDF.load("tmp/acord25.pdf")
pdf << CombinePDF.load("tmp/gl_docs.pdf")
pdf.save "tmp/complete_docs.pdf"
send_file("#{Rails.root}/tmp/complete_docs.pdf", filename: "tmp/#{@policy.legal_vesting} Complete Docs.pdf", type: 'application/pdf')
end
def render_ar_docs
ar_docs = WickedPdf.new.pdf_from_string(
render_to_string(
'policies/ar_docs.html.erb',
layout:'document.html.erb',
locals: { policy: @policy }
),
layout: 'document.html.erb'
)
save_path = Rails.root.join('tmp','ar_docs.pdf')
File.open(save_path, 'wb') do |file|
file << ar_docs
end
end
def render_gl_docs
gl_docs = WickedPdf.new.pdf_from_string(
render_to_string(
'policies/gl_docs.html.erb',
layout:'document.html.erb',
locals: { policy: @policy }
),
layout: 'document.html.erb'
)
save_path = Rails.root.join('tmp','gl_docs.pdf')
File.open(save_path, 'wb') do |file|
file << gl_docs
end
end
PS:感谢@Unixmonkey 的帮助,以及他对 WickedPDF 的贡献!
我在 Rails 6 项目中使用 WickedPDF 从 HTML 生成 PDF,然后将它们与预填充的 PDF 表单合并。 WickedPDF 生成的 PDF 分为两个部分,每个部分都必须与一个表格组合。表格必须出现在各自部分的开头。
我尝试使用 WickedPDF 生成两个 PDF,然后使用 combine_pdf 以适当的顺序将它们与预填表格合并。
render_ar_docs 和 render_gl_docs 在我单独访问它们的路线时都按预期工作:它们生成并保存预期的 PDF。但是,当我在 print_complete_docs 操作中按顺序调用它们时,生成的 PDF 是一个空白页。
如何通过一次操作生成多个 PDF?
感谢您的帮助。
def print_complete_docs
@policy.fill_and_save_acord28
@policy.fill_and_save_acord25
render_ar_docs
render_gl_docs
pdf = CombinePDF.new
pdf << CombinePDF.load("tmp/acord28.pdf")
pdf << CombinePDF.load("tmp/ar_docs.pdf")
pdf << CombinePDF.load("tmp/acord25.pdf")
pdf << CombinePDF.load("tmp/gl_docs.pdf")
pdf.save "tmp/complete_docs.pdf"
send_file("#{Rails.root}/tmp/complete_docs.pdf", filename: "tmp/#{@policy.legal_vesting} Complete Docs.pdf", type: 'application/pdf')
end
def render_ar_docs
render pdf: 'ar_docs',
layout: 'document',
save_to_file: Rails.root.join('tmp', "ar_docs.pdf"),
save_only: true
end
def render_gl_docs
render pdf: 'gl_docs',
layout: 'document',
save_to_file: Rails.root.join('tmp', "gl_docs.pdf"),
save_only: true
end
我的问题似乎与尝试在单个请求中多次呈现有关,Rails 不允许这样做。相反,我应该使用 WickedPDF 的 pdf_from_string 方法。
我的新方法(过于冗长且未经重构,但功能强大)如下所示:
def print_complete_docs
@policy.fill_and_save_acord28
@policy.fill_and_save_acord25
render_ar_docs
render_gl_docs
pdf = CombinePDF.new
pdf << CombinePDF.load("tmp/acord28.pdf")
pdf << CombinePDF.load("tmp/ar_docs.pdf")
pdf << CombinePDF.load("tmp/acord25.pdf")
pdf << CombinePDF.load("tmp/gl_docs.pdf")
pdf.save "tmp/complete_docs.pdf"
send_file("#{Rails.root}/tmp/complete_docs.pdf", filename: "tmp/#{@policy.legal_vesting} Complete Docs.pdf", type: 'application/pdf')
end
def render_ar_docs
ar_docs = WickedPdf.new.pdf_from_string(
render_to_string(
'policies/ar_docs.html.erb',
layout:'document.html.erb',
locals: { policy: @policy }
),
layout: 'document.html.erb'
)
save_path = Rails.root.join('tmp','ar_docs.pdf')
File.open(save_path, 'wb') do |file|
file << ar_docs
end
end
def render_gl_docs
gl_docs = WickedPdf.new.pdf_from_string(
render_to_string(
'policies/gl_docs.html.erb',
layout:'document.html.erb',
locals: { policy: @policy }
),
layout: 'document.html.erb'
)
save_path = Rails.root.join('tmp','gl_docs.pdf')
File.open(save_path, 'wb') do |file|
file << gl_docs
end
end
PS:感谢@Unixmonkey 的帮助,以及他对 WickedPDF 的贡献!