javawmf转svg图片格式最好的方法
第一种方法 这个方法兼容性比较好public static void wmfToSvg(String src, String dest) {
boolean compatible = false;
try {
InputStream in = new FileInputStream(src);
WmfParser parser = new WmfParser();
final SvgGdi gdi = new SvgGdi(compatible);
parser.parse(in, gdi);
Document doc = gdi.getDocument();
OutputStream out = new FileOutputStream(dest);
if (dest.endsWith(".svgz")) {
out = new GZIPOutputStream(out);
}
doc.getFirstChild().getAttributes().removeNamedItem("height");
doc.getFirstChild().getAttributes().removeNamedItem("width");
output(doc, out);
in.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SvgGdiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WmfParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void output(Document doc, OutputStream out) throws Exception {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "-//W3C//DTD SVG 1.0//EN");
transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM,
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd");
transformer.transform(new DOMSource(doc), new StreamResult(out));
out.flush();
out.close();
out = null;
}
第二种方法很简单WMFTranscoder wmfTranscoder = new WMFTranscoder();
TranscoderInput wmfInput = new TranscoderInput(new File(fileName).toURI().toString());
FileOutputStream svgFos = new FileOutputStream(fileName+".svg");
TranscoderOutput svgOutput = new TranscoderOutput(new OutputStreamWriter(svgFos,"utf-8"));
wmfTranscoder.addTranscodingHint(WMFTranscoder.KEY_WIDTH, new Float(1000));
wmfTranscoder.transcode(wmfInput, svgOutput);
svgFos.flush();
svgFos.close();