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

问题描述 投票:1回答:1

我想用Java将SVG转换为PNG / JPG,大多数结果都指向使用Batik。

但是,我遇到的问题是Batik似乎不能很好地发挥CSS样式功能。

这是我试图转换的SVG示例:

<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会抛出如下错误:

ERROR: null
Enclosed Exception:
http://www.w3.org/2000/svg:
The attribute "stroke" represents an invalid CSS value ("rgba(0, 0, 0, 0.298039)").
Original message:
The "stroke" property does not support function values.

***** CSSEngine: exception property.syntax.error:org.w3c.dom.DOMException: The "stroke" property does not support function values.

AttrValue:rgba(0, 0, 0, 0.298039)

有没有一种简单的方法让Batik能够很好地使用CSS3语法 - 或者我是否要编写一个解析函数来手动设置笔触不透明度等?

css3 svg batik
1个回答
2
投票

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

所以代替:

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

您可以使用:

stroke="rgb(0, 0, 0)" stroke-opacity="0.298039"
© www.soinside.com 2019 - 2024. All rights reserved.