svgwrite - 如何启用将其他对象写入/添加为现有.svg文件的层

时间:2014-04-17 17:30:48

标签: python svg

我有一个svg文件,我想在其中插入其他svg对象。

import svgwrite

dwg = svgwrite.Drawing('model.svg')
square = dwg.add(dwg.rect(20,20),(80,80), fill='blue'))
dwg.save()

它返回一个具有此形状的新文件,忽略我之前的文件。 我怎么能写这个?

感谢的

2 个答案:

答案 0 :(得分:7)

我找到了一个模块来做到这一点

import svgutils.transform as st

template = st.fromfile('template.svg')
second_svg = st.fromfile('second.svg')
template.append(second_svg)
template.save('merged.svg')

我希望这也适合你。

答案 1 :(得分:2)

svgwrite库不支持此功能 - 其目的是创建新的SVG文件,而不是使用现有的SVG文件。查看source for the Drawing class,您可以看到在保存图形时,它会打开文件进行写入和截断;之前在该文件中的任何内容都会丢失:

def save(self):
    """ Write the XML string to **filename**. """
    fileobj = io.open(self.filename, mode='w', encoding='utf-8')
    self.write(fileobj)
    fileobj.close()