Scriptcase Impresión POS con Libreria MIKE42

1,014 views
Skip to first unread message

Fausto

unread,
Sep 24, 2020, 12:52:35 AM9/24/20
to comunidad-scrip...@googlegroups.com

Scriptcase Libreria Mike42 para Impresión Directa


La librería Mike42 implementa un subconjunto del protocolo ESC / POS de Epson para impresoras térmicas de recibos. Le permite generar e imprimir recibos con formato, corte y códigos de barras básicos en una impresora compatible.


La biblioteca se desarrolló para agregar soporte directo para la impresión de recibos a cualquier aplicación PHP, incluidas las aplicaciones de punto de venta (POS) basadas en la web.


Se sabe que este controlador funciona con las siguientes combinaciones de interfaz / sistema operativo:

Con esta librería solo es posible imprimir en impresoras conectadas o comunicadas directamente con el servidor.


El driver completo puede ser descargado de la siguiente dirección : https://github.com/mike42/escpos-php/archive/development.zip


Al descomprimir el driver tendremos una estructura de carpetas y archivos, de esta solo necesitaremos la carpeta  \src\Mike42, podemos dar click derecho sobre está carpeta y generar un archivo zip con el nombre Mike42.zip que luego cargaremos en la librería externa de SC.



1.- Crear librería Externa de proyecto; 

A.- Herramientas -> Librería externa

B.- Crear Una nueva librería en el ámbito de proyecto con el nombre  mike42

C.- Unload : Arrastrar el archivo Mike42.zip.

        

2.- Crear archivo autoload.php y agregar el siguiente código php.


<?php



/**

 * autoload.php

 * Users who do not have 'composer' to manage dependencies, include this

 * file to provide auto-loading of the classes in this library. 

 */

spl_autoload_register ( function ($class) {

/*

* PSR-4 autoloader, based on PHP Framework Interop Group snippet (Under MIT License.)

* https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-4-autoloader-examples.md

*/

$prefix = "Mike42\\";

$base_dir = __DIR__ . "/Mike42/";

/* Only continue for classes in this namespace */

$len = strlen ( $prefix );

if (strncmp ( $prefix, $class, $len ) !== 0) {

return;

}

/* Require the file if it exists */

$relative_class = substr ( $class, $len );

$file = $base_dir . str_replace ( '\\', '/', $relative_class ) . '.php';

if (file_exists ( $file )) {

require $file;

}

} );


?>


Cerrar y guardar librería externa.


3.- Crear aplicación blank y poner el siguiente código en el onexecute:


sc_include_library ("prj", "mike42", "autoload.php", true, true);


$prnName   = "RECIBOS";  // nombre impresora

$connector = new Mike42\Escpos\PrintConnectors\WindowsPrintConnector($prnName);

$printer   = new Mike42\Escpos\Printer($connector);


$printer -> text("Hello World!\n");

$printer -> cut();

$printer -> close();


Como puedes notar el nombre de la impresora es RECIBOS. Para el correcto funcionamiento fue necesario utilizar el conector de windows, la impresora utilizada es una Epson LX300+ II con la interface USB y compartida con el nombre “RECIBOS”


Al ejecutar esta aplicación debería imprimir “Hello World” en la impresora matricial o térmica instalada en un puerto USB del servidor PHP, esta es una forma de hacerlo, para otras modalidades consulte la información de la librería y los diferentes conectores.


Para más información sobre los distintos conectores que pueden ser utilizados y los diferentes instrucciones de impresión refiérase a  https://github.com/mike42/escpos-php donde encontrarás más informacioens y ejemplos, en esta guía solo intento ilustrar un método sencillo de integración de esta librería en nuestras aplicaciones Scriptcase.


Podrás encontrar mas ejemplo de uso de la librería en https://mike42.me/blog/what-is-escpos-and-how-do-i-use-it .


Espero que esto sirva de ayuda.



mike42.zip

Jonattan Benavides

unread,
Oct 9, 2020, 7:37:46 AM10/9/20
to Comunidad ScriptCase Latino
Hola Fausto.
Yo estoy implementando la librería Mike42 en ambiente de desarrollo me funciona correctamente pero cuando la subo a un ambiente productivo el blank me da error 500. Conoces como solucionar este error. Ya he probado en dos VPS distintos y ocurre el mismo error.
De antemano muchas gracias.
El miércoles, 23 de septiembre de 2020 a la(s) 23:52:35 UTC-5, Fausto escribió:

Scriptcase Libreria Mike42 para Impresión Directa


La librería Mike42 implementa un subconjunto del protocolo ESC / POS de Epson para impresoras térmicas de recibos. Le permite generar e imprimir recibos con formato, corte y códigos de barras básicos en una impresora compatible.


La biblioteca se desarrolló para agregar soporte directo para la impresión de recibos a cualquier aplicación PHP, incluidas las aplicaciones de punto de venta (POS) basadas en la web.


Se sabe que este controlador funciona con las siguientes combinaciones de interfaz / sistema operativo:


Fausto

unread,
Oct 9, 2020, 8:58:44 AM10/9/20
to Comunidad ScriptCase Latino

Asegúrate que estas usando el conector de impresora correcto, es diferente para Mac, linux o windows, el otro factor es el modo de conexión de la impresora con el servidor, serial, paralela, red, usb, etc 



Recuerda que la impresora debe de estar conectada al servidor o por lo menos en la misma red que el servidor.

Fausto

unread,
Feb 21, 2022, 11:10:43 PM2/21/22
to Comunidad ScriptCase Latino

mike42_en_Window.png

Fausto

unread,
Feb 22, 2022, 10:41:45 AM2/22/22
to Comunidad ScriptCase Latino
Para el correcto funcionamiento de la librería Mike42, asegúrese de que tiene habilitada la extensión intl  (ext\php_intl.dll), de lo contrario al intentar imprimir saltara errores, también es importante incluir la ruta (path) de nuestra carpeta php en las variables del ambiente de sistema de windows, esto permitirá que cuando apache cargue las extensiones de php, este pueda encontrar todas las dependencias.
Mike42_Evitar Errores.png
Reply all
Reply to author
Forward
0 new messages