我正在使用Python和Qt 4.4,我必须打印一些页面.最初我以为我会用CSS和CSS来生成这些页面.但HTML有一些局限性.
现在的问题是:有什么比HTML好,但只是(或几乎)易于使用?此外,它应该是GPL兼容的.
编辑:
kdgregory和Mark G:最明显的限制是我无法指定打印机边距.还有一个问题:如何添加页码?
Jeremy French:我必须打印的一件事是一份列出了所有订购的产品,这些产品可以分布在几页上.
我一直在用Python的打印(或PDF)输出打架8年了,到目前为止,我遇到了以下方法(按个人喜好排序):
通过pyJasper(由我编写)或JasperServer使用JasperReports.您可以使用WYSIWYG设计工具iReport来定义布局.您的Python代码将通过HTTP与基于Java的Jasper引擎联系,并使其呈现为PDF(pyJasper处理).我们每天使用它几千页.
使用纯文本输出.你不能更快.我们每天使用它几百页.
使用XSLT-FO.您还必须调用基于Java的渲染引擎,如FOB.可能会导致性能问题,但可以通过长时间运行的Java服务器进程来缓解 - 与Jasper相同.我们每天使用它几百页,但写XSLT-FO文件让我头疼.不用于新代码.
生成LaTeX源并使用latex软件包呈现为PDF.让LaTeX看起来像你喜欢是非常困难的.但只要你使用提供的LaTeX款式,你就可以了.我的店里没有用于生产.
使用ReportLab Toolkit生成PDF .有点低水平.更低级别:FPDF.我们每天使用FPDF-Ruby几百页.花了很多时间来获得我们想要的布局.
直接生成Postscript.奇怪但你几乎无法在速度和控制方面获得更多.我们用它来生成每天有几十万个Jpegs的联系表.需要摆弄,但很有趣.
使用troff/groff生成Postscript/PDF.非常低级别的bute很好做简单,高容量的东西.从未在生产中使用它.
对于订单,发票等我强烈推荐JasperReports.使用可视化编辑器定义布局的能力可以节省大量时间.
有LaTeX.不确定是否属于"像html一样易于使用"的类别,但并不难.
通过打印你的意思是打印机?如果是这样,请检查ReportLab的PDF工具.
from reportlab.pdfgen import canvas from reportlab.lib.units import cm c = canvas.Canvas("hello.pdf") c.drawString(9*cm, 22*cm, "Hello World!") c.showPage() c.save()