2015-07-13 53 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,因爲我們只需要刪除評論。