IMPRESSÃO DO NFC-E DIRETA PARA A IMPRESSORA

MARCELOKROL 09/10/2015 13:50:57
#452377
Boa tarde pessoal

Pesquisei na internet, mais não encontrei algo consistente, e hoje faço a impressão do meu nfc-e usando xtrareports. Mas gostaria de implementar uma rotina para a impressão direta para a impressora usando a linguagem ESC/POS que a maioria das impressoras aptas para a impressão do NFC-e utiliza.

Creio que será necessário uma implementação por marca de impressora.

Me proponho a ajudar no desenvolvimento de uma classe para tal finalidade, pois acredito que mais gente irá necessitar de tal funcionalidade. Tenho como efetuar testes nas marcas epson (tm-t20) e bematech (mp4200)
LEANTRONIC 09/10/2015 14:14:47
#452381
Acabei de conseguir imprimir o QR Code e o codigo de barra pra impressora Bematech... atraves do ESC/POS, foi 2 dias de muita pesquisa e mto papel jogado fora

Segue a minha contribuição:

 

Dim qrcode As String
qrcode = Chr(27) + Chr(97) + Chr(1) + _
Chr(29) + Chr(107) + Chr(81) + _
Chr(2) + Chr(12) + Chr(8) + Chr(1) + _
Chr([Ô]20[Ô]) + _ [ô]Tamanho do texto que será gerado o QRCODE
Chr(0) + _
[Ô]leandrolimongebastos[Ô]

sw.WriteLine(qrcode)



e agora o codigo de barra

  sw.WriteLine(Chr(29) & [Ô]k[Ô] & Chr(2) & [Ô]1234567890123[Ô] & Chr(0)) [ô] EAN-13
WILSONJOSE 09/10/2015 15:09:21
#452385
Boa tarde, só aproveitando o assunto, segue um exemplo para impressão do QRCODE em várias linguagem.
WILSONJOSE 09/10/2015 15:12:26
#452386
ops faltou o anexo, há outras linguagens também

WILSONJOSE 09/10/2015 15:14:10
#452387
em .Net
WILSONJOSE 09/10/2015 15:35:48
#452389
em c#
MARCELOKROL 09/10/2015 20:07:00
#452396
Na verdade eu pensei em algo tipo esse aqui, so que de codigo fonte aberto:
https://www.nuget.org/packages/PrinterUtility/

Legal LEANTRONIC, ja ajuda, so uma duvida como que voce definiu o objeto sw?

WILSONJOSE, é louvável a sua ajuda, mais como disse anteriormente: a ideia seria a impressão direta para a impressora sem a intervenção do Windows. Voce esta se perguntando: por que imprimir direto se assim como eu fiz da certo? Resposta: um melhor ganho de velocidade sem a necessidade de dlls e complementos de terceiros!
LOOZE 09/10/2015 20:39:57
#452397
Tambem funcional para o SAT-CFe.

Função que formata estilo tudo em ESC-POS

      Sub FormataTexto(ByVal Informacao As String, Optional ByVal Negrito As Boolean = False, Optional ByVal Centraliza As Boolean = False, Optional ByVal Condensa As Boolean = False, Optional ByVal Expande As Boolean = False)
Try
Dim TagFormata As String

If Impressora = [Ô]DARUMA[Ô] Then
TagFormata = String.Empty
If Negrito = True Then TagFormata = [Ô]<b>[Ô]
If Centraliza = True Then TagFormata = TagFormata & [Ô]<ce>[Ô]
If Condensa = True Then TagFormata = TagFormata & [Ô]<c>[Ô]
If Expande = True Then TagFormata = TagFormata & [Ô]<e>[Ô]
Texto = Texto & TagFormata & Informacao
TagFormata = String.Empty
If Expande = True Then TagFormata = [Ô]</e>[Ô]
If Condensa = True Then TagFormata = TagFormata & [Ô]</c>[Ô]
If Centraliza = True Then TagFormata = TagFormata & [Ô]</ce>[Ô]
If Negrito = True Then TagFormata = TagFormata & [Ô]</b>[Ô]
Texto = Texto & TagFormata & vbNewLine

ElseIf Impressora = [Ô]BEMATECH[Ô] Then
If Centraliza = True Then Texto = Texto & Chr(&H1B) & [Ô]a[Ô] & Chr(1)
TagFormata = String.Empty
If Negrito = True Then TagFormata = Chr(27) + Chr(69)
If Condensa = True Then TagFormata = TagFormata & [Ô] [Ô] & Chr(15)
If Expande = True Then TagFormata = TagFormata & [Ô] [Ô] & Chr(27) + Chr(87) + Chr(49)
Texto = Texto & TagFormata & Informacao
TagFormata = String.Empty
If Expande = True Then TagFormata = Chr(27) + Chr(87) + Chr(48)
If Condensa = True Then TagFormata = TagFormata & [Ô] [Ô] & Chr(18)
If Negrito = True Then TagFormata = TagFormata & [Ô] [Ô] & Chr(27) + Chr(70)
Texto = Texto & TagFormata & Chr(10)
If Centraliza = True Then Texto = Texto & Chr(&H1B) & [Ô]a[Ô] & Chr(0)

ElseIf Impressora = [Ô]EPSON[Ô] Then

ElseIf Impressora = [Ô]ELGIN[Ô] Then
If Centraliza = True Then Texto = Texto & Chr(&H1B) & [Ô]a[Ô] & Chr(1)
TagFormata = String.Empty
If Negrito = True Then TagFormata = Chr(27) + Chr(69)
If Condensa = True Then TagFormata = TagFormata & [Ô] [Ô] & Chr(15)
If Expande = True Then TagFormata = TagFormata & [Ô] [Ô] & Chr(27) + Chr(87) + Chr(49)
Texto = Texto & TagFormata & Informacao
TagFormata = String.Empty
If Expande = True Then TagFormata = Chr(27) + Chr(87) + Chr(48)
If Condensa = True Then TagFormata = TagFormata & [Ô] [Ô] & Chr(18)
If Negrito = True Then TagFormata = TagFormata & [Ô] [Ô] & Chr(27) + Chr(70)
Texto = Texto & TagFormata & vbNewLine
If Centraliza = True Then Texto = Texto & Chr(&H1B) & [Ô]a[Ô] & Chr(0)
ElseIf Impressora = [Ô]DIEBOLD[Ô] Then

Else

End If
Catch ex As Exception
Gera_ERRO(Err.Number, Err.Description, ex.StackTrace, Err.Source)
End Try
End Sub
LEANTRONIC 11/10/2015 10:28:27
#452435
Citação:

:
Na verdade eu pensei em algo tipo esse aqui, so que de codigo fonte aberto:
https://www.nuget.org/packages/PrinterUtility/

Legal LEANTRONIC, ja ajuda, so uma duvida como que voce definiu o objeto sw?

WILSONJOSE, é louvável a sua ajuda, mais como disse anteriormente: a ideia seria a impressão direta para a impressora sem a intervenção do Windows. Voce esta se perguntando: por que imprimir direto se assim como eu fiz da certo? Resposta: um melhor ganho de velocidade sem a necessidade de dlls e complementos de terceiros!



Esqueci de colocar, vou colocar com faço a impressão do meu QR Code:

  
System.IO.Directory.SetCurrentDirectory(My.Application.Info.DirectoryPath)
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(My.Application.Info.DirectoryPath & [Ô]\SPOOL\PEDIDO.txt[Ô], False, System.Text.Encoding.GetEncoding([Ô]ISO-8859-1[Ô]))


Dim qrcode As String
qrcode = Chr(27) + Chr(97) + Chr(1) + _
Chr(29) + Chr(107) + Chr(81) + _
Chr(2) + Chr(12) + Chr(8) + Chr(1) + _
Chr([Ô]20[Ô]) + _ [ô]Tamanho do texto que será gerado o QRCODE
Chr(0) + _
[Ô]leandrolimongebastos[Ô]

sw.WriteLine(qrcode)

Try
System.IO.File.Copy(My.Application.Info.DirectoryPath & [Ô]\SPOOL\PEDIDO.txt[Ô], [Ô]LPT1[Ô], True)
Catch ex As Exception
MessageBox.Show([Ô]Não foi possivel encontrar a impressora[Ô])
End Try


Tópico encerrado , respostas não são mais permitidas