Giter Club home page Giter Club logo

Comments (1)

hugocalheira avatar hugocalheira commented on May 23, 2024

So, continuing with the topic from the other issue (#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.

from node-thermal-printer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.