我见过类似的问题,但没有完全像这样 - 我认为这是一个配置问题,但我不知道链中的位置。
我能够在我的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/<report_key>.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的代表 - 无赖。)