CLI AI

Juntar e dividir PDFs pela linha de comando

2026-08-13

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
$ 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
$ 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
$ 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
$ 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
$ 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
$ 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 pdfunite sobrescreve o último argumento. Aquela posição é sempre a saída. pdfunite part1.pdf part2.pdf sem um terceiro nome destrói o part2.pdf — aqui não existe a convenção de "o último arquivo também é fonte".
  • O pdfseparate nunca junta. Mesmo com -f e -l você fica com um monte de arquivos de uma página. Juntar de volta é trabalho do pdfunite ou do ghostscript.
  • Nenhum dos dois abre um PDF criptografado. Tire a senha primeiro (qpdf --decrypt onde 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

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.