首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Batik没有可用的WriteAdapter?

Apache Batik没有可用的WriteAdapter?
EN

Stack Overflow用户
提问于 2017-07-21 21:35:37
回答 1查看 3.6K关注 0票数 15

我正在编写代码将SVG转换为PNG:

代码语言:javascript
复制
package com.example;

import java.io.*;
import java.nio.file.Paths;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.batik.transcoder.SVGAbstractTranscoder;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;

public class Main {

    public static void main(String [] args) throws Exception {

        // read the input SVG document into TranscoderInput
        String svgURI = Paths.get(args[0]).toUri().toURL().toString();
        TranscoderInput input = new TranscoderInput(svgURI);
        // define OutputStream to PNG Image and attach to TranscoderOutput
        OutputStream ostream = new FileOutputStream("out.png");
        TranscoderOutput output = new TranscoderOutput(ostream);
        // create a JPEG transcoder
        PNGTranscoder t = new PNGTranscoder();
        // set the transcoding hints
        t.addTranscodingHint(SVGAbstractTranscoder.KEY_HEIGHT, new Float(600));
        t.addTranscodingHint(SVGAbstractTranscoder.KEY_WIDTH, new Float(600));
        // convert and write output
        t.transcode(input, output);
        // flush and close the stream then exit
        ostream.flush();
        ostream.close();
    }
}

在使用各种SVG执行它时,我得到了以下异常:

代码语言:javascript
复制
Exception in thread "main" org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
Could not write PNG file because no WriteAdapter is availble
    at org.apache.batik.transcoder.image.ImageTranscoder.transcode(ImageTranscoder.java:132)
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:142)
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
    at com.example.Main.main(Main.java:26)

Batik版本(由Maven报告):

代码语言:javascript
复制
version=1.9
groupId=org.apache.xmlgraphics
artifactId=batik-transcoder

我在使用Batik 1.7时也遇到了同样的错误。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-26 13:50:36

这个问题是由Peter Coppens在xmlgraphics-batik-users邮件列表上解决的。问题是Batik1.9的Maven库缺少一个依赖项,这可以通过添加到pom.xml来解决:

代码语言:javascript
复制
<dependency>
    <groupId>org.apache.xmlgraphics</groupId>
    <artifactId>batik-codec</artifactId>
    <version>1.9</version>
</dependency>

这个神秘的异常消失了,代码按照预期的方式工作。据报道,这是BATK1.7 (https://bz.apache.org/bugzilla/show_bug.cgi?id=44682)的一个错误。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45239099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档