Cómo recuperar imágenes PNG de la respuesta de la API de Labelary (javascript)
Estoy tratando de convertir una cadena ZPL a una imagen png a través de la API de labelary.com.
Puedo enviar una solicitud fetch y recibir una respuesta. Sin embargo, cuando miro la pestaña de red en las herramientas de desarrollo de Chrome, puedo ver la imagen png en la pestaña de “vista previa”, pero la pestaña de respuesta está vacía. ¿Cómo podría guardar esa imagen png que puedo ver en la ventana de vista previa?
Aquí está mi código:
const generateLabelBtn = document.getElementById('generateLabelBtn');
async function requestLabel(zplString) {
const response = await fetch(`http://api.labelary.com/v1/printers/8dpmm/labels/4x6/0/`, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: JSON.stringify(zplString),
})
console.log(response);
}
document.getElementById("generateLabelBtn").onclick = function() {
requestLabel(test)
};
const test = `^XA
^FX Sección superior con logo, nombre y dirección.
^CF0,60
^FO50,50^GB100,100,100^FS
^FO75,75^FR^GB100,100,100^FS
^FO93,93^GB40,40,40^FS
^FO220,50^FDIntershipping, Inc.^FS
^CF0,30
^FO220,115^FD1000 Shipping Lane^FS
^FO220,155^FDShelbyville TN 38102^FS
^FO220,195^FDUnited States (USA)^FS
^FO50,250^GB700,3,3^FS
^FX Segunda sección con dirección del destinatario e información de permiso.
^CFA,30
^FO50,300^FDJohn Doe^FS
^FO50,340^FD100 Main Street^FS
^FO50,380^FDSpringfield TN 39021^FS
^FO50,420^FDUnited States (USA)^FS
^CFA,15
^FO600,300^GB150,150,3^FS
^FO638,340^FDPermit^FS
^FO638,390^FD123456^FS
^FO50,500^GB700,3,3^FS
^FX Tercera sección con código de barras.
^BY5,2,270
^FO100,550^BC^FD12345678^FS
^FX Cuarta sección (las dos cajas en la parte inferior).
^FO50,900^GB700,250,3^FS
^FO400,900^GB3,250,3^FS
^CF0,40
^FO100,960^FDCtr. X34B-1^FS
^FO100,1010^FDREF1 F00B47^FS
^FO100,1060^FDREF2 BL4H8^FS
^CF0,190
^FO470,955^FDCA^FS
^XZ`
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-inline';">
</head>
<body>
<button id="generateLabelBtn">Generate Label</button>
</body>
</html>
davy.ai
Para guardar la imagen png que se muestra en la ventana de vista previa, puedes seguir los siguientes pasos:
.blob()
en el objeto de respuesta.Crear una URL de objeto a partir del objeto blob utilizando la función
URL.createObjectURL()
.Crear un nuevo objeto Image y establecer su origen en la URL del objeto.
Crear un elemento de lienzo HTML y establecer su ancho y alto para que coincida con las dimensiones del objeto Image.
Dibujar el objeto Image en el lienzo usando el método
drawImage()
.Utilizar el método
.toDataURL()
en el lienzo para obtener los datos de la imagen como una cadena codificada en base64.Utilizar la cadena codificada en base64 para crear un nuevo archivo de imagen png utilizando las funciones
atob()
yUint8Array()
.Aquí tienes un ejemplo de implementación de estos pasos:
En este ejemplo, usamos la función
saveAs()
para desencadenar la descarga de un archivo de la imagen PNG. La funciónsaveAs()
requiere la biblioteca FileSaver.js, que puedes descargar desde https://github.com/eligrey/FileSaver.js/. Alternativamente, puedes utilizar un método distinto para desencadenar la descarga de archivos, como abrir la imagen en una nueva pestaña o ventana.