Рендеринг диаграммы draw.io в png

Я пытаюсь отобразить draw.io сохраненные (SaveAs->Device) диаграммы .xml.

Сохраненная диаграмма с использованием в качестве примера ввода:

<mxGraphModel dx="1426" dy="720" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" background="#ffffff" math="0" shadow="0">
  <root>
    <mxCell id="0"/>
    <mxCell id="1" parent="0"/>
    <mxCell id="2" value="" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;" vertex="1" parent="1">
      <mxGeometry x="180" y="200" width="120" height="60" as="geometry"/>
    </mxCell>
    <mxCell id="3" value="" style="whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
      <mxGeometry x="360" y="180" width="80" height="80" as="geometry"/>
    </mxCell>
    <mxCell id="4" value="" style="endArrow=classic;html=1;exitX=0.025;exitY=0.638;exitPerimeter=0;" edge="1" parent="1" source="3" target="2">
      <mxGeometry width="50" height="50" relative="1" as="geometry">
        <mxPoint x="180" y="430" as="sourcePoint"/>
        <mxPoint x="230" y="380" as="targetPoint"/>
      </mxGeometry>
    </mxCell>
  </root>
</mxGraphModel>

И затем мне нужно отобразить его в png программно, поэтому я пишу код С#, используя для этой цели библиотеку mxgraph:

using System;
using System.Drawing;
using com.mxgraph;

namespace MxGraphRendering
{
    class Program
    {
        static void Main(string[] args)
        {
            var file = mxUtils.ReadFile("../../../export.xml");
            var document = mxUtils.ParseXml(file);
            var codec = new mxCodec(document);
            var graph = new mxGraph();
            codec.Decode(document.DocumentElement, graph.Model);

            var image = mxCellRenderer.CreateImage(graph, null, 1, 
Color.White, false, null);
            image.Save("../../../output.png");
            Console.ReadKey();
        }
    }
}

После запуска у меня есть определенный вывод:

Исходная схема

Выходное изображение

Похоже на это вопрос, проблема заключается в отсутствии таблиц стилей draw.io для ожидаемый результат. Есть простой способ добавить все это в мой экземпляр С# mxGraph?

Или, с другой стороны, это простой способ рендеринга png из xml с помощью собственного javascript, используемого в draw.io? (Функция, которая производит рендеринг/экспорт и т.д.)

Любая помощь приветствуется.


person Nikita Romaniuk    schedule 14.04.2018    source источник


Ответы (1)


Я знаю, что этому год, но у меня была такая же проблема, и я ничего не мог найти на SO об этом. В конце концов я нашел неудобное, но работоспособное решение, и, поскольку оно лучше, чем ничего, я помещу его здесь.

Я нашел пакет npm под названием draw.io-export (ссылка на github). По состоянию на 2019 год он обновлен и работает.

Это не только позволит вам преобразовать диаграмму draw.io в png, но и подключится к веб-сайту draw.io, чтобы сделать это, и поэтому вы должны избежать каких-либо проблем с форматированием.

Однако вам нужно вызывать его из командной строки, поэтому, поскольку вы используете С#, я бы рекомендовал посмотреть, как это сделать, в этом ТАК ответьте.

person lazer-guided-lazerbeam    schedule 03.07.2019
comment
Рабочий стол draw.io можно использовать из командной строки: j2r2b.github .io/2019/08/06/drawio-cli.html - person Jmini; 07.08.2019