{ const serializer = new XMLSerializer(); const svgString = serializer.serializeToString(svgEl); const svgBlob = new Blob([svgString], {type: "image/svg+xml;charset=utf-8"}); const svgUrl = URL.createObjectURL(svgBlob); const img = new Image(); img.onload = () => { const scale = 2; // 2x for crisp export const canvas = document.createElement("canvas"); const vb = svgEl.viewBox.baseVal; canvas.width = vb.width * scale; canvas.height = vb.height * scale; const ctx = canvas.getContext("2d"); ctx.fillStyle = "#0b0d12"; ctx.fillRect(0,0,canvas.width,canvas.height); ctx.drawImage(img, 0, 0, canvas.width, canvas.height); canvas.toBlob((blob) => { const url = URL.createObjectURL(blob); const a = Object.assign(document.createElement("a"), { href:url, download:"ar-iq_modular_schematic.png" }); a.click(); URL.revokeObjectURL(url); }, "image/png"); URL.revokeObjectURL(svgUrl); }; img.src = svgUrl; });