Eu não conheço o idioma do postscript.
Eu tenho um sistema de emulação de impressão duplex escrito em bash. Imprime as páginas ímpares primeiro e depois as páginas pares. Ele precisa saber se há uma contagem de páginas ímpares para que possa ejetar a última página ímpar que não tenha um lado par correspondente. Ele também usa contagens de páginas para fins de relatório.
Eu não sabia como fazer isso corretamente, então eu escrevi o código que olha para o final e, se necessário, o início do arquivo postscript procurando por "%% Pages:" que é seguido por uma contagem de páginas. Isso funciona em quase tudo, exceto arquivos impressos pelo navegador Opera.
Alguém pode sugerir outra maneira de obter essa informação?
Os arquivos Postscript tendem a ser bastante grandes, com muito conteúdo não legível para humanos, então eu ainda não passei muito tempo derramando sobre os que saem do Opera.
TIA
O código atual está em:
http://sourceforge.net/projects/duplexpr/
function ps_page_ct
fonte
grep
-paraHiResBoundingBox
: isso não vai funcionar. Essa palavra não precisa ser usada em arquivos de entrada - sua aparência no fluxo de saída é causada pelo Ghostscript interpretando todas as entradas e destilando esse fragmento de informações para você.Infelizmente, não há uma maneira simples de encontrar páginas em um arquivo Postscript bruto. É por isso que
%%Pages
A convenção foi criada (Convenções de estruturação de documentos da Adobe).O comando para a emissão de uma página é
showpage
. Em casos simples, você só precisa contá-los.Mas este comando pode ser embutido no corpo de uma função e então você precisa de um analisador Postscript.
fonte
Eu encontrei este pequeno trecho em algum lugar, ele irá processar o documento muito rápido e imprimir a contagem de páginas. Isso pode ajudar se o exiftool não imprimir essas informações de metadados porque o documento não foi gerado corretamente:
fonte
|grep ....
? Qual é a saída? Eu o uso como fallback quando os dados exif não contêm 'Page Count'. Existe um link para os documentos que você está usando? Qual versão do ghostscript você está usando? Em qual sistema operacional?