使用python svgwrite库获取组元素的宽度

时间:2017-07-05 11:51:45

标签: python svg svgwrite

我使用python库svgwrite生成svg文件。我必须将两行文本正好放在矩形的中心。文本应保持一致。矩形的宽度和高度是已知的。我在组容器中插入了两个文本行,并通过将'text_anchor'属性设置为'start'并将x位置设置为0来对齐它们。以下是代码:

svg = svgwrite.Drawing(size=(210*mm, 297*mm), viewBox=('0 0 210 297'))
rect_width = 80
rect_height = 25
rect = svg.rect(insert=(0, 0), size=(rect_width, rect_height), fill='none', stroke='red', stroke_width=1)
font_size = 6 #in mm
style = "font-family:Arial; font-size:%i" % (font_size)
text_1 = svg.text('Line 1', insert=(0,0), style=style, text_anchor='start', dominant_baseline='hanging')
text_2 = svg.text('Longer Line 2', insert=(0, font_size), style=style, text_anchor='start', dominant_baseline='hanging')
text_group = svg.g()
text_group.add(text_1)
text_group.add(text_2)
x_pos = rect_width/2
y_pos = rect_height/2-font_size
text_group.translate(x_pos, y_pos)
svg.add(rect)
svg.add(text_group)

输出显示在这里: See generated SVG

“text_group”的垂直位置似乎正常(位于中心)。但水平位置应该更左边。如果我可以获得'text_group'的宽度,并修改'x_pos',这是可以实现的:

x_pos = rect_width/2 - text_group_width/2

我找不到任何方法来获取svgwrite中文本组的宽度。是否有任何方法可以获得宽度,或者是否有任何替代解决方案可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

我找到了

svg.text(style="text-anchor:middle")

对于集中对齐文本很有用