+ Responder ao Tópico



  1. #1
    chester
    Visitante

    Padrão descobrir numero de paginas em um arquivo q sera impresso

    olá, alguém poderia me ajudar a descobrir como faço pra saber quantas paginas vai ter um arquivo que vai ser impresso?
    obrigado

  2. #2

    Padrão descobrir numero de paginas em um arquivo q sera impresso

    olá chester, tudo bom! vc esta utilizando o cups, vou dar uma olhada ver se acho alguma coisa pra te ajudar. Eu apenas pediria para você não duplicar seus topicos, pois vc já havia postado esta menssagem. Aguarde que se alguem souber ira te ajudar. Oks!

  3. #3

    Padrão descobrir numero de paginas em um arquivo q sera impresso

    A maioria dos editores de textos decentes, vem especificando no rodapé da janela a quantidade de páginas que o documento possui exemplo deles são o Kword e o Writer (para Linux) se vc estiver usando um editor de texto que não possui essa função, o melhor é copiar o conteudo, colar num editor desse que numeram no rodapé.

    Consequentemente o numero de páginas que o documento possui, é o mesmo que será impresso.

  4. #4
    chester
    Visitante

    Padrão descobrir numero de paginas em um arquivo q sera impresso

    é realmente o cups q estou usando, se puder me dar uma ajuda agradeço

  5. #5
    chester
    Visitante

    Padrão descobrir numero de paginas em um arquivo q sera impresso

    se a impressora for postscript pode ser utilizada a seguinte linha para obter a quantidade de páginas do arquivo na fila de impressão:
    cat arq_fila_impressao | grep '%%PAGES:' | tail -1 | cut -d' ' -f2

  6. #6
    chester
    Visitante

    Padrão descobrir numero de paginas em um arquivo q sera impresso

    se a impressora for pcl vc pode usar o programa abaixo pra fazer a contagem de paginas:

    #define Version 20040107

    #include <stdio.h>
    #include <libgen.h>


    // Mostra o help da linha de comandos
    void ShowUsage() {
    printf("pclcount (v.%d): Conta o numero de paginas em um arquivo
    PCL.\n" \
    "Copyright (c) 2003, by Eduardo Gielamo Oliveira & Rodolfo
    Broco Manin\n" \
    "Este programa e' distribuido nos termos da Licenca Publica
    GPL.\n" \
    "Para maiores informacoes, consulte
    http://www.gnu.org/copyleft/gpl.html\n\n" \
    "Sintaxe: pclcount <nome_do_arquivo> [-v][-h]\n" \
    " -v -- Exibe informacoes detalhadas durante a
    execucao\n" \
    " -h -- Informa os parametros validos para linha de
    comandos\n", Version);
    }

    int main (int argc, char **argv) {
    FILE *InputFile;
    char ch, EndTag, tag[2], *InputFileName;
    int n, BlockSize, Pages, Copies, Quiet;
    unsigned long FileSize, FilePos;

    BlockSize = Pages = FileSize = FilePos = 0;
    Copies = Quiet = 1;
    InputFileName = NULL;

    // Intepreta os parametros da linha de comandos
    for(n = 1; n <= argc - 1; n++) {
    if(! memcmp(argv[n], "-h", 2)) {
    ShowUsage();
    exit(0);
    } else if(! memcmp(argv[n], "-v", 2))
    Quiet = 0;
    else if(argv[n][0] == '-') {
    fprintf(stderr, "-- Parametro incorreto: '%s'.\n",
    argv[n]);
    exit(1);
    } else
    InputFileName = argv[n];
    }

    if(InputFileName == NULL) {
    fprintf(stderr, "-- Nao foi informado um nome de arquivo.\n" \
    " Use 'pclcount -h' para obter ajuda.\n");
    exit(1);
    }

    // Tenta abrir o arquivo de entrada
    if(! (InputFile = fopen(InputFileName, "r"))) {
    fprintf(stderr, "--Erro abrindo arquivo: %s\n", argv[1]);
    exit(-1);
    };

    // Obtem o tamanho do arquivo, para exibir as estatisticas caso
    especificado '-v' na linha de comandos
    if(! Quiet) {
    fseek(InputFile, 0, SEEK_END);
    FileSize = ftell(InputFile);
    fseek(InputFile, 0, SEEK_SET);
    }

    while(fread(&ch, 1, 1, InputFile)) {
    switch(ch) {
    case 12:
    // Encontrado FormFeed: incrementa o contador de paginas
    Pages ++;
    break;
    case 27:
    // Encontrado <ESC>
    fread(tag, 2, 1, InputFile);
    if(! (memcmp(tag, "*b", 2) && memcmp(tag, "(s", 2) &&
    memcmp(tag, ")s", 2) && memcmp(tag, "&p", 2))) {
    /*
    Detecta os operadores:
    <ESC>*b###W -> Inicio de Bloco Binario
    <ESC>(s###W -> Inicio de Bloco de Descricao de
    Caracteres
    <ESC>)s###W -> Inicio de Bloco de Descricao de Fontes
    <ESC>&p###X -> Inicio de Bloco de Caracteres
    nao-imprimiveis
    Nesses operadores, '###' eh o tamanho do bloco
    respectivo.
    */
    // Define o caracter terminador do bloco
    EndTag = memcmp(tag, "&p", 2) ? 'W' : 'X';
    do {
    fread(&ch, 1, 1, InputFile);
    if((ch >= '0') && (ch <= '9')) {
    // Foi lido um numero: compoe o tamanho do
    bloco
    BlockSize = 10 * BlockSize + ch - '0';
    }
    } while ((ch >= '0') && (ch <='9'));
    if(ch == EndTag) {
    // O operador terminou com 'W': eh um dos
    operadores esperados
    // Efetua um 'seek' para pular o bloco
    fseek(InputFile, BlockSize, SEEK_CUR);
    FilePos = ftell(InputFile);
    // Atualizando a mensagem de status aqui (inves de
    faze-lo o tempo todo) nao deixa o processamento tao lento
    if(! Quiet) printf("Processando... %ld de %ld
    bytes (%ld%%)\r", FilePos, FileSize, (FilePos * 100) / FileSize);
    }
    // Nao era um dos operadores esperados: reinicializa
    BlockSize
    BlockSize = 0;
    } else if(! (memcmp(tag, "&l", 2))) {
    // O operador <ESC>&l###X informa o numero de copias
    ('###') solicitadas
    n = 0;
    for(ch = '0'; (ch >= '0') && (ch <= '9'); fread(&ch,
    1, 1, InputFile)) {
    n = 10 * n + ch - '0';
    }
    if(ch == 'X') {
    // O operador terminou com 'X' (como esperado).
    Obtem o numero de copias
    Copies = n;
    }
    }
    break;
    }
    }
    fclose(InputFile);

    if(Quiet)
    // Caso nao tenha sido especificado '-v' na linha de comandos,
    imprime apenas o numero total de folhas do trabalho
    printf("%d\n", Pages * Copies);
    else
    printf("Processando...
    Conluido. \n" \
    "Numero de Paginas.....: %d\n" \
    "Numero de Copias......: %d\n" \
    "Total de Paginas......: %d\n", Pages, Copies, Pages *
    Copies);

    return(0);
    }