, (*1)
posprint
API para impressão em impressoras termicas POS (Point of Sales). Usadas em caixa de redes varejistas., (*2)
ATENÇÃO ESTE PACOTE AINDA ESTÁ EM FASE ALPHA E NÃO É FUNCIONAL.
Necessitamos de colaboradores !
O modo de funcionamento desta API é pelo envio de comandos diretos (RAW) para a impressora, sem a necessidade de uso de drivers especificos.
E está construída com base nos comandos Esc/Pos disponíveis para as impressoras de vários fabricantes (marcas e modelos escolhidos com foco no mercado Brasileiro dessas impressoras)., (*3)
Os fabricantes a seguir estão inclusos nessa API, porém nem todos os modelos dessas marcas irão funcionar devido a disponibilidade de recursos oferecidos pelo seu próprio firmware. (Os modelos indicados por enquanto são mera informação de base, ainda não foram feitos todos os testes funcionais reais)., (*4)
- EPSON (TM-T20)
- DARUMA (DR700)
- BEMATECH (MP-4200 TH)
- ELGIN (VOX)
- STAR (BSC-10)
- SWEDA (SI-300)
- DIEBOLD (TSP143MD/MU)
Esta API deve prover acesso as impressoras térmicas conectadas atraves de várias formas de conexão e em qualquer sistema operacional, dependendo apenas da correta intalação e configuração da conexão, sem a necessidade de drivers especificos para cada S.O. (apenas um driver RAW padrão em alguns casos) :, (*5)
- Serial
- Paralela
- USB
- Cups Print Server
- Windows Printer Server
- IPP
- LPR
- Web (qz.io java)
Prerequisitos PHP, (*6)
- PHP >= 5.6
- ext-gd (para tratamento das imagens e logos)
- estudando a possibilidade de uso de ext-imagick
Funcionamento básico
- Carrega classe do conector apropriado
- Carrega classe da impressora apropriada
- Envia a sequencia de comandos usando as funções básicas da interface e da classe de impressora
- Envia os comandos para a impressora usando o conector escolhido
NOTAS DOS COLABORADORES
O problema que encontramos, foi na classe PhpSerial, pois o autor resolveu executar os comandos do windows para alteração de porta separadamente. Porem no windows, toda vez que o comando "mode PORTA" é executado, se passado algum parametro, os outros voltam ao default. E a impressora deve funcionar com a porta da forma que está na imagem abaixo., (*7)
Para isso acontecer voce deve alterar as linhas do arquivo posprint-master/vendor/hyperthese/php-serial/src/PhpSerial.php, (*8)
//$this->_device = "\\.com" . $matches[1];
$this->_device = "COM" . $matches[1];
Foi alterado essa linha pois o windows não abre porta serial com o comando "\.com" e sim "COM", (*9)
Depois fizemos outra alteração que é na linha abaixo., (*10)
"mode " . $this->_winDevice . " PARITY=" . $parity{0},
"mode " . $this->_winDevice . " DATA=8 PARITY=" . $parity{0},
A alteração foi necessária devido a explicação feita no inicio do e-mail., (*11)
Pessoal, essas alterações foram feitas apenas para testes no windows utilizando a porta serial, lembrando que esse não é o intuito do projeto., (*12)
Atenciosamente,, (*13)
R Ribeiro Soares, (*14)
Instalação (Install)
Via Composer, (*15)
``` bash
$ composer require nfephp-org/posprint, (*16)
## Exemplo de Uso (*Usage*)
``` php
$filename = "/tmp/epson.prn";
$connector = new Posprint\Connector\File($filename);
$printer = new Posprint\Printers\Epson($connector);
$printer->initialize();
$printer->setBold();
$printer->text("Hello World !!");
$printer->setBold();
$printer->lineFeed(2);
$printer->setAlign("C");
$printer->text("CENTRAL");
$printer->lineFeed(2);
$printer->cut();
$printer->send();
Log de Alterações (Change Log)
Por favor veja o Log de Alterações para mais informações sobre as mudanças mais recentes.
Please see CHANGELOG for more information what has changed recently., (*17)
Testando (Testing)
bash
$ composer test
, (*18)
Contribuindo (Contributing)
Por favor leia como contribuir em CONTRIBUTING e nosso Código de Conduta para maiores detalhes.
Please see CONTRIBUTING and CONDUCT for details., (*19)
Security
Caso você encontre qualquer problema relacionado a segurança, informe diretamente o mantenedor linux.rlm@gmail.com ao invés de abrir uma ISSUE no github.
If you discover any security related issues, please email :author_email instead of using the issue tracker., (*20)
Creditos (Credits)
I must thank and a lot to these developers because without his help the availability of their works under open licenses would not be possible to develop this project., (*21)
Licenças (License)
Este pacote está sendo disponibilizado sob as licenças LGPLv3 ou GPLv3 ou MIT, verifique o arquivo Licenças para maiores informações.
The LGPLv3, GPLv3 and MIT License. Please see License File for more information., (*22)