Ao desenvolver o meu projecto académico da cadeira de Fundamentos de Programação I/2007, em linguagem C, juntamente com o Nelson Neto, resolvi adicionar a funcionalidade de impressão de registos armazenados em ficheiros binários.

Mas enquanto implementavamos a função deparamo-nos com o facto de que no Sistema Operacional Linux não existe o ficheiro standard stdprn que representa a impressora padrão do sistema no windows. Por isso criamos um ficheiro denomidado IMPRESSORA.txt que recebia os dados a serem imprimidos na impressora padrão, procedimento que descreverei na devida altura.

Para adicionarmos os dados ao ficheiro de impressão analisamos o funcionamento da função fprintf, (fprintf(FILE *fich, const char *format, …) – em que o parâmetro inicial corresponde ao ficheiro onde o processamento será realizado), quando pretende-se apresentar os dados no monitor usando o ficheiro standard stdout.

fprintf(stdout,”Nome: %s”, x.nome);//Surge na tela “Nome: Leivan de //Carvalho”; nome contido em x.nome

Para o nosso caso, usamos o ficheiro IMPRIMIR.txt

fprintf(IMPRIMIR.txt ,”Nome: %s”, x.nome); //Envia-se para o ficheiro //IMPRIMIR.txt “Nome: Leivan de Carvalho”; nome contido em x.nome

Como para cada ficheiro já haviamos criado as suas respectivas funções que permitiam mostrar o seu conteúdo na tela, bastou-nos somente indicar como saída o ficheiro IMPRIMIR.TXT.

//Função mostrar_Inf_pessoal_Cand
//Parâmetros: ficheiro onde serão apresentados os dados e o registo a ser mostrado
void mostrar_Inf_pessoal_Cand( FILE *fp, P_INF_PESSOAL_CAND x )
{
system( “clear” );
getchar();
fprintf( fp, “\n\n\t\t\t *|**|* INFORMACOES PESSOAIS *|**|*\n\n” );
fprintf( fp, “\t\t\t\t\t***\n” );
fprintf( fp, “\tNUMERO REGISTO: %lu\n”,x.num_reg );
fprintf( fp, “\tNumero de aluno: %lu\n”,x.num_aluno );
fprintf( fp, “\tNome: %s”,x.nome );
fprintf( fp, “\tCurso: %s\n”,x.curso );
fprintf( fp, “\tAno: %hu\n”,x.ano_curso );

//    (…)
}

mostrar_Inf_pessoal_Cand( IMPRIMIR.TXT, P_INF_PESSOAL_CAND x );

Agora, tendo já os dados no ficheiro IMPRIMIR.TXT, bastou-me escrever o código que activasse o processo de impressão. Considerando o comando do LINUX para impressão na impressora padrão (lp arquivo.txt).

Código:

fp4=fopen(“IMPRIMIR.txt”,”wb“);//Abertura do ficheiro em modo de escrita binario

mostrar_Inf_pessoal_Cand(fp4,a);//Escreve a P_inf_familiar em IMPRIMIR.txt

fclose(fp4);//Fecho do ficheiro

system(“lp IMPRIMIR.txt”);//comando ‘lp’ enviar o ficheiro para a impressora padrao

 

E voila !!! Essas são as 4 linhas mais importantes para o processo de impressão, bastará colocá-las nos locais do seu código em que desejar, com algumas manipulações e funcionará!

Os procedimentos são de minha autoria (gerado em momento de adrenalina devido a “inovação” e tempo escasso lol ), portanto e se existir algum meio menos trabalhoso para se efectuar o processo de impressão gostaria de ter acesso ao mesmo. Por isso, estou aberto a novas informações!