Ajuda do noob do GhostScript - Quebrando um arquivo PDF de várias páginas em muitos arquivos PS ou EPS de página única

3

Estou tentando fazer o seguinte com ghostscript:

Transforme um arquivo PDF de várias páginas (cerca de 3.000 páginas, arquivo de 200 MB) em:

Um arquivo por página do PDF e converta cada (página / arquivo) em EPS ou PS (post script (de preferência)).

Exemplo:

hello.pdf (10 pages)

produziria:

hello1.ps (page 1 out of 10)
hello2.ps
hello3.ps
...
hello10.ps

Como posso fazer isso? Eu tenho tentado por 4 dias, e não consigo descobrir.

Eu tenho um script que tentei (não funciona):

Note: Windows(7) user here.

gs -sDEVICE=epswrite -o documentname-%.eps documentname.pdf

Eu também não sei como navegar para o diretório onde meu arquivo reside (não consigo descobrir isso também). Se você puder, por favor me mostre como.

Um grande obrigado.

    
por godzilla_g 26.12.2010 / 19:23

2 respostas

5

Primeiro, eu uso o Linux, não o Windows, então não posso testar isso, mas acho que algo assim está correto. (Estou quase tentado a dizer-lhe para instalar o Linux dentro de uma máquina virtual para isso, já que coisas como essa são muito mais fáceis com um sistema operacional adulto, mas de qualquer forma, aqui vai minha melhor aposta para usar o Windows.) p>

Primeiro, abra um prompt de comando / ação.

Para navegar até a pasta onde estão seus arquivos, use o comando CD seguido do caminho completo para seus arquivos entre aspas. Por exemplo, se eles estiverem em "C: \ Usuários \ Somebody \ Documents and Settings \ Meus Documentos \ PDFs \", digite:

cd "C:\Users\Somebody\Documents and Settings\My Documents\PDFs\"

Acho que uma alternativa seria simplesmente criar um arquivo em lote dentro do mesmo diretório do PDF e executar o arquivo em lote a partir dele.

OK, agora eu acho que você terá que usar o caminho completo para o executável Ghostscript, que você terá que encontrar por si mesmo. Eu estou indo supor que é "C: \ Arquivos de Programas (x86) \ gs \ gs9.00 \ bin \ gswin32c.exe", mas você precisa verificar isso no seu próprio computador. Se você estiver usando uma versão diferente do ghostscript ou uma versão de 32 bits do Windows 7, ela estará em outro lugar. Certifique-se também de usar o gswin32c.exe e não o gswin32.exe, que é diferente.

Agora, descubra exatamente quantas páginas estão neste PDF. Eu saberia como fazer isso com um comando no Linux, mas não faço ideia do Windows. Eu vou supor que é 3002.

Agora digite este comando no prompt de comando (toda a linha):

FOR \L %G IN (1,1,3002) DO "C:\Program Files (x86)\gs\gs9.00\bin\gswin32c.exe" -dBATCH -dSAFER -dNOPAUSE -dFirstPage=%G -dLastPage=%G -sDEVICE=pswrite -o hello%G.ps hello.pdf

Esse é o meu melhor palpite. Mas espero que alguém que realmente usa o Windows possa confirmar que isso funciona.

Para epsfiles, altere -sDEVICE#pswrite para -sDEVICE=epswrite e altere hello%G.ps para hello%G.eps .

Se você estiver usando um arquivo de lote, use %% G em vez de% G em todos os lugares, altere os = para #s.

Se "hello.pdf" for alterado para algo com espaços, use aspas, "hello world.pdf". O mesmo que "olá% gps".

No GNU / Linux (ou Mac OS X), o comando correspondente seria:

for G in {1..3002} ; do gs -dSAFER -dBATCH -dNOPAUSE -dFirstPage=$G -dLastPage=$G -sDEVICE=pswrite -o "hello$G.ps" "hello.pdf" ; done

para que ele autocalcule o número de páginas para fazer, se você tiver seq e os utilitários poppler instalados (que vêm por padrão no Ubuntu, eu acredito), você poderia usar:

for G in $(seq 1 $(pdfinfo academicregs.pdf | sed -n 's/Pages:[^0-9]*\([0-9]*\).*//p')) ; do gs -dSAFER -dBATCH -dNOPAUSE -dFirstPage=$G -dLastPage=$G -sDEVICE=pswrite -o "hello$G.ps" "hello.pdf" ; done

Aqueles que testei e funcionam.

    
por 26.12.2010 / 21:32
5
O comando

frabjous 'funciona, mas torna as coisas mais complicadas do que precisam para uma tarefa simples como essa.

Ele executa um comando separado do Ghostscript para cada página do PDF uma vez, selecionando apenas a página desejada do PDF através dos parâmetros -dFirstPage=... -dLastPage=... . (Sua versão do Windows tem um pequeno erro de digitação também: deve ser for /L %G in... - em vez de for \L %G in... )

Isso também é desnecessariamente lento, porque ele executa comandos 3002 para um PDF de 3002 páginas.

Você pode conseguir a mesma coisa sem um loop de 3002 passagens em um único passo de comando do Ghostscript. No Windows:

 gswin32c.exe ^
   -o hello%04d.eps ^
   -sDEVICE=epswrite ^
    hello.pdf

No Linux ou no Mac OS X:

 gs \
   -o hello%04d.eps \
   -sDEVICE=epswrite \
    hello.pdf

A parte %04d no nome da saída criará numeração de 4 dígitos (página) para os arquivos EPS de saída, preenchendo os dígitos não utilizados com zeros à esquerda (que não é o exemplo de saída desejado).

    
por 09.01.2011 / 17:04