Juntar e comprimir PDF no Linux pelo terminal
Para juntar e comprimir PDF no Linux, use qpdf e Ghostscript pelo terminal. Veja os comandos testados, a instalação no Ubuntu e como fazer lotes.
Para juntar PDF no Linux pelo terminal, instale o qpdf e rode qpdf --empty --pages a.pdf b.pdf -- saida.pdf: o comando copia as páginas na ordem informada, sem recomprimir o conteúdo. Para reduzir o tamanho, use o Ghostscript com o preset /ebook, que reamostra as imagens para 150 DPI e mantém o texto. Os comandos deste guia foram testados com qpdf 12.4.2 e Ghostscript 10.08.
Instalar as ferramentas no Ubuntu e no Debian
Três pacotes cobrem o caso: o qpdf para juntar e dividir, o Ghostscript para comprimir e o poppler-utils para contar páginas e ver o que pesa dentro do arquivo. No Ubuntu e no Debian, o comando é o mesmo:
sudo apt install qpdf ghostscript poppler-utilsEm outras distribuições, procure os pacotes com os mesmos nomes no gerenciador de pacotes. No Android, o Termux instala o qpdf e o Ghostscript da mesma forma, como em PDF no Termux. Depois confirme com qpdf --version e gs --version, e veja se o pdfinfo responde.
| Programa | Para que serve aqui | Exemplo |
|---|---|---|
| qpdf | Juntar, dividir e girar sem recomprimir | qpdf --empty --pages a.pdf b.pdf -- saida.pdf |
| pdfunite | Juntar em um comando curto | pdfunite a.pdf b.pdf saida.pdf |
| Ghostscript (gs) | Comprimir, reamostrando as imagens | gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook ... |
| pdfinfo | Contar páginas e ler o tamanho da página | pdfinfo entrada.pdf |
Juntar com qpdf ou pdfunite
O qpdf é a opção que mais controle dá. A forma --empty cria um arquivo novo e puxa as páginas de cada origem, na ordem em que aparecem. Para juntar três arquivos, basta listá-los:
qpdf --empty --pages 01.pdf 02.pdf 03.pdf -- juntado.pdfConfira o resultado com pdfinfo juntado.pdf e procure a linha Pages. O total precisa ser a soma das páginas de cada arquivo de origem. Se o número não bater, abra o arquivo que falhou com um leitor antes de tentar de novo, porque o problema costuma estar em um dos arquivos de origem. Para ver as páginas em miniatura e arrastá-las para a ordem certa antes de juntar, o programa gráfico é o PDF Arranger, em PDF Arranger no Ubuntu e Linux Mint.
O pdfunite faz o mesmo com menos digitação, e não aceita intervalos de páginas. Use-o quando só precisa colar arquivos inteiros, na ordem da linha de comando. Em ambos os casos, o arquivo final não traz os marcadores do documento original. Se o sumário clicável é importante, recrie-o depois, e o guia sobre links e sumário ao juntar mostra o que sobrevive à junção.
Dividir por intervalo
Para extrair páginas, repita o nome do arquivo de origem depois de --pages e informe a lista. A sintaxe aceita intervalos, páginas soltas e z como última página. Este comando gera um PDF com as páginas 1 a 40 do arquivo entrada.pdf:
qpdf entrada.pdf --pages entrada.pdf 1-40 -- parte1.pdfPara as páginas 41 até o fim, troque o intervalo por 41-z. Se a lista apontar para uma página que não existe, o qpdf para com erro e não grava o arquivo, o que evita um PDF pela metade. Depois de dividir, confira cada parte com pdfinfo e some as páginas: quando os intervalos cobrem o arquivo inteiro, o total das partes é igual ao do original. A ferramenta de dividir PDF do AjustaPDF aceita a mesma sintaxe de intervalos, e o guia sobre dividir por capítulo mostra como escolher os intervalos de um documento longo.
Comprimir com Ghostscript
O Ghostscript é o único dos três que reduz a resolução das imagens. O comando abaixo gera saida.pdf no preset /ebook, de 150 DPI:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -dSAFER -sOutputFile=saida.pdf entrada.pdfTroque /ebook por /prepress para manter mais qualidade nas imagens, ou por /screen para o menor arquivo. Os três presets e o que cada um mexe estão no guia sobre comprimir PDF com Ghostscript e qpdf, junto com o passo a passo para arquivos com senha. Compare o resultado com ls -lh entrada.pdf saida.pdf antes de usar o arquivo. O mesmo comando roda no Windows com o executável gswin64c, como em Ghostscript no Windows.
Descobrir o que pesa antes de comprimir
Comprimir sem olhar a causa desperdiça tempo. O pdfimages -list mostra cada imagem do arquivo, com a resolução em pixels por polegada (x-ppi e y-ppi) e o tamanho. Se uma ou duas imagens explicam quase todo o peso, o preset vai atacar exatamente elas. Quando o arquivo é só texto e pesa muito, o problema costuma estar nas fontes, e o Ghostscript ajuda pouco nesse caso.
Processar uma pasta inteira
Para um lote, um laço de shell resolve. O exemplo grava cada resultado em uma pasta min, e não ao lado dos originais, para não reprocessar os arquivos já comprimidos numa segunda rodada:
mkdir -p min && for f in *.pdf; do gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -dSAFER -sOutputFile="min/$f" "$f"; doneO laço não confere se o resultado ficou menor. Depois da rodada, rode ls -l *.pdf min/ e descarte os arquivos que cresceram. Em pastas com nomes que têm espaço, troque o laço por find com -print0 para não quebrar a lista de arquivos.
O que o Linux não faz sozinho
Os três programas não reconhecem texto em imagem, então um escaneado continua sem busca depois de juntado ou comprimido. No navegador, o OCR do AjustaPDF faz esse reconhecimento. Os três programas também não dão uma saída amigável para quem não usa terminal. Outro limite aparece em formulários: ao comprimir com Ghostscript, os campos preenchidos viram texto e deixam de ser editáveis. Junte antes e comprima só depois de preencher. Se o arquivo tem senha para abrir, remova-a antes, porque o Ghostscript não abre PDF criptografado.
Quando o navegador é suficiente
Se você precisa juntar ou comprimir uma vez, o terminal pode ser mais trabalho do que o problema. A ferramenta de juntar PDF do AjustaPDF roda as mesmas bases, qpdf para juntar e Ghostscript para comprimir, no servidor, e apaga o arquivo depois da resposta. Para documentos que não podem sair da sua máquina, o terminal continua sendo a escolha certa. Para montar uma imagem em PDF no terminal, o guia sobre ImageMagick mostra o caminho.
Para outros sistemas, veja juntar PDF no Windows e comprimir PDF no Windows; para a ferramenta, o que é o Ghostscript.
Perguntas frequentes
Qual comando junta dois PDFs no Linux?
Use qpdf --empty --pages a.pdf b.pdf -- saida.pdf, que copia as páginas na ordem informada sem recomprimir o conteúdo. Se o pdfunite estiver instalado, pdfunite a.pdf b.pdf saida.pdf faz o mesmo. Os dois foram testados com qpdf 12.4.2 e poppler, e o resultado tinha o número de páginas somado.
Como extrair só algumas páginas de um PDF pelo terminal?
Com qpdf entrada.pdf --pages entrada.pdf 1-3,7,10-z -- saida.pdf. O z representa a última página, e a lista pode misturar intervalos e páginas soltas. O resultado é um único arquivo com essas páginas, e não um arquivo por intervalo.
Por que o gs no terminal às vezes devolve um PDF maior que o original?
Pode, sobretudo quando o arquivo já está otimizado e o preset tenta reamostrar imagens pequenas. Compare os tamanhos com ls -lh antes de descartar o original. Se o resultado for maior, mantenha o arquivo de origem e não use a versão comprimida.
O qpdf reduz o tamanho de um PDF escaneado?
Pouco ou nada. O qpdf reorganiza a estrutura e recompacta os fluxos sem perda, mas não reduz a resolução das imagens. Para fotos de páginas escaneadas, o Ghostscript é a ferramenta que mexe no peso de verdade.
Dá para fazer tudo isso no Linux sem instalar nada?
Não há um passo sem instalação, porque qpdf, Ghostscript e poppler são programas de terminal. No Ubuntu e no Debian, um único apt install traz os três. Se não quiser instalar, o navegador faz as mesmas tarefas em uma página, com as limitações de cada site.