Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

764
Vistas
En el botón, haga clic en imprimir en la impresora térmica usando JavaScript, angular o Node JS

Creé en la API de NodeJS, a la que llamo al hacer clic en un botón en la aplicación angular.

Desea imprimir recibos de compra al hacer clic en un botón, a través de una impresora térmica . Sin ninguna ventana emergente de diálogo para guardar o imprimir PDF, directamente debería imprimirse.

Probé este código nodeJS pero parece que funciona para la aplicación de escritorio y no para la web. Tengo código UI y BE en diferentes repositorios de código base.

Intento este código:

 'use strict'; const { PosPrinter } = require("electron-pos-printer"); class SeriesPrinter { constructor() { } printSr() { console.log("Inside print function"); const print_data = [ { type: 'text', value: 'Sample text', style: 'text-align:center;font-weight: bold' }, { type: 'text', value: 'Another text', style: 'color: #fff' }, ]; // returns promise<any> PosPrinter.print(print_data, { printerName: 'POS-80C', preview: false, width: '170px', // width of content body margin: '0 0 0 0', // margin of content body copies: 1, // The number of copies to print }) .then(() => { // some code ... }) .catch((error) => { console.error(error); }); } } module.exports = SeriesPrinter;

está arrojando un error:

 Inside print function TypeError: BrowserWindow is not a constructor \node_modules\electron-pos-printer\dist\post-printer.js:87:30 at new Promise (<anonymous>) \node_modules\electron-pos-p

Cualquier idea para solucionar esta o cualquier otra solución (en el lado de la interfaz de usuario o en el lado de nodeJS funcionará, debería imprimirse en silencio)

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Obtiene TypeError: BrowserWindow no es un constructor porque lo está usando en un entorno sin electrones (navegador).

Lo que haría desde que mencionaste Angular:

  1. Tendría un servicio que envía los datos que quiero imprimir a un componente que representa los datos (realmente crea el documento visual con los datos del servidor) y luego window.print().

El servicio se vería así:

 export class PrintService { isPrinting = false; constructor(private router: Router) { } printDocument(documentName: string, documentData: string[]) { this.isPrinting = true; this.router.navigate(['/', { outlets: { 'print': ['print', documentName, documentData.join()] }}]); } onDataReady() { setTimeout(() => { window.print(); this.isPrinting = false; this.router.navigate([{ outlets: { print: null }}]); }); } }

y lo usaría en un componente como InvoiceComponent:

 ngOnInit() { this.invoiceDetails = this.invoiceIds .map(id => this.getInvoiceDetails(id)); Promise.all(this.invoiceDetails) .then(() => this.printService.onDataReady()); }
  1. Si no quiere hacer cosas complicadas, puede mantenerlo simple y diseñar lo que quiere imprimir y simplemente llamar a window.print() desde el componente:

En HTML

 <button (click)="onPrint()">Print</button>

En TS

 onPrint(){ window.print(); }
  1. También puede usar el método emergente abrir/escribir/cerrar:

HTML

 <div id="printSectionId" > ....... <button (click)="printToCart('printSectionId')" class="button">Print</button> ... </div>

TS

 export class Component{ constructor(){} printToCart(printSectionId: string){ let popupWinindow let innerContents = document.getElementById(printSectionId).innerHTML; popupWinindow = window.open('', '_blank', 'width=600,height=700,scrollbars=no,menubar=no,toolbar=no,location=no,status=no,titlebar=no'); popupWinindow.document.open(); popupWinindow.document.write('<html><head><link rel="stylesheet" type="text/css" href="style.css" /></head><body onload="window.print()">' + innerContents + '</html>'); popupWinindow.document.close(); } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda