【发布时间】:2021-12-16 09:07:19
【问题描述】:
我希望能够在一个 PDF 文档中打印多个页面,其中每个页面都是来自 for 循环中的查询的不同结果,我在不同的平台上销售,当我想打印每个销售文档时,我可以检查一个或多个框,然后单击打印和所有选择的页面都转换为一个文档,我希望能够对烧瓶做同样的事情。我的代码只打印队列中的最后一个文档,但正如您从终端打印出的每个文档所看到的那样,在此示例中要打印四个文档。
这是我目前的代码
@bp.route('/sales/factures_pdf', methods=['GET', 'POST'])
@login_required
def factures_pdf():
addresses = Add1.query.order_by(Add1.id.desc()).filter(Add1.suivi=="0").all()
for add in addresses:
print(add.id, add.order_id)
if add.erdmaddress:
invoice = Erdmsale.query.filter(Erdmsale.id==add.erdmaddress).first()
buyer = Erdmsale.query.filter(Erdmsale.invoice==invoice.invoice).all()
eu = eu_poste.query.filter(eu_poste.pays==invoice.pays).first()
if eu:
rendered = render_template('/erdm_sales/erdm_print_facture2.html', buyer=buyer, invoice=invoice)
pdf = pdfkit.from_string(rendered, False)
response = make_response(pdf)
response.headers['Content-Type'] = 'application/pdf'
response.headers['Content-Disposition'] = 'inline; filename=Facture.pdf'
rendered = render_template('/erdm_sales/erdm_print_facture.html', buyer=buyer, invoice=invoice)
pdf = pdfkit.from_string(rendered, False)
response = make_response(pdf)
response.headers['Content-Type'] = 'application/pdf'
response.headers['Content-Disposition'] = 'inline; filename=Facture.pdf'
if add.bdfaddress:
invoice = Sale.query.filter(Sale.id==add.bdfaddress).first()
buyer = Sale.query.filter(Sale.invoice==invoice.invoice).all()
eu = eu_poste.query.filter(eu_poste.pays==invoice.pays).first()
if eu:
rendered = render_template('/sales/print_facture1.html', buyer=buyer, invoice=invoice)
pdf = pdfkit.from_string(rendered, False)
response = make_response(pdf)
response.headers['Content-Type'] = 'application/pdf'
response.headers['Content-Disposition'] = 'inline; filename=Facture.pdf'
rendered = render_template('/sales/print_facture.html', buyer=buyer, invoice=invoice)
pdf = pdfkit.from_string(rendered, False)
response = make_response(pdf)
response.headers['Content-Type'] = 'application/pdf'
response.headers['Content-Disposition'] = 'inline; filename=Facture.pdf'
return response
这是终端输出
9139 2789695212
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-www-data'
Loading page (1/2)
[> ] 0%\r[=============================> ] 49%\r[============================================================] 100%\rPrinting pages (2/2) $
[> ] \rDone
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-www-data'
Loading page (1/2)
[> ] 0%\r[================> ] 27%\r[============================================================] 100%\rPrinting pages (2/2) $
[> ] \rDone
9138 2791653417
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-www-data'
Loading page (1/2)
[> ] 0%\r[=============================> ] 49%\r[============================================================] 100%\rPrinting pages (2/2) $
[client 91.173.134.192:49218] [> ] \rDone
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-www-data'
Loading page (1/2)
[> ] 0%\r[================> ] 27%\r[============================================================] 100%\rPrinting pages (2/2) $
[> ] \rDone
9135 69665725955778
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-www-data'
Loading page (1/2)
[> ] 0%\r[===============> ] 26%\r[============================================================] 100%\rPrinting pages (2/2) $
[> ] \rDone
9125 07363785112922
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-www-data'
Loading page (1/2)
[> ] 0%\r[===============> ] 26%\r[============================================================] 100%\rPrinting pages (2/2) $
[> ] \rDone
如您所见,每个页面都已生成,但显示的文档是最后一页,我害怕将代码更改太多,我已尝试删除除最后一个代码之外的所有代码
pdf = pdfkit.from_string(rendered, False)
response = make_response(pdf)
response.headers['Content-Type'] = 'application/pdf'
response.headers['Content-Disposition'] = 'inline;
但是没有生成文档。
非常感谢所有帮助。
热烈的问候
保罗
更新
作为说明,我尝试更改模板,因此只有一个模板,并制作了“response.headers”“附件”但同样的问题。
【问题讨论】: