java - 将 mxGraph 导出为 SVG(或任何类型的图像)

标签 java mxgraph

我用javascript用mxGraph实现了一个图表编辑器,(和他们提供的例子中的一样),我可以得到一个XML,这里我给你一个例子:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mxGraphModel connect="1" fold="1" grid="1" gridSize="10" guides="1" page="0"    pageHeight="1169" pageScale="1" pageWidth="826" tooltips="1">
    <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="2" parent="1" style="whiteSpace=wrap" value="" vertex="1">
            <mxGeometry as="geometry" height="60" width="120" x="80" y="70"/>
        </mxCell>
        <mxCell id="3" parent="1" style="whiteSpace=wrap" value="" vertex="1">
            <mxGeometry as="geometry" height="60" width="120" x="280" y="70"/>
        </mxCell>
        <mxCell edge="1" id="4" parent="1" source="2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;" target="3">
            <mxGeometry as="geometry" relative="1"/>
        </mxCell>
    </root>
</mxGraphModel>

我从 javascript 编辑器生成此 xml,并使用 ajax 将其发送到 java 类。

根据我在 java 类上获得的 xml,我找不到保存图像 svg(或任何其他类型的图像)的方法。

我在互联网上找到的所有示例都展示了如何基于直接在java上创建的mxgraph导出图像,但没有展示如何从xml获取它

最佳答案

您可以使用 mxXmlUtils.parseXml api。这是示例代码片段

Document doc = mxXmlUtils.parseXml(erXmlString);
    mxGraph graph = new mxGraph();
    mxCodec codec = new mxCodec(doc);
    codec.decode(doc.getDocumentElement(), graph.getModel());

    mxGraphComponent graphComponent = new mxGraphComponent(graph);
    BufferedImage image = mxCellRenderer.createBufferedImage(graphComponent.getGraph(), null, 1, Color.WHITE, graphComponent.isAntiAlias(), null, graphComponent.getCanvas());
    mxPngEncodeParam param = mxPngEncodeParam.getDefaultEncodeParam(image);
    param.setCompressedText(new String[] { "mxGraphModel", erXmlString });

    FileOutputStream outputStream = new FileOutputStream(new File(filename));
    mxPngImageEncoder encoder = new mxPngImageEncoder(outputStream, param);

    if (image != null) {
        encoder.encode(image);
        return image;
    }
    outputStream.close();
    return null;
}

关于java - 将 mxGraph 导出为 SVG(或任何类型的图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27902882/

相关文章:

java - Spring @Scheduled 执行作业的次数是预期次数的两倍

Java 程序在调度并运行 TimerTask 后永远不会退出

java - 在 Tomcat 下启动线程

javascript - mxGraph可以使用UUID将默认生成的id替换为整数类型吗?

javascript - mxGraph - 某些形状在 ReactJS 应用程序中无法正确呈现

java - Hibernate不会设置id列名

java - 继续从 spring boot 示例代码中获取 403 禁止

javascript - mxGraph:如何将边缘标签定位在底部

javascript - Cypress 点击/触发不触发事件监听器

mxGraph 单元格大小调整和图形布局