有没有办法使Batik兼容CSS3样式?

时间:2016-06-13 06:43:21

标签: css3 svg batik

我想使用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语法 - 或者我是否会编写一个解析函数来手动设置笔触不透明度等?

1 个答案:

答案 0 :(得分:2)

如果Batik不支持rgba颜色值,那么请根据需要使用stroke-opacity和/或fill-opacity作为解决方法。

所以而不是:

stroke="rgba(0, 0, 0, 0.298039)"

你可以使用:

stroke="rgb(0, 0, 0)" stroke-opacity="0.298039"