Enviado em 12/06/2014 - 01:45h
Pessoal, surgiu a necessidade de criar um programa que imprima caracteres, só que ao invés de ser na tela agora é em impressora de verdade, eu quero saber se alguém conhece alguma maneira em c padrão que seja viável para realizar isso sem precisar trabalhar em nível muito baixo, e que seja portável entre GNU/Linux e windows?Enviado em 12/06/2014 - 13:24h
O que você precisa enviar para a impressora? Só texto? Comandos específicos do seu modelo de impressora?Enviado em 13/06/2014 - 09:03h
Enviado em 13/06/2014 - 19:12h
bem, desculpe a demora deixa eu explicar melhor, bem eu trabalho em uma empresa se software web, e geralmente quando precisamos de criar algum documento mais específico para cada empresa geramos em formato pdf, via php com fpdf ou criamos em html e deixamos o navegador cuidar do resto, o problema é que agora surgiu um problema lá que a gente precisa imprimir certas informações em pontos exatos de um modelo de notas fiscais que usam obrigatoriamente formulários contínuos que só são reconhecidos em impressoras matriciais, e o pdf infelizmente não se mostrou tão universal nessas impressoras, saiu do rumo completamente.Enviado em 15/06/2014 - 19:27h
Eu nunca fiz programas para imprimir notas fiscais em matriciais, mas cansei de fazer programas para imprimir em formulários de etiquetas, incluindo gráficos. Cheguei até a fazer um programa com interface gráfica rudimentar em DOS para que alguém pudesse desenhar os bitmaps e convertê-los em arrays que poderiam ser importados para dentro de um programa em C. Isso lá por volta de 1989 a 1994.char *prn_path; FILE *prn_fp; #ifndef _WINDOWS char cmd_line[4096]; #endif read_config_file(NOME_ARQ_CONFIG, &prn_path); #ifdef _WINDOWS /* No Windows, suponho que a impressão deve ser enviada para o dispositivo LPTn:, que pode ser físico ou um mapeamento de uma fila local (no caso de impressoaras USB) ou de rede, desde que tais filas usem impressoras de um tipo que não tente capturar e interferir sobre o conteúdo enviado. Note no fopen() abaixo o uso do argumento "wb". Necessário para compati- bilidade com UNIX, que, ao contrário do Windows, não faz distinção entre arquivos de texto e binários, logo não converte automaticamente "\n" para "\r\n". A consequência é que será necessário enviar explicitamente a se- quência "\r\n" se quando se quiser que a impressora pule uma linha. */ prn_fp=fopen(prn_path, "wb"); #else /* No Linux, suponho uso de CUPS com uma fila do tipo raw/raw queue. A quebra de linha se faz com "\r\n", e não apenas com "\n". */ snprintf(cmd_line, sizeof cmd_line, "lpr -P%s", prn_path); prn_fp=popen(cmd_line, "w"); #endif /* Começa enviando o comando ESC/P para reset da impressora. */ fprintf(prn_fp, "\33@"); /* Posiciona a cabeca de impressão na quinta linha (i.e. pula quatro linhas), décima coluna (nove espaços em branco), e imprime o texto dessa linha. */ fprintf("\r\n\n\n\n %s\r\n", nome_cliente); /* Imprime tudo o que tem de imprimir. */ fprintf("blablabla\r\nblebleble\r\n..."); /* ... */ /* Finaliza, pulando para o começo da nova página. */ fputc('\f', prn_fp); fclose(prn_fp);
Enviado em 18/06/2014 - 01:18h
achei o jeito, aqui, lá no windows é com abrindo o arquivo LPT1, só que com um porém, como a usb foi inventada depois que a micro$oft adotou o windows, não existe nenhum comando nativo de terminal que gerencie isso, daí a solução é compartilhar a impressora na rede(mesmo que não seja uma impressora de rede, de fato), e redireciona a porta dela para uma LPT virtual, daí, não precisa nem gerar para mandar o driver processar é so escrever direto para a impressora, e modestia parte, é bastante rápida a resposta.Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)