Ir para o conteúdo
Atualizado em 5 min de leitura

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-utils

Em 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.

ProgramaPara que serve aquiExemplo
qpdfJuntar, dividir e girar sem recomprimirqpdf --empty --pages a.pdf b.pdf -- saida.pdf
pdfuniteJuntar em um comando curtopdfunite a.pdf b.pdf saida.pdf
Ghostscript (gs)Comprimir, reamostrando as imagensgs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook ...
pdfinfoContar páginas e ler o tamanho da páginapdfinfo 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.pdf

Confira 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.pdf

Para 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.pdf

Troque /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"; done

O 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.