2

长话短说,我希望能够在浏览器中使用 PHP 或 JavaScript 从从 draw.io 保存的 PNG 中提取 XML 数据。

我正在使用带有图层的 draw.io 图像来记录网络设备之间的物理连接。文档站点是一个运行我没有管理权限的dokuwiki实例的内部站点。我可以将导出的 PNG 文件上传到网站,但我不能上传 TXT、XML 或 SVG 文件。无论出于何种原因,我都可以在页面上嵌入 HTML、PHP 和 JavaScript。我现在可以粘贴 HTML 嵌入代码,但这会在编辑页面时显着减慢浏览器的速度,以至于一旦我粘贴了嵌入代码就无法进行任何进一步的更改。

我的预期解决方案是使用 PHP 或 JavaScript 从上传的 PNG 中提取 XML 数据。几乎与这个问题相反。然后,我会将其插入到页面上的嵌入代码中。

这是我将使用的嵌入代码:

<div
  class="mxgraph"
  style="max-width:100%;border:1px solid transparent;"
  data-mxgraph="{&quot;highlight&quot;:&quot;#0000ff&quot;,&quot;nav&quot;:true,&quot;resize&quot;:true,&quot;toolbar&quot;:&quot;zoom layers lightbox&quot;,&quot;edit&quot;:&quot;_blank&quot;,&quot;xml&quot;:&quot;_INSERT_XML_DATA_HERE_&quot;}">
</div>

<script
  type="text/javascript"
  src="https://www.draw.io/js/viewer.min.js">
</script>

我不知道足够的 JavaScript 来弄清楚从 PNG 打开时 draw.io 是如何做到这一点的,但是一些关于它如何工作的示例代码甚至是源代码中发生这种情况的链接都会有所帮助。

4

2 回答 2

3

如果 Draw.io 能做到,那么你也能做到!但我认为只有Include a copy of my diagram在导出为 PNG 时选择选项才有可能。使用此选项 Draw.io 在 PNG 中保存其他数据(您可以查看writeGraphModelToPng

但对你来说更有趣的是extractGraphModelFromPng

于 2019-05-24T17:12:24.570 回答
0

XML 数据无法从 PNG 中提取,因为它是光栅化的压缩像素数据。我认为您正在寻找的格式是 SVG,它是一种基于 XML 的图像格式。使用 SVG 图像,您将能够对文件中的 XML 执行任何您需要的操作,或者只需上传 svg。

在 draw.io 中,您需要导出为 svg。

文件 > 导出为 > SVG...

在此处输入图像描述

希望这可以帮助。

于 2019-05-24T04:39:05.353 回答