我已经看到了类似的问题,但没有完全像这样 - 我相信它是一个配置问题,但我不知道在链中的哪个位置.
我能够在我的mac和我的ubuntu env - ubuntu上使用pdfkit和wkhtmltopdf成功生成pdfs.
ubuntu版本存在轻微的渲染问题,而Mac上则没有.
最大/最重要的问题是我用这个css实现的分页符:
div.page{ page-break-after: always !important; page-break-inside: avoid !important; }
这是我生成pdf的python代码(flask):
@app.route('/report/.pdf') def report_pdf(report_key): #replace with sso user_id = 1 config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf') try: report = _generate_report(report_key) except Exception as e: logging.error("could not get report for {}: {}".format(report_key, e)) raise HTTPException else: template = render_template('report-pdf.html', report=report) pdf = pdfkit.from_string(template.encode('ascii', 'ignore').decode('ascii'), False, configuration=config) response = make_response(pdf) response.mimetype = 'application/pdf' response.headers["Content-Disposition"] = "attachment; filename={}_{}.pdf".format(strftime("%Y-%m-%d", gmtime()), report_key) return response
我只能假设这是一个用户代理问题 - 然而 - 这没有意义,因为webkit应该识别中断(而且我几乎可以肯定wkhtmltopdf中的WK意味着webkit).
在ubuntu服务器上我使用xvfb连接pdfkit和wkhtmltopdf - 使用此命令我到处都看到:
echo 'xvfb-run --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf $*' > /usr/bin/wkhtmltopdf.sh
https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2020
我试过这个但它失败了,我似乎找不到通过pdfkit发送自定义标头(和传播)选项的正确方法.那说我不知道这是否是解决方案.
任何帮助都会很棒,Thansk
(顺便说一句,这对我来说是一个新的选项.我退出了FB并且不得不在SO上开始一个新的 - 我的旧用户名有1k的代表 - 真可惜.)