pdfunite a.pdf b.pdf out.pdf junta documentos e pdfseparate in.pdf page-%d.pdf desmonta um. Os dois vêm do poppler-utils e trabalham rápido e sem perdas. O que eles não fazem — extrair um intervalo de páginas como um documento só, ou comprimir — é serviço do ghostscript, e essa divisão de trabalho é o artigo inteiro.
1. Quantas páginas tem
$ clai quantas páginas tem o merged.pdf→ pdfinfo merged.pdf | grep '^Pages'Pages: 4
O pdfinfo imprime umas duas dúzias de linhas de metadados e normalmente você quer uma. Ele também serve de conferência rápida depois de cada operação abaixo.
2. Juntar vários arquivos
$ clai junte invoice.pdf e contract.pdf em um documento só→ pdfunite invoice.pdf contract.pdf merged.pdf
O último argumento é sempre o resultado; tudo antes dele são fontes, na ordem em que vão aparecer. O comando não imprime nada — confira com pdfinfo.
3. Quebrar em páginas soltas
$ clai divida o merged.pdf em um arquivo por página→ pdfseparate merged.pdf page-%d.pdfpage-1.pdfpage-2.pdfpage-3.pdfpage-4.pdf
O %d é obrigatório — é ali que entra o número da página. A listagem acima veio do ls -1; o pdfseparate em si fica calado.
4. Extrair um intervalo de páginas
$ clai tire as páginas 2 até 3→ pdfseparate -f 2 -l 3 merged.pdf slice-%d.pdfslice-2.pdfslice-3.pdf
-f é a primeira página e -l a última. Repare no que você recebeu: dois arquivos, não um documento de duas páginas — e a numeração preserva os números originais.
5. Um intervalo como documento único
$ clai extraia as páginas 2 a 3 em um único documento→ gs -q -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dFirstPage=2 -dLastPage=3 -sOutputFile=pages-2-3.pdf merged.pdf
O poppler não tem comando para isso, então o ghostscript assume. Verificado: pdfinfo pages-2-3.pdf informa Pages: 2. Sem o gs, o caminho é pdfseparate seguido de pdfunite slice-2.pdf slice-3.pdf range.pdf, que dá as mesmas duas páginas.
6. Deixar o arquivo menor
$ clai comprima o pdf para caber num anexo de e-mail→ gs -q -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -sOutputFile=small.pdf merged.pdf
Verificado no arquivo de teste: 84991 bytes antes, 31876 depois — quase um terço. /ebook é o perfil do meio; /screen aperta mais e aparece nas imagens, /prepress preserva a qualidade. O texto não sofre em nenhum caso: o que encolhe são as imagens rasterizadas de dentro.
Gotchas
- O
pdfunitesobrescreve o último argumento. Aquela posição é sempre a saída.pdfunite part1.pdf part2.pdfsem um terceiro nome destrói opart2.pdf— aqui não existe a convenção de "o último arquivo também é fonte". - O
pdfseparatenunca junta. Mesmo com-fe-lvocê fica com um monte de arquivos de uma página. Juntar de volta é trabalho dopdfuniteou do ghostscript. - Nenhum dos dois abre um PDF criptografado. Tire a senha primeiro (
qpdf --decryptonde existir); caso contrário os dois simplesmente se recusam a ler o arquivo.
Related questions
Como giro páginas? O ghostscript consegue reemitir o arquivo com -dAutoRotatePages=/None, mas girar uma página específica é bem mais simples no qpdf.
Como tiro o texto? pdftotext file.pdf - imprime o texto no terminal. Para digitalizações sem camada de texto, você precisa de OCR.
Como transformo as páginas em imagens? pdftoppm -png -r 150 file.pdf page grava page-1.png, page-2.png e assim por diante a 150 dpi.
See also
- Redimensionar imagens em lote
- Dividir um arquivo grande em partes e juntar de volta
- Converter e comprimir vídeo com ffmpeg
O CliAI sabe qual das duas cadeias de ferramentas faz o serviço que você descreveu, e mostra o comando antes de rodar. Instale em uma linha.