首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何确定reportlab中旋转文本的长度

如何确定reportlab中旋转文本的长度
EN

Stack Overflow用户
提问于 2016-02-23 09:16:56
回答 1查看 2.5K关注 0票数 3

我使用canvas.stringWidth来计算reportlab.But中的句子长度,当我旋转大的状态时,它用计算出的宽度来包装文本,而不是旋转的。代码段是

代码语言:javascript
运行
复制
text_len = canvas.stringWidth("Hello" , "Helvetica", 10)
canvas.rotate(rotation)
P.drawOn(canvas, 0, 0)

它适用于直体文本,但对于旋转文本则不起作用。

EN

回答 1

Stack Overflow用户

发布于 2016-02-25 13:48:41

代码的问题是,canvas.stringWidth(self, text, fontName, fontSize)返回给定字符串的宽度,而不包装。因此,旋转画布不会减少宽度,因为字符串仍然是相同的长度。

为了展示这一点,让我们看一下下面的示例:

代码语言:javascript
运行
复制
def rotated_text_length(c, string):
    text_len = c.stringWidth(string, "Helvetica", 10)
    print "Normal text: ", text_len

    c.rotate(90)
    text_len = c.stringWidth(string, "Helvetica", 10)
    print "Rotated text: ", text_len

c = canvas.Canvas("hello.pdf")
rotated_text_length(c, "This is a very silly example"*100)
rotated_text_length(c, "This is a very silly example"*50)

如果字符串宽度将环绕,我们将获得两个旋转句子的相同长度,但是输出如下:

代码语言:javascript
运行
复制
Normal text:  11891.0
Rotated text:  11891.0
Normal text:  5945.5
Rotated text:  5945.5

它表示返回的宽度仅取决于字符串长度(当然还有字体)。因此,不应用基于Reportlab引用的包装,这是有意义的:

def stringWidth(self, text, fontName=None, fontSize=None): 获取给定字体和大小的字符串的宽度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35573357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档