ReportLab:如何对齐文本对象?
我有以下 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 是唯一可以指定字符之间空格的方法
有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
基本上你只需要计算字符串的宽度,你想要将其居中的区域的宽度,然后你就完成了。
使用 Canvas.stringWidth 来确定给定字符串(具有字体和大小)占用的宽度。它没有考虑字符间距,但我做了一些测试,表明可以解决这个问题。
它所做的只是使用原始的
stringWidth
来计算字符串的宽度,并在字符之间添加额外的空格。现在我对排版没有经验,所以我不确定像字距调整这样的字体功能是否会导致它无法使用。如果您像这样调整 x 原点,您的字符串将居中。
我使用的小测试脚本 http://pastebin.com/PQxzi1Kf (代码并不美观,但它有效) 。
Basically you only have to calculate the width of the string, the width of the area where you want to center it, and you're done.
Use Canvas.stringWidth to determine the width a given string (with a font and size) occupies. It doesn't take char spacing into account, but I did some tests that suggests one can fix that.
All it does is using the original
stringWidth
to calculate the width of the string, and add the additional spaces between the characters. Now I'm not experienced with typography, so I'm not sure if font features like kerning may render this unusable.If you adjust your x origin like this, your string will be centered.
Small test script I used http://pastebin.com/PQxzi1Kf (code is not a beauty, but it works).
Reportlab 有一个方法,
drawCentredString
(以英式拼写为中心)。这将使您的文本沿着给定的 x 坐标居中。http://www.reportlab.com/apis/reportlab/2.4/pdfgen.html
Reportlab has a method,
drawCentredString
(centred for British spelling). This will center your text along the given x coordinate.http://www.reportlab.com/apis/reportlab/2.4/pdfgen.html
尝试:
来自:http://two.pairlist.net/pipermail/reportlab-users/2006-June/005092.htmlTry:
<para alignment="center">
From: http://two.pairlist.net/pipermail/reportlab-users/2006-June/005092.html