我想使用Java将SVG转换为PNG / JPG,大多数结果都指向使用Batik。
然而,我遇到的问题是Batik似乎不适合CSS样式功能。
以下是我试图转换的SVG示例:
Bitmap
Batik会抛出错误:
<svg xmlns="http://www.w3.org/2000/svg" class="graphdiagram" viewBox="-642.5 -415 1285 830">
<g class="layer relationships"/>
<g class="layer nodes">
<circle class="node node-id-0" r="19.7810942818944" fill="rgb(247, 247, 249)" stroke="rgba(0, 0, 0, 0.298039)" stroke-width="0.909091px" cx="0" cy="0"/>
<g class="caption">
<text class="caption node" text-anchor="middle" alignment-baseline="central" x="0" y="0" fill="rgb(51, 51, 51)" font-size="14px" font-family="'Helvetica Neue', Helvetica, Arial, sans-serif">Foo</text>
</g>
</g>
<g class="layer properties"/>
<g class="layer overlay">
<circle class="node overlay" r="20.235639781894402" stroke="none" fill="rgba(255, 255, 255, 0)" cx="0" cy="0"/>
<circle class="node ring" r="25.235639781894402" fill="none" stroke="rgba(255, 255, 255, 0)" stroke-width="10px" cx="0" cy="0"/>
</g>
</svg>
有没有一种简单的方法让Batik能够很好地使用CSS3语法 - 或者我是否会编写一个解析函数来手动设置笔触不透明度等?
答案 0 :(得分:2)
如果Batik不支持rgba颜色值,那么请根据需要使用stroke-opacity
和/或fill-opacity
作为解决方法。
所以而不是:
stroke="rgba(0, 0, 0, 0.298039)"
你可以使用:
stroke="rgb(0, 0, 0)" stroke-opacity="0.298039"