2015-07-13 42 views
0

我正在使用svgo(版本0.5.3)来缩小我的SVG文件。虽然SVG可以在浏览器中正确打开,缩小型给出错误,如:SVGO:错误“无效的字符实体”

错误解析:无效字符实体

我的SVG文件是:

<?xml version="1.0" encoding="iso-8859-1"?> 
<!DOCTYPE svg [ 
    <!ENTITY st2 "stroke:#FFFFFF;stroke-width:6.6112;"> 
]> 
<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> 
    <g id="Layer_x0020_3"> 
     <g> 
      <path style="&st2;" d="M41.7,35.3L26.6,9.4c-0.6-1-1.7-1.7-2.9-1.6c-1.2,0-2.3,0.7-2.9,1.7L6.3,35.4c-0.6,1-0.6,2.3,0,3.3c0.6,1,1.7,1.6,2.9,1.6h29.6c1.2,0,2.3-0.6,2.9-1.7c0.6-1,0.6-2.3,0-3.3z"/> 
     </g> 
    </g> 
</svg> 

我缩小问题到<!ENTITY...的定义。如果我删除<!ENTITY...的定义,SVGO不会报告任何错误。

看来开发者已经意识到这个问题:Error "Invalid character entity" for any input file。但他们没有刨现在解决它:

作为一个临时的解决办法,我建议关闭«保留Illustrator 编辑功能»和其他一些高级选项,如包括 XMP,在Illustrator SVG保存对话框。

但是,我们已经在项目中有数百个SVG文件。有什么解决方法吗?

或者有人可以推荐其他工具来最小化SVG文件吗?

+0

您可以通过运行脚本来批量处理文件,脚本将扩展实体。任何可以读取XML文件并输出结果的东西都可以。例如,xmllint可能会完成这项工作(我还没有尝试过)。 –

回答

0

找不到任何解决方案。所以切换到grunt-cleanhtml,因为我们只需要删除评论。