JSFiddle - React, Tailwind, and code Playground
by musicreader
HTML
<script src="http://labelwriter.com/software/dls/sdk/js/dymo.connect.framework.js"></script>
JavaScript
/*var label = dymo.label.framework.openLabelFile("http://prestashop177.musicreader.net/modules/directlabelprint/DymoConnectSample.dymo");
label.print(dymo.label.framework.getPrinters()[1].name);*/
var xhttp = new XMLHttpRequest();
xhttp.overrideMimeType("text/plain");
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
var label_xml=this.responseText;
var label = dymo.label.framework.openLabelXml(label_xml);
label.getLabelXml2=label.getLabelXml;
label.getLabelXml=function(){
return getFixedXml(label);
}.bind(label);
console.log(label.getLabelXml());
label.print(dymo.label.framework.getPrinters()[0].name);
}
}.bind(xhttp);
xhttp.open("GET","http://prestashop177.musicreader.net/test/DymoConnectSample2.dymo", true);
xhttp.send();
function fixChildren(elem) {
if (elem.children.length == 0) {
if (elem.outerHTML.endsWith("/>") && !elem.outerHTML.includes("DYMO")) {
const rawTag = elem.outerHTML.substring(0, elem.outerHTML.length - 2).split(" ")[0];
const cleanTag = rawTag.substring(1, rawTag.length);
const fixedLine = `${elem.outerHTML.replace("/>", ">")}</${cleanTag}>`;
return fixedLine;
}
return elem.outerHTML;
}
const children = Array.from(elem.children);
const inner = children.map(c => fixChildren(c)).join("");
return elem.outerHTML.replace(elem.innerHTML, inner);
}
function getFixedXml(label) {
const parser = new DOMParser();
const doc = parser.parseFromString(label.getLabelXml2(), 'application/xml');
const DCDXml = Array.from(doc.getElementsByTagName("DesktopLabel")) ?? [];
if(DCDXml.length==0){
return label.getLabelXml2();
}
const elem = DCDXml[0];
if (!elem) {
return label.getLabelXml2();
}
const fixed =...