2

问题:

我有一张 Enhanced Metafile Fromat Plus Extension EMF+的图片。我需要使用 java将此文件转换为PNG图像文件。

尝试解决java中的问题:

  1. Apache Batik不支持EMF+格式(Batik 仅支持WMF格式)。

  2. FreeHEP也不支持EMF+。它可以将EMF转换为SVG,然后将SVG转换为PNG。我希望它可以帮助:

    EMF2SVG.main( new String[] {inputMetaFileName,ontputSvgFileName});
    

    此语句必须将EMF转换为SVG,但给出了一个例外:

    org.freehep.graphicsio.exportchooser.AbstractExportFileType.exportToFile(AbstractExportFileType.java:248) 的 org.freehep.graphicsio.exportchooser.AbstractExportFileType.getGraphics(AbstractExportFileType.java:261) 的 java.lang.NullPointerException。 exportchooser.AbstractExportFileType.exportToFile(AbstractExportFileType.java:282) at org.freehep.graphicsio.emf.EMFConverter.export(EMFConverter.java:81) at org.freehep.graphicsio.emf.EMF2SVG.main(EMF2SVG.java:27)

  3. 我使用了这里的代码:

    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文件,但该文件没有图像。

4

0 回答 0