IMPRESSÃO DO NFC-E DIRETA PARA A IMPRESSORA
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)
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)
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:
e agora o codigo de barra
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
Boa tarde, só aproveitando o assunto, segue um exemplo para impressão do QRCODE em várias linguagem.
ops faltou o anexo, há outras linguagens também
em .Net
em c#
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!
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!
Tambem funcional para o SAT-CFe.
Função que formata estilo tudo em ESC-POS
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
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