Manipulando arquivos PDF pela linha de comando

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

[ Hits: 14.416 ]

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

Usando o Spotify como despertador no openSUSE Tumbleweed XFCE via spotify-rise

Descompactando arquivos ZIP divididos em partes

Armazene seus arquivos na nuvem com o pCloud - com direito a 50GB de espaço vitalício!

NetworkManager: corrigindo erro "DHCP failed to start"

VMVolMan - Dockapp para gerenciar mídias removíveis no Window Maker

Leitura recomendada

Compactando e dividindo um arquivo no disquete

Usando o comando SCP!

Baixando código-fonte de um pacote com APT

Unrpm - Descompactando arquivos RPM

Removendo comentários (#) dos arquivos de configuração

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts