Nic*_*rdu 15 python pdf pdf-generation reportlab
我有以下ReportLab代码:
t = c.beginText()
t.setFont('Arial', 25)
t.setCharSpace(3)
t.setTextOrigin(159,782)
t.textLine("Some string")
c.drawText(t)
Run Code Online (Sandbox Code Playgroud)
我想要实现的是:在每个字符(setCharSpace)之间有一个3(像素?)的空格,并将结果字符串对齐在页面中某个区域的中心
就我发现而言,textobject是唯一的方法,我可以指定字符之间的空格.
有任何想法吗?
Rei*_*cke 16
基本上你只需要计算字符串的宽度,你想要居中的区域的宽度,你就完成了.
使用Canvas.stringWidth确定给定字符串(具有字体和大小)占用的宽度.它没有考虑char间距,但我做了一些测试表明可以解决这个问题.
def stringWidth2(string, font, size, charspace):
width = stringWidth(string, font, size)
width += (len(string) - 1) * charspace
return width
Run Code Online (Sandbox Code Playgroud)
它所做的只是使用原始文件stringWidth来计算字符串的宽度,并在字符之间添加额外的空格.现在我对排版没有经验,所以我不确定像字距这样的字体功能是否会使这种字体无法使用.
如果您像这样调整x原点,您的字符串将居中.
(area_width - string_width) / 2
Run Code Online (Sandbox Code Playgroud)
小测试脚本我使用http://pastebin.com/PQxzi1Kf(代码不是美女,但它的工作原理).
Reportlab 有一个方法drawCentredString(以英式拼写为中心)。这将使您的文本沿着给定的 x 坐标居中。
http://www.reportlab.com/apis/reportlab/2.4/pdfgen.html
| 归档时间: |
|
| 查看次数: |
11083 次 |
| 最近记录: |