feat(pos): send ePOS-Print jobs over HTTPS to network printers
This commit is contained in:
parent
93eeea15e8
commit
06abd3c551
1 changed files with 18 additions and 1 deletions
|
|
@ -120,5 +120,22 @@ window.EposPrint = (function () {
|
|||
return `<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><epos-print xmlns="http://www.epson-pos.com/schemas/2011/03/epos-print">${parts.join('')}</epos-print></s:Body></s:Envelope>`;
|
||||
}
|
||||
|
||||
return { getSettings, setSettings, imageToRaster, buildEposXml };
|
||||
async function printViaNetwork(ip, xml) {
|
||||
const res = await fetch(`https://${ip}/cgi-bin/epos/service.cgi?devid=local_printer&timeout=10000`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'text/xml; charset=utf-8', 'SOAPAction': '""' },
|
||||
body: xml
|
||||
});
|
||||
if (!res.ok) throw new Error('Printer HTTP error: ' + res.status);
|
||||
const text = await res.text();
|
||||
const doc = new DOMParser().parseFromString(text, 'text/xml');
|
||||
const response = doc.getElementsByTagName('response')[0];
|
||||
const success = response && response.getAttribute('success') === 'true';
|
||||
if (!success) {
|
||||
const code = response ? response.getAttribute('code') : null;
|
||||
throw new Error('Printer rejected job' + (code ? ' (code: ' + code + ')' : ''));
|
||||
}
|
||||
}
|
||||
|
||||
return { getSettings, setSettings, imageToRaster, buildEposXml, printViaNetwork };
|
||||
})();
|
||||
|
|
|
|||
Loading…
Reference in a new issue