2017-07-21 1 views
1

ich Code schreiben SVG zu PNG konvertieren:Apache Batik No WriteAdapter ist verfügbar?

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(); 
    } 
} 

Ich erhalte die folgenden Ausnahmen es mit einer Vielzahl von SVG Ausführung:

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-Version (berichtet von Maven):

Ich bekomme den gleichen Fehler mit Batik 1.7.

Vorschläge?

Antwort

2

Das Problem wurde von Peter Coppens auf der Mailingliste xmlgraphics-batik-users gelöst. Das Problem ist, dass die Maven-Repository für Batik 1.9 eine Abhängigkeit fehlt, die durch Zugabe zu pom.xml adressiert werden kann:

<dependency> 
    <groupId>org.apache.xmlgraphics</groupId> 
    <artifactId>batik-codec</artifactId> 
    <version>1.9</version> 
</dependency> 

Die kryptische Ausnahme verschwindet und die Code-Funktionen wie bei dieser Addition erwartet. Dies wurde als Fehler für Batk 1.7 (https://bz.apache.org/bugzilla/show_bug.cgi?id=44682) gemeldet.

+0

Wo finde ich pom.xml? – Lokesh

+0

Die Abhängigkeiten Knoten meiner pom.xml enthalten: org.apache.xmlgraphics batik-Transcoder 1,9 org.apache.xmlgraphics batik-Codec 1.9 Hoffe, dass hilft. –

Verwandte Themen