1

我一直在使用 Apache Batik 并尝试修改 SVG 文件,然后将其渲染为 JPEG。

我将 SVG 文件转换为 w3c 文档。然后我得到我需要更新的元素。但是当我尝试获取或设置该元素中的文本时,出现以下错误:

java.lang.AbstractMethodError:org.apache.batik.dom.svg.SVGOMTextElement.getTextContent()Ljava/lang/String;

我的代码如下:

final String parser = XMLResourceDescriptor.getXMLParserClassName();
final SAXSVGDocumentFactory svgDocFactory = new SAXSVGDocumentFactory(parser);
svgDoc = svgDocFactory.createDocument(svgUri);
final Element element = svgDoc.getElementById("MainTitle");
System.out.println("Element Text:" + element.getTextContent().toString());

我在 pom.xml 中对 apache Batik 的依赖如下

<properties>
    <java-version>1.7</java-version>
    <batik.svg.version>1.6-1</batik.svg.version>
</properties>

<dependencies>
    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-util</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-rasterizer</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-transcoder</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-parser</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-dom</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-svg-dom</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-xml</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-bridge</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-gvt</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-awt-util</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-svggen</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-ext</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-css</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-gui-util</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-script</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>

    <dependency>
        <groupId>batik</groupId>
        <artifactId>batik-extension</artifactId>
        <version>${batik.svg.version}</version>
    </dependency>
</dependencies>

有人可以帮助我如何更新 SVG Dom 文档中元素的文本值。

如果您能指向我可以获取使用 DOM api 的示例或文档的链接,我将很高兴。

感谢您,

4

0 回答 0