gpt4 book ai didi

python - ReportLab:如何对齐文本对象?

转载 作者:太空狗 更新时间:2023-10-29 17:06:10 27 4
gpt4 key购买 nike

我有以下 ReportLab 代码:

    t = c.beginText()
t.setFont('Arial', 25)
t.setCharSpace(3)
t.setTextOrigin(159,782)
t.textLine("Some string")
c.drawText(t)

我想实现的是:每个字符之间有一个3(像素?)的空间(setCharSpace),并将结果字符串对齐到页面某个区域的中心

据我发现,textobject 是我可以在字符之间指定空格的唯一方法。

有什么想法吗?

最佳答案

基本上你只需要计算字符串的宽度,你想要居中的区域的宽度,然后你就完成了。

使用Canvas.stringWidth确定给定字符串(具有字体和大小)占用的宽度。它没有考虑字符间距,但我做了一些测试表明可以解决这个问题。

def stringWidth2(string, font, size, charspace):
width = stringWidth(string, font, size)
width += (len(string) - 1) * charspace
return width

它所做的只是使用原始的 stringWidth 来计算字符串的宽度,并在字符之间添加额外的空格。现在我没有排版经验,所以我不确定像字距调整这样的字体功能是否会导致它无法使用。

如果您像这样调整 x 原点,您的字符串将居中。

(area_width - string_width) / 2

我用的小测试脚本http://pastebin.com/PQxzi1Kf (代码不是美,但它可以工作)。

关于python - ReportLab:如何对齐文本对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com