C# Impressao Matricial

1,333 views
Skip to first unread message

Juliano Feltraco

unread,
May 11, 2012, 10:31:31 AM5/11/12
to dotn...@googlegroups.com
Bom dia pessoal
Gostaria de saber se alguém tem algum link para tutorial de impressão matricial.
Tenho uma LX-300+II USB, onde preciso imprimir 2 comprovantes distintos.

Futuramente vou precisar imprimir também em impressora 40 colunas.

Grato desde já.

Jairo Azevedo

unread,
May 11, 2012, 1:23:03 PM5/11/12
to dotn...@googlegroups.com
Fala Juliano, 
Não sei se tem um método próprio no C#, mas uma forma que eu aplico para resolver este tipo de necessidade é gerar um arquivo texto com a impressão a ser realizada (inclusive com comandos específicos de formatação) e depois do arquivo pronto eu copio-o diretamente para a impressora.
Se alguém da lista tiver outra forma de fazer, gostaria de saber tb.

Jairo.

--
==============================
Comunidade de desenvolvedores Dot Net no Brasil
 
WebSite: www.dotnetbr.com
 
E-mail do Grupo: dotn...@googlegroups.com
==============================



--
Jairo Azevedo
jsou...@gmail.com
proth...@yahoo.com.br
http://br.linkedin.com/in/jairodesouza
(21) 8888-6492

Roger Luiz

unread,
May 11, 2012, 1:31:32 PM5/11/12
to dotn...@googlegroups.com
Bom...
Quando precisei fazer isso há anos atrás usei o Crystal Reports.
Acho que é até mais fácil de configurar as áreas e afins. O problema é que Crystal é (ou era) um verdadeiro inferno na hora de distribuir a aplicação e não é  de graça.

Jairo Azevedo

unread,
May 11, 2012, 1:53:45 PM5/11/12
to dotn...@googlegroups.com
Fala Roger, 
No CR, dá para fazer impressão nativa de matricial, ou é aquela impressão gráfica onde o carro da impressora passa duas vezes para imprimir uma única linha?

Mauricio Junior

unread,
May 11, 2012, 2:05:35 PM5/11/12
to dotn...@googlegroups.com
No Crystal Reports se vc colocar a font Draft 10cpi ou 12cpi ele imprime em moto texto, agora se usar fontes true type ele imprime em modo grafico mesmo.

Bom C# nao é o meu forte, mais vou dar algumas dicas de impressão:

Uma abordagem que uso para impressões direto para a porta é gravar o arquivo diretamente na porta da impressora. Por exemplo vc grava um arquivo texto com o conteudo da impressão em por exemplo C:\impressao.txt, no lugar deste caminho vc coloca a porta da impressora diretamente, por exemplo LPT1.

Como a impressora é USB fica um pouco mais complicado pois o windows nao deixa vc mapear diretamente a porta USB000x, pode-se fazer o teste diretamente no prompt de comando, por exemplo: "dir>LPT1" onde o prompt jogara o conteudo do diretorio diretamente para a impressora, ja na USB ele retorna um erro, eu costumo fazer da seguinte forma, compartilho a impressora com um nome qualquer, ai no caminho coloco "\\127.0.0.1\compartilhamento", com este recurso vc pode inclusive imprimir atravez da rede.

Outra forma é mapear a porta para um caminho de rede, ai usa-se o seguinte comando: "net use LPT3 \\127.0.0.1\compartilhamento" e à partir deste momento o que vc mandar para LPT3 irá para este caminho de impressão.

Bom é +/- isso, em C# como disse nao é o meu forte, mais acredito que seja somente abrir um steam de arquivo para o caminho LPT1 e jogar as strings diretamente la dentro.

PS: Para impressoras matriciais existem uma série de comandos especiais como por exemplo condensar a fonte, mudar o espacamento horizontal, ejetar a folha, configurar tamanho da folha, tudo isso é feito atravez de uma combinação de caracteres, essa tabela se acha facil pela internet, mais qualquer dúvida me pergunte.

Abraços

Alan R. Lima

unread,
May 11, 2012, 3:49:15 PM5/11/12
to dotn...@googlegroups.com
Mauricio, 

Aproveitando o tópico, recentemente eu tive um problema com pulo de página na impressora matricial.

Explicando o problema: A aplicação (para WM 6.0) imprime nota fiscais na impressora com os dados sendo enviado via bluetooth. 
O problema é que com algumas notas estava dano um pulo de página (também era aleatório, as vezes ele pulava as vezes não). 
Analisando o código achei o comando que fazia a impressora da o pulo, era quando a aplicação enviava o código 0xC (12) para a impressora, olhando na internet vi que esse código representa o page break.
Se eu comentar essa linha do código, as notas são impressas sem o pulo de página.

Você sabe se tem algum problema de não enviar o comando de page break ou o porque do pulo ?


Abraços,
Alan Lima

Mauricio Junior

unread,
May 11, 2012, 4:09:55 PM5/11/12
to dotn...@googlegroups.com
Alan boa tarde,

Bom as tabelas de comando são no padrão Epson, 80% das impressoras que trabalhei seguem esta tabela, mais para maiores detalhes precisaria ver o datasheet da impressora que vc utilizou.

Um grande problema que quase todo mundo enfrenta com salto de paginas é o seguinte, a impressora tem o tamanho padrão de papel, porém 2 linhas antes do picote ela nao imprime(por default), neste caso tem um comando que desativa o salto de picote, desativando este salto o formulario fica continuo(realmente) vc pode imprimir e controlar o salto via codigo, mandando o 0x0A e 0x0D(/r/n) e controlando tudo via código, uma outra possibilidade é informar para a impressora qual o tamanho da pagina que você deseja, tem um comando especifico pra isso, não lembro de cabeça mais é algo do tipo #27 + 'A' + #x(onde x é o numero de linhas que deve corresponder com o espaçamento de linhas da impressora), ai quando vc manda o comando para pular a pagina ela pula até a proxima linha após o tamanho da pagina, por exemplo:

Configurei o formulario para 30Linhas, mandei imprimir 12 linhas, mando o comando para pular pagina o sistema pula automaticamente 18 linhas, isso tudo a impressora que controla.

No seu caso, o que pode estar ocorrendo é justamente vc imprimir até chegar nestas duas linhas antes do salto de pagina, a impressora automaticamente faz o salto, ai vc envia o comando para pular a pagina e ela pula mais uma, saindo uma em branco.

Espero ter ajudado.

Qualquer dúvida, se isso nao for assunto pra lista, pode me mandar um e-mail em PVT.

Abraços
Reply all
Reply to author
Forward
0 new messages