ReportLab Python 水平居中对齐

ReportLab Python horizontal centre alignment

我正在尝试使用 reportlab 将简单文本水平居中放置在自定义大小的 PDF 上。我的代码如下。我试过使用 doc.drawCentredString 但这会切断文本的开头。现在,文本在左下角对齐。但是由于文本是动态的,所以我无法真正设置固定的水平位置,因为它不会总是居中。

我的代码是:

from reportlab.lib.units import mm
from reportlab.pdfgen.canvas import Canvas

doc = Canvas('document.pdf')
doc.setPageSize((72 * mm, 160 * mm))

doc.setFillColorRGB(1,0,0)
doc.setFont("Helvetica", 14)
doc.drawString(0,0,"Hello World")

doc.showPage()
doc.save()

谁能告诉我如何使文档的文本居中?

Canvas.drawCentredString() 将字符串的中心放在您指定的坐标中,它应该是页面的中心而不是 0。

from reportlab.lib.units import mm
from reportlab.pdfgen.canvas import Canvas

doc = Canvas('D:/w/document.pdf')
doc.setPageSize((72 * mm, 160 * mm))

doc.setFillColorRGB(1,0,0)
doc.setFont("Helvetica", 14)

x = doc._pagesize[0] / 2

doc.drawCentredString(x, 0, "Hello World")

doc.showPage()
doc.save()