Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde.
Vou compartilhar uma solução com vocês.
Tive muita dificuldade em achar um código para imprimir direto para uma determinada impressora na porta paralela LPT1.
Fiz muitas pesquisas na internet, achei várias soluções(maioria não funcional), mas dentre estas que funcionaram para mim esta é a mais interessante.
É extremamente simples. Veja:
Exemplo da geração do TXT:
Dim arquivo, diretorio As String
diretorio = "c:\temp_txt\"
arquivo = "c:\temp_txt\arquivo.txt"
'SE A PASTA NÃO EXISTIR, CRIA.
If Not IO.Directory.Exists(diretorio) Then
IO.Directory.CreateDirectory(diretorio)
End If
If IO.File.Exists(arquivo) Then caso exista o arquivo deleta e cria novo por cima
IO.File.Delete(arquivo)
Dim criar = IO.File.CreateText(arquivo)
criar.Close()
Else 'inexistente, cria novo.
Dim criar = IO.File.CreateText(arquivo)
criar.Close()
End If
Populando o txt com os dados:
Try
codutf = System.Text.Encoding.GetEncoding("ISO-8859-1") 'selecionando codificação
Dim fluxoTexto As IO.StreamWriter 'carregando streamwriter
fluxoTexto = New IO.StreamWriter(arquivo, True, codutf) 'instancia streamwriter
Dim texto As String
texto = "TESTE DE IMPRESSAO" & vbCrLf
fluxoTexto.WriteLine(texto) 'escrevendo no txt
fluxoTexto.Close()
Catch ex As Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
Agora, simplesmente usamos isto, que encaminha para a porta LPT1 o arquivo.
O parâmetro 'true' é importante.
System.IO.File.Copy("c:\temp_txt\arquivo.txt", "LPT1", True)
DICA 1:
E caso você esteja em um micro que NÃO tenha LPT1 e queira testar o software, você pode usar o seguinte programa listado nesse site:
http://hulp.wordpress.com/2008/03/20/programa-para-emular-porta-lpt-pela-usb/
Baixe, abra o aplicativo e ele aparece do lado do relógio do Windows.
Entrando no painel dele você deve redirecionar o que imprime na LPT1 para uma impressora qualquer, assim 'emulando' a porta LPT1.
DICA 2:
Ainda há a opção de gerar um comando no DOS para imprimir o arquivo.
O problema nesse caso é que alguns anti-vírus barram a aplicação por desconfiar do algoritmo que executa comandos DOS e você acaba dependente de excessões em algumas das máquinas que possa instalar o software.
Dim comando As String = "type c:\temp_txt\arquivo.txt > LPT1"
Shell("cmd.exe /c " & comando)
DICA 3:
Se a impressão para a porta LPT1 não funcionar de jeito nenhum, você pode criar um compartilhamento para a impressora destino que pode estar ligada na porta USB, e acessar o compartilhamento para a tarefa de impressão. Desse jeito:
System.IO.File.Copy("c:\temp_txt\arquivo.txt", "\\127.0.0.1\IMPRESSORA_X", True)
Onde IMPRESSORA_X é o nome do mapeamento. Você ao invés desse ip de localhost pode usar o IP de um servidor de impressão, nesse caso verifique permissões relativas aos firewalls ou roteadores.
DICA 4:
Em C#, como listado nesse link: http://www.dotnetperls.com/file-copy, parece ser uma tarefa bem parecida. No caso desse exemplo muda apenas a forma como gera-se o txt e a sintaxe obviamente, mas é funcional também. Não esqueça do parâmetro TRUE para substituição de arquivos.
Espero que ajude,
Giancarlo Braga.
Carregando comentários...