擅长:python、mysql、java
<p>基本上你只需要计算字符串的宽度,你想居中的区域的宽度,就可以了。</p>
<p>使用<a href="http://www.reportlab.com/apis/reportlab/2.4/pdfgen.html#reportlab.pdfgen.canvas.Canvas.stringWidth" rel="noreferrer">Canvas.stringWidth</a>确定给定字符串(具有字体和大小)所占的宽度。它没有考虑字符间距,但我做了一些测试,建议人们可以解决这个问题。</p>
<pre><code>def stringWidth2(string, font, size, charspace):
width = stringWidth(string, font, size)
width += (len(string) - 1) * charspace
return width
</code></pre>
<p>它所做的只是使用原始的<code>stringWidth</code>来计算字符串的宽度,并在字符之间添加额外的空格。现在我对排版没有经验,所以我不确定像字距调整这样的字体功能是否会导致这种情况无法使用。</p>
<p>如果这样调整x原点,字符串将居中。</p>
<pre><code>(area_width - string_width) / 2
</code></pre>
<p>我使用的小测试脚本<a href="http://pastebin.com/PQxzi1Kf" rel="noreferrer">http://pastebin.com/PQxzi1Kf</a>(代码不是一种美,但它起作用)。</p>