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 =...