Extrai a primeira página de vários pdfs

16

Tenho cerca de 500 PDFs para extrair a primeira página de. Eles então precisam passar por algum processo demorado de conversão, então esperavam tentar economizar algum tempo com um processo em lote para extrair apenas a primeira página dos 500 pdfs e colocá-la em um novo pdf. Já teve um puxão em torno do Acrobat, mas não pode encontrar nenhum método real de fazer isso para vários arquivos. Alguém conhece algum outro programa ou método que possa ser alcançado? Fonte livre e aberta são obviamente mais favoráveis:)

EDIT: Já teve algum sucesso usando o GhostScript para extrair apenas uma página. Estou agora olhando como agrupar isso e pegar a lista de arquivos e usá-los.

    
por Tim Alexander 05.11.2010 / 13:19

5 respostas

24

Usando o pdftk ...

No mac e no linux a partir da linha de comando.

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

No Windows, você pode criar um arquivo em lotes. Abra o Bloco de Notas, cole isso dentro:

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

Pode ser necessário substituir "pdftk.exe" pelo caminho completo para o pdftk, por exemplo, "C:\Program Files\pdftk\pdftk.exe ou o que quer que seja. (Eu não uso o Windows, então não sei.)

Salve-o com uma extensão terminada em .bat, solte-o na pasta com os PDFs e clique duas vezes.

Você pode fazer a mesma coisa com o Ghostscript, sim.

Vamos ver. Para Mac e Linux (todas uma linha):

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

Não sei exatamente qual seria o comando correspondente para um arquivo em lotes do Windows. Meu melhor palpite (- eu não tenho janelas, então não posso testar -):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

Verifique o caminho para o seu script fantasma está certo, e bem, eu não testei isso desde que eu não uso o Windows.

EDIT: OK, eu acabei de perceber que você provavelmente não quer 500 PDFs de 1 página, mas um único PDF que combina todos eles. Basta executar o acima, e isso vai deixar você com 500 PDFs de 1 página. Para combiná-los usando o pdftk ... no mac e no linux:

pdftk *-page1.pdf cat output combined.pdf

Eu acho que é provavelmente o mesmo no Windows, exceto talvez precisando do caminho completo para o pdftk, como acima. Você poderia simplesmente adicionar essa linha após a linha acima em seu arquivo de lote.

Com o Ghostscript ... no mac e no linux:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

E é provavelmente o mesmo no Windows, exceto substituir "gs" no início pelo caminho completo para gswin32c.exe, como acima.

Pode haver uma maneira do ghostscript fazer as duas coisas em uma etapa, mas estou com preguiça de descobrir isso agora.

Se a ordem para combiná-los for importante, precisaremos de mais informações.

    
por 05.11.2010 / 16:36
2

Apenas tive que fazer isso hoje no Linux. Deve funcionar para o Mac também. Execute o seguinte comando do seu terminal.

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lpr envia trabalhos para a impressora.

Observe o uso do caractere * no comando. Isso executaria o comando para todos os seus arquivos PDF no diretório.

    
por 12.02.2016 / 04:23
1

Acho que você poderia usar uma impressora virtual em pdf, como o pdf-forge.

Você apenas "imprime" a primeira página, eu estou em um mac agora e não posso tentar, mas tenho certeza que você pode fazer mais de uma vez.

Boa sorte !!

Trufa

    
por 05.11.2010 / 13:24
0

como para o comando de arquivo em lote do windows (.bat) (%% é para variáveis em um arquivo bat)

extração de primeira página do pdf como jpg com resolução / tamanho reduzido

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(no post acima, sOutputFile foi escrito errado ... e com o caminho atual da instalação padrão do gs x86)

(veja também Usando o Ghostscript para converter PDF de várias páginas em um único JPG? )

    
por 28.05.2014 / 09:07
0

No Linux

Eu escrevi esta linha de comando

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

Mas ele faz o trabalho, eu testei, ele também funciona com tantos níveis de pastas que você tem. Apenas certifique-se de executá-lo na raiz da estrutura de pastas. Cada pasta terá para cada arquivo pdf um final adicional em pdf com .firstpage.pdf

Você precisa de pdftk e tree para isso e no Ubuntu Linux você pode instalá-lo com apt:

sudo apt install pdftk tree
    
por 08.02.2018 / 10:26