Manipulando arquivos PDF pela linha de comando

Publicado por Luís Fernando C. Cavalheiro em 24/09/2012

[ Hits: 11.944 ]

Blog: https://github.com/lcavalheiro/

 


Manipulando arquivos PDF pela linha de comando



Nós, do mundo GNU/Linux, pegamos muitas informações pela Internet e em vários formatos de arquivo. Um dos formatos mais comuns é o PDF, da Adobe.

Só que, às vezes, queremos só três páginas de um arquivo com trezentas páginas, ou não achamos cômodo ter quatrocentos arquivos de uma página cada, sobre o mesmo assunto. E por vezes, você vê uma imagem em um arquivo PDF e quer extraí-la para usar na sua área de trabalho...

Mas não se aflijam, amigos! Para isso existe o terminal!

Obs.: Para fazer uso dos comandos presentes nesta dica, deve-se ter instalado o pacote poppler-utils. Este pacote disponibiliza os utilitários que serão utilizados, e já vem instalado por padrão no Ubuntu e Slackware.

Extraindo páginas de um arquivo PDF

Se você precisa extrair páginas de um arquivo PDF, o comando que você precisa é o pdfseparate. Ele lê o arquivo PDF e cria um arquivo por página extraída desta forma, sem alterar o arquivo original.

A invocação dele, deve ser feita assim:

pdfseparate [opções] arquivooriginal.pdf [padraoarquivodestino.pdf]

Em 'opções', você precisa informar os parâmetros -f [nn] e -l [mm], onde nn é a primeira página a ser extraída, e mm é a última.

Em algum lugar do "padraoarquivodestino.pdf", precisa haver um "%d", indicando onde o número da página extraída deve ser inserida no nome dos arquivos.

Por exemplo, se eu fizer:

pdfseparate -f 2 -l 4 liber_al_legis.pdf liber%d.pdf

O comando vai criar os arquivos "liber2.pdf", "liber3.pdf" e "liber4.pdf", sem alterar o arquivo liber_al_legis original.

Para extrair páginas salteadas, você precisará criar um laço for para a tarefa. Vamos supor, que o arquivo "moonchild.pdf" tenha 50 páginas, mas só quero as páginas 3, 7, 11 e 33.

Eu faria:

for i in 3 7 11 33; do pdfseparate -f $i -l $i moonchild.pdf pagina%d.pdf; done

Para juntar estas páginas em um único arquivo, verifique o próximo subtítulo.

Concatenando arquivos .pdf

Se você quiser concatenar (isto é, reunir) arquivos PDF em um único, use o comando pdfunite.

Ele lê uma série de arquivos PDF listados na invocação do comando, e cria um arquivo nomeado na invocação do comando, sem alterar nenhum dos arquivos fontes. A invocação dele deve ser feita assim:

pdfunite arquivofonte1.pdf arquivofonte2.pdf ... arquivofonten.pdf arquivodestino.pdf

Por exemplo, se eu quisesse reunir em um único arquivo aquelas páginas do arquivo "moonchild.pdf" que eu extraí no exemplo anterior, eu faria:

pdfunite pagina3.pdf pagina7.pdf pagina11.pdf pagina33.pdf excerto.pdf

O arquivo "excerto.pdf" será criado com as páginas 3, 7, 11 e 33, que eu separei anteriormente.

Extraindo imagens de um arquivo PDF

Vamos supor que, por alguma razão, você tem um arquivo PDF chamado "LotR:fellowship.pdf", cujo conteúdo deve ser bem óbvio para os senhores, e vamos supor que você gostou tanto da imagem do Portão de Moria, que quer extraí-la e colocar na sua área de trabalho.

Simples: use o pdfimages!

pdfimages -f [nn] -l [mm] -j arquivofonte.pdf nomebase

Os parâmetros f e l funcionam do mesmo modo que funcionam para o comando pdfseparate. A opção -j diz que as imagens devem ser extraídas no formato ".jpg" (o padrão do comando é o ".ppm").

O parâmetro "nomebase", indica qual é o prefixo de nome para os arquivos contendo as imagens encontradas. Cada imagem vai parar no arquivo "nomebase-nnn.xxx", onde nnn é o número sequencial da imagem, e xxx é a extensão (no nosso caso: .jpg).

Convertendo arquivos PDF em imagens

Não me basta extrair uma imagem de um arquivo PDF, agora interessa-me converter cada página do arquivo para um arquivo de imagem. Como fazer?

Com o pdftoppm! O comando fica assim:

pdftoppm -f [nn] -l [mm] -r [rr] arquivofonte.pdf nomebase

As opções -f e -l são nossas velhas conhecidas. A opção -r diz que cada imagem deve ter sua resolução alterada para: rr DPI.

O parâmetro "nomebase" é o prefixo do nome dos arquivos gerados, um por página do PDF original. Cada arquivo de imagem vai ter como nome "nomebase-nnnn.ppm", onde "nnnn", é o número sequencial da página.

Este comando gera imagens em ".ppm". Para gerar imagens em ".jpg" ou ".png", passe as opções -jpg, ou -png para o comando.

Convertendo arquivos PDF para HTML

Mais uma fascinante demonstração do potencial do terminal.

O comando para isso é (surpreendentemente ;-) pdftohtml.

Este comando tem tantas opções interessantes (ao contrário dos demais), que eu realmente recomendo a leitura da manpage dele, que é muito bem escrita.

E é isso, pessoal.

O subgênio aqui, vai se despedindo com saudações dobbsianas para todos vocês!

Outras dicas deste autor

Utilizando as configurações do GNOME em outros gerenciadores de janelas

Corrigindo instabilidade de conexão das placas de rede wireless Realtek RTL8188xx/8192xx/8723xx/8821xx

FFmpeg: criando dois ou mais arquivos de saída simultaneamente

Configurando o controle do Xbox no Fedora 21

Oracle Java em Debians-like (sem recorrer a PPAs)

Leitura recomendada

Obtendo a soma do tamanho os arquivos listados com "du"

Usando o comando fc-match para o LibreOffice

Desmascarando pacotes em Sabayon e Gentoo

Remoção de pacotes RPM

Recuperando o LILO em 3 passos no Slackware

  

Comentários
[1] Comentário enviado por fabio em 30/11/2012 - 00:41h

pdfunite acabou de me quebrar um baita galho!

Obrigado pela contribuição.

[2] Comentário enviado por lcavalheiro em 11/12/2012 - 18:54h

Disponha

[3] Comentário enviado por tsanches em 09/06/2015 - 16:56h


Luiz perfeita publicação, obrigado brother



Contribuir com comentário