lpansi

Fórum sobre ferramentas de apoio à programação (Clipper/[x]Harbour)

Moderador: Moderadores

Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

lpansi

Mensagem por Vlademiro »

Oi, pessoal

Andei olhando no fórum sobre um aplicativo chamado lpansi, que serve para enviar um arquivo para a impressora.

Eu baixei 2 fontes na net, compilei o arquivo mas não está dando certo.

No putty eu selecionei a impressora PDF e só.
No servidor eu faço lpansi <nome do arquivo texto>

Eu até recebo o arquivo, mas os utilitários que eu testei não funcionaram. O PDF não abre no primopdf, no cutepdf ele abre mas a página está em branco. O pdf24 é o que melhor desempenho apresenta, mas nem todas as páginas aparecem.

Testei o cutepdf, primopdf e pdf24

Se alguém usa esse método eu queria saber se ele pode ser usado com impressoras virtuais (pdf) e se tem alguma configuração a fazer no putty além de selecionar a impressora.

Se não for pedir demais alguem poderia colar o arquivo de configuração que usa no putty ?

Valeu pessoal.
Editado pela última vez por Pablo César em 28 Mai 2013 06:58, em um total de 1 vez.
Razão: O presente tópico foi movido da seção Harbour, uma vez que seu conteúdo não tem relação com os objetivos daquela seção, onde só podem constar dúvidas técnicas de programação diretamente relacionadas com o Harbour.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

lpansi

Mensagem por Pablo César »

Eu nunca usei lpansi, mas como faltou o código fui a procura dele e vi dois exemplos. Só que achei mais completo este:

Código: Selecionar todos

/********************************************************
 * lpansi.c                                             *
 * Original author: Gary Day, 11/30/93                  *
 * Current version: 2.1 by Noel Hunter, 10/20/94        *
 *                                                      *
 * Basic structure based on print -- format files for   *
 * printing from _Pratical_C_Programming by Steve       *
 * Oualline, O'Reilly & Associates                      *
 ********************************************************/
#include <stdio.h>
#include <stdlib.h>      /* ANSI Standard only */
#include <string.h>
#ifdef VMS
#include <unixio.h>
#include <unixlib.h>
#endif /* VMS */

int verbose = 0;         /* verbose mode (default = false) */
int formfeed = 1;	 /* form feed mode (default = true) */
char *program_name;      /* name of the program (for errors) */

/* Ansi C function prototypes */
void ansi_printer_on(void);
void ansi_printer_off(void);
int main(int argc, char *argv[]);

main(int argc, char *argv[])
{
    void do_file(char *); /* print a file */
    void usage(void);     /* tell user how to use the program */

    /* save the program name for future use */
    program_name = argv[0];

    /* 
     * loop for each option.  
     *   Stop if we run out of arguments
     *   or we get an argument without a dash.
     */
    while ((argc > 1) && (argv[1][0] == '-')) {
        /*
         * argv[1][1] is the actual option character.
         */
        switch (argv[1][1]) {
            /*
             * -v verbose 
             */
            case 'v':
                verbose = 1; 
                (void)printf("VERBOSE mode ON\n");
                break;
            case 'f':
                formfeed = 0;
                break;
            default:
                (void)fprintf(stderr,"Bad option %s\n", argv[1]);
                usage();
        }
        /*
         * move the argument list up one
         * move the count down one
         */
        argv++;
        argc--;
    }

    /*
     * At this point all the options have been processed.
     * Check to see if we have no files in the list
     * and if so, we need to process just standard in.
     */
    if (argc == 1) {
        do_file("stdin");
    } else {
        while (argc > 1) {
          do_file(argv[1]);
          argv++;
          argc--;
        }
    }
    return (0);
}
/********************************************************
 * do_file -- send a file to the printer                *
 *                                                      *
 * Parameter                                            *
 *      name -- name of the file to print               *
 ********************************************************/
void do_file(char *name)
{
  int  ch;    /* Where we store our characters */
  FILE *fp;   /* File pointer */

  if ( verbose == 1 ) (void)printf("Processing: %s\n", name);

  ansi_printer_on();

  if ( strcmp(name,"stdin") == 0 )
  {
    while ((ch=getc(stdin))!=EOF)
    {
     putc(ch,stdout);
    }
  }
  else        /* Reading from a file */
  {
    if ((fp=fopen(name, "r"))==NULL)
    {
    printf("Can't open %s\n",name);
    exit(1);
    }
    while ((ch=getc(fp))!=EOF)
    {
     putc(ch,stdout);
    }
    fclose(fp);
  }

  if ( formfeed == 1 )
  {
    printf("\n\x0C");  /* Do a form feed at the end of the document */
  }

  ansi_printer_off();
 
  if ( verbose == 1 ) (void)printf("Finished processing: %s\n", name);

}

/********************************************************
 * usage -- tell the user how to use this program and   *
 *              exit                                    *
 ********************************************************/
void usage(void)
{
    (void)fprintf(stderr,"Usage is %s [options] [file-list]\n", 
                                program_name);
    (void)fprintf(stderr,"Options\n");
    (void)fprintf(stderr,"  -f          form feed OFF\n");
    (void)fprintf(stderr,"  -v          verbose\n");
    exit (1);
}

/********************************************************
 * Send a printer on escape sequence                    *
 *******************************************************/
void ansi_printer_on(void)
{
  if ( verbose == 1 ) (void)printf("ANSI printer ON\n");
  printf("\x1B[5i");
}

/********************************************************
 * Send a printer off escape sequence                   *
 *******************************************************/
void ansi_printer_off(void)
{
  printf("\x1B[4i");
  if ( verbose == 1 ) (void)printf("ANSI printer OFF\n");
}
Não sei se ajuda, mas veja se é o mesmo e compile para testar.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

lpansi

Mensagem por Vlademiro »

Obrigado! Vou testar aqui.
Responder