Open adnanlah opened 7 months ago
So, continuing with the topic from the other issue (https://github.com/Klemen1337/node-thermal-printer/issues/250), I couldn't make the print occupy the entire page. I just increased the size of the image to the maximum I needed.
In my case, I used the libraries pngjs and sharp to handle the image buffer resizing.
import { PNG } from 'pngjs'
import sharp from 'sharp'
async function resizePNGBuffer(buffer, newWidth) {
try {
const png = PNG.sync.read(buffer)
const scale = newWidth / png.width;
const newHeight = Math.round(png.height * scale);
const newBuffer = await sharp(buffer)
.resize({ width: newWidth, height: newHeight })
.toBuffer();
return newBuffer;
} catch (error) {
console.error('Error resizing image:', error);
return null;
}
}
// 510px was the maximum size I managed to resize the image without slowing down the printing.
async function getLayout() {
try {
const url = 'URL'
const payload = {}
const result = await axios.post(url, payload, { responseType: 'arraybuffer' })
const resizedBuffer = await resizePNGBuffer(result.data, 510)
await printFromBuffer(resizedBuffer)
} catch (e) {
console.log(e)
}
}
async function printFromBuffer(buffer) {
try {
let isConnected = await printer.isPrinterConnected()
if (!isConnected) {
throw Error("not connected")
}
await printer.printImageBuffer(buffer)
printer.cut()
await printer.execute()
printer.clear()
} catch (e) {
console.log(e)
}
}
I hope this can help you in some way, but the print still has margins on the paper's edge that I don't know how to solve yet.
Hello,
When attempting to print images, images with a width exceeding 580 pixels are not printed in full when I tried it with my
X-Printer Q371U
. Instead, the portion of the image beyond 580 pixels in width is cut off, resulting in incomplete prints.I am not sure if 580px is the same max width for all printers or just mine.
Is there any workaround or a way to solve this? This is the only package that prints images properly.
Thanks.