Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django/Python:使用适当的语言生成pdf_Python_Django_Pdf Generation_Pisa_Xhtml2pdf - Fatal编程技术网

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

Django/Python:使用适当的语言生成pdf,python,django,pdf-generation,pisa,xhtml2pdf,Python,Django,Pdf Generation,Pisa,Xhtml2pdf,我在Django应用程序中使用HTML源生成pdf。即: 我生成用所有“打印”内容(例如分页符、页眉、页脚等)格式化的HTML文件 我使用Pisa将此HTML转换为pdf 这个过程还可以,但速度很慢(特别是在处理长表时),根据Pisa的特性/限制,我必须使用HTML/CSS 问题是:这是从web应用程序生成pdf的正确方法(即创建HTML,然后将其转换为pdf)还是有一种更直接的方法,即使用更合适的语言“编写”pdf?众所周知,Pisa存在各种问题,尤其是长表问题。一般来说,应该避免使用PISA

我在Django应用程序中使用HTML源生成pdf。即:

  • 我生成用所有“打印”内容(例如分页符、页眉、页脚等)格式化的HTML文件
  • 我使用Pisa将此HTML转换为pdf
  • 这个过程还可以,但速度很慢(特别是在处理长表时),根据Pisa的特性/限制,我必须使用HTML/CSS


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

    众所周知,Pisa存在各种问题,尤其是长表问题。一般来说,应该避免使用PISA。其他选择包括:

    • 直接使用Reportlab
    • z3c.rml(Reportlab模板语言克隆)
    • 商业替代品:
      • PrinceXML
      • PDF反应器
    PDF制作的一般规则是:你付多少钱就得到多少


    Pisa或ApacheFop之类的转换器是半生不熟的解决方案,只适用于简单的情况,但总体来说很糟糕。

    我认为使用Pisa或类似的库从html生成pdf是最简单的方法。因为它负责插入图像、css、条形码(在pisa上)。。。等


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

    WeasyPrint作者。使用HTML/CSS生成PDF(与直接使用较低级别的PDF库相比)的目的是获得自动布局。它允许您指定诸如
    h1{page break after:avoid}
    之类的高级约束,并让布局引擎计算出来,而不是指定所有内容的绝对位置。当您对文档进行更改时,前者更易于维护

    有些工具,比如rst2pdf,已经有了,但这只是重新发明CSS的一种糟糕的方式


    但确实,转储为屏幕制作的复杂样式表可能不会产生很好的结果。最好在构建样式表时考虑打印,甚至使用完全不同的样式表,在CSS中使用
    @media print
    ,在HTML中使用

    您还可以使用QT webkit渲染引擎从HTML和django wkhtmltopdf创建PDF


    其优点是,您可以像编写WebKit时一样编写HTML和CSS。如果您正在输出一个现有的网页,这种方法很有效,但如果从头开始生成PDF,则可能不太合适。

    谢谢。但你们认为将HTML转换成pdf是一个好方法吗?奇怪的后续问题…一个做什么的好方法?你还有什么作为输入数据?我的意思是:我必须从我的应用程序中提取数据并将其转换成pdf格式;HTML只是数据和pdf之间的媒介。我想知道我是否可以直接写pdf或使用其他媒介。也许我的英语不够好。您建议哪种解决方案:Reportlab(即从Python到Pdf)或类似Pisa的“html到Pdf”转换器(即从Python到html到Pdf)?github的最新xhtml2pdf在长表中运行正常,现在也有pdftotalpages计数,也没有文档记录,请查看google group。在乳胶噩梦之后,将其用于生产长发票。无论如何,Latex速度更快,但也有一些限制,比如内存会让你迁移到lualatex。还有大约8个用于创建长表的包。回到好孩子身边。(这是一个笑话,因为Latex比较老,但不是我的经验)更多:在Latex之前,我使用libreoffice headless实现了pdf生成,它会随机消亡。后续:对于像素完美的报告,我们决定转向一个专门的报告设计器(Pentaho)