2024-09-28 22:59:50 发布
网友
我有以下ReportLab代码:
t = c.beginText() t.setFont('Arial', 25) t.setCharSpace(3) t.setTextOrigin(159,782) t.textLine("Some string") c.drawText(t)
我想要实现的是:有3个像素每个字符之间的空格(setCharSpace),并在页面中某个区域的中心对齐生成的字符串
setCharSpace
据我所知,textobject是唯一可以指定字符间距的方法。
有什么想法吗?
Reportlab有一个方法drawCentredString(以英国拼写为中心)。这将使文本沿给定的x坐标居中。
drawCentredString
http://www.reportlab.com/apis/reportlab/2.4/pdfgen.html
基本上你只需要计算字符串的宽度,你想居中的区域的宽度,就可以了。
使用Canvas.stringWidth确定给定字符串(具有字体和大小)所占的宽度。它没有考虑字符间距,但我做了一些测试,建议人们可以解决这个问题。
def stringWidth2(string, font, size, charspace): width = stringWidth(string, font, size) width += (len(string) - 1) * charspace return width
它所做的只是使用原始的stringWidth来计算字符串的宽度,并在字符之间添加额外的空格。现在我对排版没有经验,所以我不确定像字距调整这样的字体功能是否会导致这种情况无法使用。
stringWidth
如果这样调整x原点,字符串将居中。
(area_width - string_width) / 2
我使用的小测试脚本http://pastebin.com/PQxzi1Kf(代码不是一种美,但它起作用)。
从:http://two.pairlist.net/pipermail/reportlab-users/2006-June/005092.html尝试:<para alignment="center">
<para alignment="center">
Reportlab有一个方法
drawCentredString
(以英国拼写为中心)。这将使文本沿给定的x坐标居中。http://www.reportlab.com/apis/reportlab/2.4/pdfgen.html
基本上你只需要计算字符串的宽度,你想居中的区域的宽度,就可以了。
使用Canvas.stringWidth确定给定字符串(具有字体和大小)所占的宽度。它没有考虑字符间距,但我做了一些测试,建议人们可以解决这个问题。
它所做的只是使用原始的
stringWidth
来计算字符串的宽度,并在字符之间添加额外的空格。现在我对排版没有经验,所以我不确定像字距调整这样的字体功能是否会导致这种情况无法使用。如果这样调整x原点,字符串将居中。
我使用的小测试脚本http://pastebin.com/PQxzi1Kf(代码不是一种美,但它起作用)。
从:http://two.pairlist.net/pipermail/reportlab-users/2006-June/005092.html尝试:
<para alignment="center">
相关问题 更多 >
编程相关推荐