将 mxGraph 导出为 SVG(或任何类型的图像)
Export mxGraph to SVG (Or any type of image)
我用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>
我从 java 脚本编辑器生成此 xml 并将其发送到 java class 和 ajax。
我找不到保存图像 svg(或任何其他类型的图像)的方法,基于 xml 我在 java class 上。
我在互联网上找到的所有示例都显示了如何根据直接在 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;
}
我用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>
我从 java 脚本编辑器生成此 xml 并将其发送到 java class 和 ajax。
我找不到保存图像 svg(或任何其他类型的图像)的方法,基于 xml 我在 java class 上。
我在互联网上找到的所有示例都显示了如何根据直接在 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;
}