【问题标题】:svgwrite - How to enable write/add other objects as layers of an existing .svg filesvgwrite - 如何启用将其他对象写入/添加为现有 .svg 文件的图层
【发布时间】:2014-05-06 06:10:55
【问题描述】:

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

import svgwrite

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

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

谢谢

【问题讨论】:

    标签: python svg


    【解决方案1】:

    我找到了一个可以做到这一点的模块

    import svgutils.transform as st
    
    template = st.fromfile('template.svg')
    second_svg = st.fromfile('second.svg')
    template.append(second_svg)
    template.save('merged.svg')
    

    我希望这对你也有用。

    【讨论】:

      【解决方案2】:

      svgwrite 库不支持这一点——它的目的是创建新的 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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 2014-06-03
        相关资源
        最近更新 更多