问题:
我有一张增强型图元文件Fromat Plus扩展 EMF + 的图像。我需要将此文件转换为带有java的 PNG 图像文件。
尝试解决java中的问题:
Apache Batik
不支持 EMF + 格式(Batik仅支持 WMF 格式)。
FreeHEP
也不支持 EMF + 。它可以将 EMF 转换为 SVG ,然后将 SVG 转换为 PNG 。我希望它可以提供帮助:
EMF2SVG.main( new String[] {inputMetaFileName,ontputSvgFileName});
此声明必须将 EMF 转换为 SVG ,但会出现例外情况:
位于org.freehep的org.freehep.graphicsio.exportchooser.AbstractExportFileType.getGraphics(AbstractExportFileType.java:261)的org.freehep.graphicsio.exportchooser.AbstractExportFileType.exportToFile(AbstractExportFileType.java:248)中的java.lang.NullPointerException .graphicsio.exportchooser.AbstractExportFileType.exportToFile(AbstractExportFileType.java:282) 在org.freehep.graphicsio.emf.EMFConverter.export(EMFConverter.java:81) 在org.freehep.graphicsio.emf.EMF2SVG.main(EMF2SVG.java:27)
我使用了来自here的代码:
try {
// read the EMF file
EMFRenderer emfRenderer = new EMFRenderer( new EMFInputStream(
new ByteArrayInputStream(emfBytes)));
EMFPanel emfPanel = new EMFPanel();
emfPanel.setRenderer(emfRenderer);
// prepare Graphics2D
FileOutputStream svg = new FileOutputStream("svg.svg");
SVGGraphics2D graphics2D = new SVGGraphics2D (svg, emfPanel);
// export to SVG
graphics2D.startExport();
emfPanel.print(graphics2D);
graphics2D.endExport();
svg.flush();
svg.close();
} catch (IOException e) {
e.printStackTrace();
}
此代码会创建 SVG 文件,但该文件没有图像。