Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Joubert-JS

PHP realiza Impressão com a MP-4200 TH

Recommended Posts

Pessoal estou tentando realizar impressão na Bematech MP-4200 TH com PHP 5, mas não consigo poderiam me indicar algum blog/site que ensine a realizar este feito.

Fico grato pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, Joubert. Acabo de realizar esse feito. Na verdade, conseguimos mandar a impressão pra MP 4200 TH através da rede...

<?php

$impressora_porta_padrao = 9100; // Porta em que a impressora fica escutando por padrão
$impressora_endereco_na_rede = "191.55.56.55"; // Ip da impressora na internet ou rede

/* Criar o socket responsavel pela conexão com a impressora. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
    echo "socket_create() falha: motivo: " . socket_strerror(socket_last_error()) . "<br>";
} else {
    echo "OK.<br>";
}

echo "Conectando no endereço: " . $impressora_endereco_na_rede . " e porta " . $impressora_porta_padrao . "<br>";
$result = socket_connect($socket, $endereco_da_impressora_na_rede, $service_port);
if ($result === false) {
    echo "socket_connect() falha: motivo: ($result) " . socket_strerror(socket_last_error($socket)) . "<br>";
} else {
    echo "OK <br>";
}
//Pequena lista com comandos suportados pela impressora.
// A impressora pode trabalhar recebendo instruções de configurações em Hexadecimal... 

$esc	 		= "\x0"; // toda impressão deve começar com esse caracter de escape
$cortaTotal		= "\x1B\x69";
$avancaPapel		= "\x0C";
$diminuiLineSpace	= "\x1B\x33\x12";

$negritoOn		= "\x1B\x45";
$negritoOff		= "\x1B\x46";

$sublinhaOn		= "\x1B\x56\x01";
$sublinhaOff		= "\x1B\x56\x00";

$tamanhoDuploOn		= "\x1b\x64\x01";
$tamanhoDuploOff	= "\x1b\x64\x00";

$melhoraQualidade	= "\x1D\xF9\x2D\x01";
$diminuiQualidade	= "\x1D\xF9\x2D\x00";


$impressao = $esc . $melhoraQualidade . $diminuiLineSpace  ;
$impressao .= "Página teste! Impressora Funcionando\n outra linha\n";
$impressao .= $negritoOn . "Negrito ligado! " . $negritoOff . " agora desligado.";
$impressao .= $cortaTotal;

//Enviando ao socket da impressora

echo "Enviando:";
socket_write($socket, $impressao, strlen($impressao));
echo "OK <br>";


//essa parte comentada, seria a parte que escuta de volta oque a impressora
//tem a dizer, porem, nunca recebi nada por aí,

/*&echo "Reading response:\n\n";
while ($out = socket_read($socket,2)) {
   echo (string)$out;
}*/

echo "Closing socket...";
socket_close($socket);
echo "OK <br>";

Vale lembrar que, dessa maneira, você esta sozinho no quesito de "fila de impressão". Tudo era resolvido pelos drivers de spooler do sistema operacional. Agora, caso necessário, você terá de criar uma aplicação para fazer esse serviço... Valeu.

 

Retiramos os comandos daqui:

http://www.bematech.com.br/administrador/files/equipamento/suporte/17/1394308953-Impressora_MP-4200TH_Manual_01_Manual_de_Programacao.pdf

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia! Felipe, usei seu codigo para imprimir uns tickets com codigo de barras, tudo deu certo como esperado, somente o bendito codigo de barras que não consigo imprimir, pois não consegui entender no manual como proceder.

Passar um numero para impressora e ela imprimir em codigo de barras. Se puder ajudar eu agradeço muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Vej que o post é antigo, mas como teve atualizção em 2018, vou citar:

Eu fiz isso em 2015 também. Ainda não tinha esse tópico, mas fiz de maneira diferente.

Eu gero um arquivo pdf com dados do bd e depois executo o lpr(no linux) para imprimir

Se for útil a alguém, é só pedir...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.