首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理剪辑路径时的reportLab svg2rlg错误

处理剪辑路径时的reportLab svg2rlg错误
EN

Stack Overflow用户
提问于 2019-11-20 23:20:58
回答 1查看 160关注 0票数 0

使用svg2rlg将SVG文件导入到reportLab PDF中时,似乎忽略了剪辑路径。

如果SVG文件具有指定了剪辑路径的图形对象(这通常用于绘图延伸到轴外部的matplotlib图形),则通过svg2rlg导入到reportLab PDF时,SVG文件将无法正确呈现。

SVG文件在AI或资源管理器中看起来是正确的,所以问题似乎出在svg2rlg上

svglib如何正确处理matplotlib创建的SVG文件?

EN

回答 1

Stack Overflow用户

发布于 2019-11-21 00:44:38

问题似乎出在svglib解析SVG XML树的时候,假设剪辑路径在使用之前会出现在树中,这与matplotlib SVG导出不同(剪辑路径位于XML树的底部)。

我找到的解决这个问题的最简单的方法(似乎是有效的)就是在renderSvg中运行两次renderNode循环:第一次是在一个丢弃的组上,第二次是在实际的组实例上。

第一遍将构建组实例self.definitions字典,然后它将被完全填充并在第二遍中可用。

代码语言:javascript
复制
def renderSvg(self, node, outermost=False):
    _saved_preserve_space = self.shape_converter.preserve_space
    self.shape_converter.preserve_space = node.getAttribute("{%s}space" % XML_NS) == 'preserve'

    group_throwaway = Group()
    for child in node.getchildren():
        self.renderNode(child, group_throwaway)

    group = Group()
    for child in node.getchildren():
        self.renderNode(child, group)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58957790

复制
相关文章

相似问题

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