Impressão Base64

197 views
Skip to first unread message

Marcos Vinicius

unread,
Feb 28, 2019, 7:18:42 AM2/28/19
to NFePHP
Olá pessoal, cá estou na luta de imprimir uma DANFC-e dos meus XMLs que já estão sendo gerados normalmente.

O que estou utilizando é o pacote nfephp-pos, com base no exemplo Base64.

A impressora que estou utilizando é uma Elgin i9.

O que acontece é que não imprime. Ele gera o código com base64 da imagem (com o comando echo $base64;) mas não imprime.

Estou esquecendo de fazer algo?

Desde já agradeço a atenção.

O código que estou utilizando é o seguinte:

$xml = '17650'; // nome do arquivo do xml da minha nfce

use NFePHP\POS\PrintConnectors\Base64PrintConnector;
use NFePHP\POS\DanfcePos;

// Inicializar conector
$connector = new Base64PrintConnector();

// Inicializar DanfcePos
$danfcepos = new DanfcePos($connector);

// Carregar NFCe
$xmlpath = 'fiscal/nfces/'.$xml.'.xml'; // Também poderia ser o conteúdo do XML, no lugar do path
$danfcepos->loadNFCe($xmlpath);

// // Gerar impressão
$danfcepos->imprimir();

// Obter impressão em base64
$base64 = $connector->getBase64Data();

// Retornar resposta
echo $base64;

suporte.t...@gmail.com

unread,
Feb 28, 2019, 7:30:38 AM2/28/19
to NFePHP
Esse base64 ele vai retornar os comando ESC/POS em base64. Você pode usar para imprimir usando o qz-tray.

Marcos Vinicius

unread,
Feb 28, 2019, 7:33:24 AM2/28/19
to NFePHP
Olá amigo.

Ah! Entendi.

Desculpe usar a sua boa vontade, mas você pode me passar algum link ou trecho de código que mostre como imprimir usando o qz-tray?

Desde já agradeço sua atenção, me desculpe por qualquer coisa.

Grande abraço.

suporte.t...@gmail.com

unread,
Feb 28, 2019, 7:43:59 AM2/28/19
to NFePHP
A impressão assim é feita via javascript. Na página da wiki do qz-tray tem os exemplos de como fazer a impressão (https://qz.io/wiki/2.0-getting-started). Para testes você pode usar o instalador, para produção é aconselhável você gerar um instalado com um certificado auto assinado seu para que a impressão fique transparente para o usuário.

Marcos Vinicius

unread,
Feb 28, 2019, 7:55:47 AM2/28/19
to NFePHP
Você recomenda que eu use a demo do qz-tray que vem no pacote sped-pos ou é melhor eu seguir o getting-started da página que você me passou?

A demo em si quando carrego já dá um erro: "Unable to stablish connection with QZ".

Muito obrigado pela ajuda.

Grande abraço.

suporte.t...@gmail.com

unread,
Feb 28, 2019, 8:03:39 AM2/28/19
to NFePHP
Eu achei mais fácil usar a documentação mesmo. Você só precisa baixar o instalador do qz-tray e os arquivos js da documentação. Basicamente o processo é fazer a conexão, e mandar imprimir.
 A impressão por exemplo:

    // Print data to chosen printer
    printData(printer: string, data: any): Observable<any> {
        const config = qz.configs.create(printer);
        console.log('printer: ', printer)
        console.log('data: ', data)
        return Observable.fromPromise(qz.print(config, data))
            .map((anything: any) => anything);
    }

onde "data" é
var data = [{
type: 'raw',
options: { language: "ESCPOS", dotDensity: 'double' },
format: 'base64',
data: response,
}];

Marcos Vinicius

unread,
Feb 28, 2019, 8:57:17 AM2/28/19
to nfe...@googlegroups.com
Show cara! Vou testar aqui!

Valeu!



--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

pedroro...@gmail.com

unread,
Jan 25, 2021, 2:05:11 PM1/25/21
to NFePHP
suporte.t

Pode por favor enviar como fez a certificação ?

Segui um manual da qzid porém não consigo sumir com a mensagem da impressora

tem como mandar como fez e como utiliza dentro do teu sistema

Obrigado

Roberto Machado

unread,
Jan 25, 2021, 3:38:47 PM1/25/21
to nfe...@googlegroups.com
Não dá para SUMIR com a mensagem a não ser que você recompile o QZTray substituindo o certificado e outros campos do código original.
QZ.io é pago !! 


Roberto

Pedro Rosa de Sousa

unread,
Jan 25, 2021, 4:18:33 PM1/25/21
to nfe...@googlegroups.com
Existe outra maneira de fazer a impressão?

--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Postar: nfe...@googlegroups.com
Para Sair do Grupo: nfephp+un...@googlegroups.com
Link: http://groups.google.com.br/group/nfephp?hl=pt-BR
-------
Repositórios: https://github.com/nfephp-org
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
--

Roberto Machado

unread,
Jan 26, 2021, 7:09:10 AM1/26/21
to nfe...@googlegroups.com
Existem muitas outras formas de fazer a impressão remota, mas todas têm uma coisa em comum, requerem um aplicativo desktop rodando na máquina cliente..

Fato: O browser não tem nem nunca mais terá acesso aos recursos da maquina (segurança)
Consequencia: Então pelo browser não é possível acessar nem impressora nem nada que possa pôr em risco o SO

Para contornar esse problema podemos usar um aplicativo DESKTOP (em JAVA, .NET, Delphi, C++, Python, etc), que roda na máquina cliente, ouvindo um SOCKET (uma porta na máquina local) e um javascript no browser recebe os comandos da impressora em uma string base64 (pois os comandos têm códigos binários), converte a string para os comando de impressão novamente e os envia para esse SOCKET na máquina local, com isso o aplicativo DESKTOP recebe o base64 com os comandos e os envia para a impressora designada.

Roberto 

Roberto Machado

unread,
Jan 26, 2021, 7:12:15 AM1/26/21
to nfe...@googlegroups.com
Corrigindo o texto !!

Existem muitas outras formas de fazer a impressão remota, mas todas têm uma coisa em comum, requerem um aplicativo desktop rodando na máquina cliente..

Fato: O browser não tem nem nunca mais terá acesso aos recursos da maquina (segurança)
Consequencia: Então pelo browser não é possível acessar nem impressora nem nada que possa pôr em risco o SO

Para contornar esse problema podemos usar um aplicativo DESKTOP (em JAVA, .NET, Delphi, C++, Python, etc), que roda na máquina cliente, ouvindo um SOCKET (uma porta na máquina local) e um javascript no browser recebe os comandos da impressora em uma string base64 (pois os comandos têm códigos binários), converte a string para os comando de impressão novamente e os envia para esse SOCKET na máquina local, com isso o aplicativo DESKTOP recebe o base64 com os comandos, converte a string para os comando de impressão novamente e os envia para a impressora designada.

Roberto 

Akira Sousa

unread,
Jan 26, 2021, 7:17:38 AM1/26/21
to nfe...@googlegroups.com, nfe...@googlegroups.com
pode usar pwa com isso você tem acesso as portas usb
--
--
Você recebeu esta mensagem porque está inscrito no Grupo "NFePHP".
Para Sair do Grupo: nfephp+un...@googlegroups.com
-------
---
Você recebeu essa mensagem porque está inscrito no grupo "NFePHP" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para nfephp+un...@googlegroups.com.
Sent from Mailspring

cper...@gmail.com

unread,
Jan 26, 2021, 8:54:28 AM1/26/21
to NFePHP
tenho uma aplicação em JAVA que roda no tray do window/linux que recebe os dados feitos e se comunica com a impressora termica/matricial e a4, se tiver interesse me chama
Reply all
Reply to author
Forward
0 new messages