Imprimir PDF directamente en impresora térmica con JavaScript

El día de hoy te enseñaré a imprimir un PDF de manera directa a una impresora térmica, sin cuadros de diálogo ni confirmaciones de usuario; todo de manera silenciosa.

De esta manera podrás imprimir un PDF generado en cualquier lugar directamente a una impresora térmica.

En estos casos yo siempre prefiero usar comandos ESC POS para imprimir, pero si tú ya tienes tu diseño del PDF entonces veamos cómo hacerlo. Yo lo haré con JavaScript pero verás que se puede hacer con cualquier lenguaje de programación.

Descargando plugin y PDFtoPrinter

Para que esto funcione debemos descargarnos 2 herramientas gratuitas: el plugin PDF y PDFtoPrinter (una vez que abras ese enlace haz clic en download it here). Las mismas deben estar en la misma ubicación y solo debes ejecutar el plugin.

Es decir, debes tener a PDFtoPrinter.exe y plugin_pdf_prod_ARQUITECTURA.exe en la misma carpeta, y después de eso ejecutar plugin_pdf_prod_ARQUITECTURA.exe.

Comprueba que se está ejecutando en el administrador de tareas dentro de “Detalles”

Imprimiendo PDF en impresora térmica desde el navegador

Ahora solo tenemos que hacer una petición HTTP. JavaScript ofrece una manera muy simple a través de fetch. Para este ejemplo voy a imprimir un PDF de internet que está en: https://parzibyte.github.io/plugin-silent-pdf-print-examples/delgado.pdf

El código es realmente simple y queda así:

const urlPDF = "https://parzibyte.github.io/plugin-silent-pdf-print-examples/delgado.pdf";
const nombreImpresora = "PT210";
const url = `http://localhost:8080/url?urlPdf=${urlPDF}&impresora=${nombreImpresora}`;
fetch(url)

Y eso es todo. Al momento de que ese código sea ejecutado, el resultado será parecido al siguiente:

PDF impreso directamente en impresora térmica con JavaScript
PDF impreso directamente en impresora térmica con JavaScript

Como puedes ver, solo tuve que invocar a localhost:8080/url pasándole la URL del PDF (urlPdf) y el nombre de la impresora (nombreImpresora).

El diseño del ticket lo hice en un procesador de textos, pero tú puedes diseñarlo en cualquier entorno. También puedes imprimir un PDF local o un PDF alojado en localhost.

Ahora ya podrás usar JavaScript para imprimir un PDF de cualquier diseño pero sobre todo de manera silenciosa sin que el usuario tenga que seleccionar la impresora manualmente.

Serás capaz de usarlo en cualquier framework como jQuery, React, Svelte, Vue, etcétera, ya que solo necesitas hacer una petición HTTP.

Siguientes pasos

Lo que te mostré es solo un simple ejemplo para imprimir un PDF desde cualquier lugar a cualquier tipo de impresora.

Específicamente has aprendido a imprimir un PDF en una thermal printer o POS printer usando JavaScript, pero te repito que al ser un servidor HTTP podrás invocarlo desde cualquier otro lenguaje.

Te dejo el post de presentación en donde vas a encontrar más ejemplos y documentación de la API: https://parzibyte.me/blog/2020/12/07/plugin-imprimir-pdf-manera-silenciosa-javascript/

Por cierto, este plugin también permite imprimir en impresoras virtuales (como la Microsoft Print to PDF) así que puedes hacer todas las pruebas que quieras sin usar papel.

Finalmente te quiero recomendar mi plugin para impresoras térmicas que es muy parecido a este pero usa comandos ESC POS y a mi parecer los tickets quedan más legibles.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario