Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

765
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda