长话短说,我希望能够在浏览器中使用PHP或JavaScript从从draw.io保存的PNG中提取XML数据。
我正在使用带有层的draw.io图像来记录网络设备之间的物理连接。文档站点是运行dokuwiki实例的内部站点,我对该实例没有管理权限。我可以将导出的PNG文件上载到站点,但不允许上载TXT、XML或SVG文件。无论出于什么原因,我都可以在页面上嵌入HTML、PHP和JavaScript。我现在可以粘贴HTML嵌入代码,但这会显著降低浏览器在编辑页面时的速度,以至于一旦粘贴了嵌入代码,就无法进行任何进一步的更改。
我打算的解决方案是使用PHP或JavaScript从上传的PNG中提取XML数据。与this ask截然相反。然后,我会将它插入到页面的嵌入代码中。
以下是我将使用的嵌入代码:
<div
class="mxgraph"
style="max-width:100%;border:1px solid transparent;"
data-mxgraph="{"highlight":"#0000ff","nav":true,"resize":true,"toolbar":"zoom layers lightbox","edit":"_blank","xml":"_INSERT_XML_DATA_HERE_"}">
</div>
<script
type="text/javascript"
src="https://www.draw.io/js/viewer.min.js">
</script>我不知道足够多的JavaScript来理解当draw.io从PNG打开时如何做到这一点,但是一些关于它如何工作的示例代码,或者甚至是源代码中发生这种情况的链接将会很有帮助。
发布于 2019-05-25 01:12:25
如果Draw.io可以做到这一点,你也可以做到!但我认为这是可能的,如果你选择了Include a copy of my diagram选项,同时出口到PNG。使用这个选项Draw.io保存额外的数据在PNG(你可以看看writeGraphModelToPng。
但对您来说更有趣的将是extractGraphModelFromPng
发布于 2019-05-24 12:39:05
XML数据无法从PNG中提取,因为它是光栅化的压缩像素数据。我认为您正在寻找的格式是SVG,它是一种基于XML的图像格式。使用svg图像,您将能够对文件中的XML做任何您需要的事情,或者只是上传SVG。
在draw.io中,您需要导出为svg。
文件>导出为> SVG...

希望这能有所帮助。
https://stackoverflow.com/questions/56284570
复制相似问题