有比HTML更适合打印的布局语言吗?

2024-04-19 20:51:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python和Qt 4.4,我必须打印一些页面。最初我以为我会用HTML和CSS来生成那些页面。但是HTML有一些限制。

现在的问题是:有没有比HTML更好的东西,但仅仅(或几乎)易于使用?此外,它应该与GPL兼容。

编辑:

kdgregory&;Mark G:最明显的限制是我无法指定打印机边距。还有一个问题:如何添加页码?

杰里米·弗伦奇:我要打印的一件事是,有人订购的所有产品的清单,可以分散在几页纸上。


Tags: 编辑产品html打印机页面gplqtcss
3条回答

8年来,我一直在与Python的打印(或PDF)输出进行斗争,到目前为止,我遇到了以下方法(按个人偏好排列):

  • 通过pyJasper(由我编写)或JasperServer使用JasperReports。可以使用所见即所得设计工具iReport定义布局。Python代码将通过HTTP与基于Java的Jasper引擎联系,并使其呈现PDF(pyJasper处理这个问题)。我们每天用它写几千页。
  • 使用纯文本输出。你不能再快了。我们每天用它写几百页。
  • 使用XSLT-FO。您还必须调用基于Java的呈现引擎,比如FOB。可能会导致性能问题,但可以通过使用与Jasper相同的长时间运行的Java服务器进程来缓解。我们每天都要使用它几百页,但是编写XSLT-FO文档让我头疼。不用于新代码。
  • 生成LaTeX源并使用乳胶软件包呈现为PDF。让乳胶看起来像你是很困难的。但只要你用提供的乳胶风格,你就没事了。在我的店里不用于生产。
  • 使用ReportLab Toolkit生成PDF。有点低。更低级的:FPDF。我们每天用FPDF Ruby写几百页。为了得到我们想要的布局,我们花了很多心思。
  • 直接生成Postscript。很奇怪,但在速度和控制方面,你几乎无法获得更多。我们用它来生成每天有几十万个jpeg的联系单。喜欢摆弄,但很有趣。
  • 使用troff/groff生成Postscript/PDF。很低的水平,但很好做简单,高容量的事情。从未在生产中使用过。

对于订单、发票等,我强烈推荐jaspereports。使用可视化编辑器定义布局的能力是一个巨大的时间节省。

有乳胶。不确定这是否属于“像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()

相关问题 更多 >