2

mxGraph を使用してダイアグラム エディターを実装しましたjavascript(提供された例と同じ)。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>

この xml を JavaScript エディターから生成し、ajax を使用して Java クラスに送信します。

Java クラスで取得した xml に基づいて、画像 svg (またはその他の種類の画像) を保存する方法が見つかりません。

インターネットで見つけたすべての例は、Javaで直接作成されたmxgraphに基づいて画像をエクスポートする方法を示していますが、xmlから取得する方法は示していません

4

1 に答える 1

3

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;
}
于 2015-02-01T06:49:04.173 に答える