首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在node.js中解压Drawio文件

在node.js中解压Drawio文件
EN

Stack Overflow用户
提问于 2021-01-08 22:04:28
回答 2查看 192关注 0票数 0

我想我想要解压缩Drawio图形,将其倒入一个文件中,然后对其进行操作(例如使用Ohm-js)。

我可以使用解压缩工具(https://jgraph.github.io/drawio-tools/tools/convert.html)解压缩.drawio文件,但如果我在node.js中尝试相同的代码,则会出现错误。

尝试运行'node uncompress.js',我得到一个错误‘无效的存储块长度’。

我使用的代码包含在下面。

代码语言:javascript
复制
var test = "7Vpbc5s4FP41fvQOIMDmMXZzmbbpdCab3eSpIxsBagSiQr71168wwlwk15tMwGnoiwcdXbC+7+joXBiBeby9ZjCNbqmPyMgy/O0IfBhZ1mQKxG8u2BUCz3AKQciwX4jMSnCHfyIpNKR0hX2UNQZySgnHaVO4pEmClrwhg4zRTXNYQEnzrSkMkSK4W0KiSv/FPo+k1DSMquMG4TCSr546siOG5WApyCLo001NBC5HYM4o5cVTvJ0jkmNX4nJ7YweLz/dP6/TvgATw07dPj1fjYrGr50w5bIGhhL94aRDN+c80Dm//Gd9FV/71x2/+Qk4x1pCsJF5LGqeYICb3zHclkIyuEh/li5kjMNtEmKO7FC7z3o3QHCGLeExk9xoxjgUJFwSHiZBxmg+QLxN9aNti58TWzAPeQk8RjRFnOzFPrmLbch9SR6eyuakRXrIY1bi2ynlQKll4WLoCUjxILJ+Bq6ngquB5AkGYpcVxCPA2R30WYELmlFC2nw6CILCWSyHPOKNPqNbjuwvXcTuE23GacB9OSA1vLdyvgPZjEN7w3WLm3I5/BOTxCY1Nc1zamhq6yBdWQDYp4xENaQLJZSWdVfpsiFY15jPNdXXPwXfE+U6aNLjitMkQ2mL+UHt+zJf6y5GtD1u58r6xKxuJ2O9DvVGblTeraftWOa/YX76pFxApgKErtkS/0FepnhyyEPFfIO3oFYMhAjleN//cqx8qa0iHynSd3g6VFm0wKLTN/kyYFm27c7R9B019W4f21FoAt0u0bdBC2zsz2o6KNrjI1uFYYIYSGCMFfIEIb+LdhDGhCWphLkVQukBLgaBwq1TfKMa+v7+RdAQ3b6muCAJu2/ioBE37JMjVEURwlg6MGKdFjObg2H3yMtHx8j2jycB5MW31tu6VmKmOGLE09CGHAyfHMtRT43ZEDvnyNMczI7kn11/u1+bX6OGGl65Uz+HJGw01vJESamhBO8JxP6GG17k79oacX12+pFd3rHS+m9YLMUbVNNSwTBfQmC7QKzXuH9tVQ6PMYNeM1/Fw7lzGy9RkH8EFTtIVPx7giHVxmh3T/ho3byestNpOmC7va2hOy2ukfbXpMdWO5XiPNwzz3yujPmlH7Ibq32pT6mZn2HafUj+jKk+sFt6gv+yfFm1LZ0IGmh1xJ+1koUpOr/GEfZY7+fcsd2i1G6jXeCcxyH7qBWNwVxuQUpzwrLby11xQqZsH2uGrU9eY0+M9o6VhxT+o9O2wlZfbh3ddHZi26smmd2ZrrKkODDM+mv6P0nNX8dHxguhgvJIea5JatLVlgb3GD+sYuF7bQPVXF9A756ra/3FJnuWS6FILx+Ogvn0St3Ujuq1vzU4ML8sjnbok+rQHXfH3nvew1cPfWdpD6yZr0h4QEwXqN5zv8Can/Yru8h3HY4/36ll47RJdjyUILdrafEeMsiz/vHhYzoVnNrnR1SBeKd0hmtX308U9UH2EDi7/Aw=="
;

function toHex (s) {
    return s.split("")
    .map(c => c.charCodeAt(0).toString(16).padStart(2, "0"))
    .join("");
}

function bytesToString(arr)
{
    var str = '';
    for (var i = 0; i < arr.length; i++) {
        str += String.fromCharCode(arr[i]);
    }
    return str;
};

// npm install atob
var atob = require ('atob');
var data = atob(test);
console.log (data.length);
console.log (toHex (data));


// npm install pako
var pako = require ('pako');
var inf = bytesToString (pako.inflateRaw(data));
EN

回答 2

Stack Overflow用户

发布于 2021-01-12 17:38:57

我们已将解压缩工具更新为pako 2.0.3,并使用pako.inflateRaw(Uint8Array.from( data,c => c.charCodeAt(0)),{ to:'string'})来解压缩数据。这为我们解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2021-01-13 22:05:36

感谢@user1084282。我的测试代码现在是:

代码语言:javascript
复制
var test = "7Vpbc5s4FP41fvQOIMDmMXZzmbbpdCab3eSpIxsBagSiQr71168wwlwk15tMwGnoiwcdXbC+7+joXBiBeby9ZjCNbqmPyMgy/O0IfBhZ1mQKxG8u2BUCz3AKQciwX4jMSnCHfyIpNKR0hX2UNQZySgnHaVO4pEmClrwhg4zRTXNYQEnzrSkMkSK4W0KiSv/FPo+k1DSMquMG4TCSr546siOG5WApyCLo001NBC5HYM4o5cVTvJ0jkmNX4nJ7YweLz/dP6/TvgATw07dPj1fjYrGr50w5bIGhhL94aRDN+c80Dm//Gd9FV/71x2/+Qk4x1pCsJF5LGqeYICb3zHclkIyuEh/li5kjMNtEmKO7FC7z3o3QHCGLeExk9xoxjgUJFwSHiZBxmg+QLxN9aNti58TWzAPeQk8RjRFnOzFPrmLbch9SR6eyuakRXrIY1bi2ynlQKll4WLoCUjxILJ+Bq6ngquB5AkGYpcVxCPA2R30WYELmlFC2nw6CILCWSyHPOKNPqNbjuwvXcTuE23GacB9OSA1vLdyvgPZjEN7w3WLm3I5/BOTxCY1Nc1zamhq6yBdWQDYp4xENaQLJZSWdVfpsiFY15jPNdXXPwXfE+U6aNLjitMkQ2mL+UHt+zJf6y5GtD1u58r6xKxuJ2O9DvVGblTeraftWOa/YX76pFxApgKErtkS/0FepnhyyEPFfIO3oFYMhAjleN//cqx8qa0iHynSd3g6VFm0wKLTN/kyYFm27c7R9B019W4f21FoAt0u0bdBC2zsz2o6KNrjI1uFYYIYSGCMFfIEIb+LdhDGhCWphLkVQukBLgaBwq1TfKMa+v7+RdAQ3b6muCAJu2/ioBE37JMjVEURwlg6MGKdFjObg2H3yMtHx8j2jycB5MW31tu6VmKmOGLE09CGHAyfHMtRT43ZEDvnyNMczI7kn11/u1+bX6OGGl65Uz+HJGw01vJESamhBO8JxP6GG17k79oacX12+pFd3rHS+m9YLMUbVNNSwTBfQmC7QKzXuH9tVQ6PMYNeM1/Fw7lzGy9RkH8EFTtIVPx7giHVxmh3T/ho3byestNpOmC7va2hOy2ukfbXpMdWO5XiPNwzz3yujPmlH7Ibq32pT6mZn2HafUj+jKk+sFt6gv+yfFm1LZ0IGmh1xJ+1koUpOr/GEfZY7+fcsd2i1G6jXeCcxyH7qBWNwVxuQUpzwrLby11xQqZsH2uGrU9eY0+M9o6VhxT+o9O2wlZfbh3ddHZi26smmd2ZrrKkODDM+mv6P0nNX8dHxguhgvJIea5JatLVlgb3GD+sYuF7bQPVXF9A756ra/3FJnuWS6FILx+Ogvn0St3Ujuq1vzU4ML8sjnbok+rQHXfH3nvew1cPfWdpD6yZr0h4QEwXqN5zv8Can/Yru8h3HY4/36ll47RJdjyUILdrafEeMsiz/vHhYzoVnNrnR1SBeKd0hmtX308U9UH2EDi7/Aw=="
;

// npm install atob
var atob = require ('atob');
var data = atob(test);
console.log (data.length);

// npm install pako
var pako = require ('pako');

var inf = pako.inflateRaw (
    Uint8Array.from (data, c=>c.charCodeAt (0)), {to: 'string'})
var str = decodeURIComponent (inf);
console.log (str);

要运行它,(将代码保存为uncompress.js)

代码语言:javascript
复制
> node uncompress.js

(这会导致整个屏幕都是解码的mxGraph)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65630478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档