gpt4 book ai didi

python - reportlab 字符串与 TTfont 如何获得它的高度?

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:55 26 4
gpt4 key购买 nike

我正在使用 reportlab 生成 pdf 文件。我在 pdf 上绘制字符串时遇到了一些问题。如何使用 TTFont 获取字符串的高度?

代码:

# Register fonts.
pdfmetrics.registerFont(ttfonts.TTFont('fz1', 'fz1.ttf'))
pdfmetrics.registerFont(ttfonts.TTFont('fz3', 'fz3.ttf'))
pdfmetrics.registerFont(ttfonts.TTFont('fz4', 'fz4.ttf'))
pdfmetrics.registerFont(ttfonts.TTFont('fz5', 'fz5.ttf'))
pdfmetrics.registerFont(ttfonts.TTFont('w5', 'w5.ttc'))

def draw_text(canvas, fontName, fontSize, x, y, text, cmyk_color=None):
t = canvas.beginText(x * mm, y * mm)
t.setFont(fontName, fontSize)

if cmyk_color is None:
cmyk_color = (0, 0, 0, COLOR_DIV_RATIO)

canvas.setFillColorCMYK(cmyk_color[0] / COLOR_DIV_RATIO,
cmyk_color[1] / COLOR_DIV_RATIO,
cmyk_color[2] / COLOR_DIV_RATIO,
cmyk_color[3] / COLOR_DIV_RATIO)
t.textLine(text)
canvas.drawText(t)

c.drawImage('f1.jpg', 0, 0, CANVAS_WIDTH * mm, CANVAS_HEIGHT * mm)
draw_text(c, 'fz1', 15, mm2pixel(5), mm2pixel(45), u'This is a string')

我可以通过以下方式获取字符串的宽度:

text_width = stringWidth(text, 'fz1', 15)

但是,我怎样才能得到字符串的高度呢?

最佳答案

如果您使用段落然后将其包裹在 Canvas 上,它将返回给您它将占用的宽度和高度。

p = Paragraph(text, style=preferred_style)
width, height = p.wrapOn(self.canvas, aW, aH)
p.drawOn(self.canvas, x_pos, y_pos)

aH = 可用高度aW = 可用宽度

style 指的是 ParagraphStyle。

关于python - reportlab 字符串与 TTfont 如何获得它的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19372596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com