Django/Python:用适当的语言生成pdf

Don*_*Don 18 python django pdf-generation pisa xhtml2pdf

我在我的Django应用程序中使用Pisa/xhtml2pdf从HTML源生成pdf.那是:

  1. 我生成格式化所有'打印'东西的HTML文件(例如分页符,页眉,页脚等)
  2. 我使用Pisa将此HTML转换为pdf

这个过程还可以,但速度很慢(特别是在处理长表时),我必须根据Pisa功能/限制使用HTML/CSS.

问题是:这是从Web应用程序生成pdf的正确方法(即创建HTML然后将其转换为pdf)还是有更直接的方法,即用更合适的语言"编写"pdf?

Sim*_*pin 10

WeasyPrint的作者在这里.使用HTML/CSS生成PDF(而不是直接使用较低级别的PDF库)的目的是获得自动布局.它允许您指定高级约束h1 { page-break-after: avoid },让布局引擎弄清楚,而不是指定所有内容的绝对位置.当您对文档进行更改时,前者更易于维护.

像rst2pdf这样工具有自己的样式表语法,但这只是重新发明CSS的一种坏方法.

但是,倾倒为屏幕制作的复杂样式表可能不会产生很好的效果.最好在构建带有print的样式表时,甚至@media print在CSS或<link media="print">HTML中使用完全不同的样式表.


sur*_*urX 7

我认为使用像Pisa或http://weasyprint.org/这样的库从html生成pdf 是最简单的方法.因为它负责插入图像,css,条形码(比萨)......等等

如果您想自己编写pdf,请查看Reportlab,但实现起来需要更长的时间.在这两种情况下,我建议始终使用celery或python-rq在后台生成pdf以进行优化.