Comprimir PDF com Ghostscript e qpdf no terminal
Comprima PDF com Ghostscript e qpdf na linha de comando: comandos prontos, presets /prepress, /ebook e /screen, remoção de senha antes e quando o qpdf não reduz imagens.
Para comprimir um PDF pelo terminal, use o Ghostscript com -dPDFSETTINGS=/ebook: ele reamostra as imagens para uma resolução menor e recompacta o arquivo, que é onde está quase todo o peso. O qpdf não reduz imagens; ele só reempacota o arquivo sem perda, o que serve para limpar a estrutura. Os níveis do AjustaPDF usam os mesmos presets do Ghostscript: leve é /prepress, média é /ebook e forte é /screen.
Dois programas, duas coisas diferentes
Os dois são ferramentas de linha de comando gratuitas e abertas, e muita gente os usa juntos sem saber o que cada um faz. A diferença está em o que é alterado dentro do arquivo:
| Ferramenta | O que faz | Reduz imagens? | Perde qualidade? |
|---|---|---|---|
| qpdf | Reorganiza objetos, recompacta fluxos e remove redundância | Não | Não |
| Ghostscript (pdfwrite) | Reescreve o PDF e reamostra as imagens conforme o preset | Sim | Sim, nas imagens |
| qpdf depois do Ghostscript | Limpa a estrutura do arquivo já reduzido | Não (já foi feito pelo Ghostscript) | Não |
Se o PDF é um relatório de texto, o qpdf sozinho pode bastar. Se é um escaneado, o Ghostscript é indispensável, porque só ele mexe na resolução das imagens.
Instalar as duas ferramentas
No macOS, com o Homebrew, um único comando instala as duas. No Debian e no Ubuntu, use o apt. No Windows, os instaladores oficiais dos dois projetos funcionam, e o comando precisa estar no PATH para ser chamado de qualquer pasta:
brew install ghostscript qpdfsudo apt install ghostscript qpdfConfirme a instalação com gs --version e qpdf --version. Se algum deles não for encontrado, o terminal ainda não enxerga o programa, e reabrir a janela costuma resolver.
Comprimir com o Ghostscript
O comando abaixo gera saida.pdf a partir de entrada.pdf no preset de tela. As opções -dNOPAUSE, -dQUIET e -dBATCH impedem que o programa pare para perguntar algo no meio do caminho, e -dSAFER limita o que o PostScript embutido no arquivo pode fazer no seu sistema. Use -dSAFER sempre que o PDF vier de fora:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -dSAFER -sOutputFile=saida.pdf entrada.pdfTroque só o preset para mudar o nível:
| Preset | Nível equivalente no AjustaPDF | Indicado para |
|---|---|---|
| /prepress | Leve | Impressão, quando a qualidade das fotos importa |
| /ebook | Média | Tela, leitura e anexo de e-mail |
| /screen | Forte | Visualização rápida, quando o limite de envio é apertado |
O Ghostscript aceita parâmetros finos de resolução de cor, de tons de cinza e de imagens monocromáticas. Eles são úteis para quem precisa de uma regra específica para um tipo de documento. O AjustaPDF expõe apenas os três presets, e o guia acima cobre os casos do dia a dia, sem parâmetros avançados.
Depois de cada compressão, compare os tamanhos com ls -lh entrada.pdf saida.pdf. Se o saida.pdf for maior ou igual, descarte-o. Esse caso aparece sobretudo com /prepress em arquivos que já foram otimizados.
Otimizar a estrutura sem perda com o qpdf
O qpdf entra depois, para limpar o que sobrou no arquivo. Ele recompacta os fluxos com Flate, que é o mesmo algoritmo do ZIP, e gera fluxos de objetos, que deixam o arquivo mais enxuto:
qpdf --object-streams=generate --compress-streams=y --recompress-flate --compression-level=9 entrada.pdf saida.pdfO ganho com o qpdf é pequeno em PDFs gerados por editores modernos, que já vêm organizados. Ele vale mais em arquivos antigos, montados por partes ou com muitos objetos repetidos. Para ver o que pesa de verdade, use pdfimages -list entrada.pdf: a lista mostra as imagens e a resolução de cada uma, e normalmente uma ou duas explicam quase todo o tamanho. Se a causa for uma página escaneada, o guia sobre PDF escaneado pesado explica o que fazer antes de comprimir.
PDF com senha: remova antes de comprimir
O Ghostscript não abre um PDF criptografado. Se o comando falhar sem mensagem clara, a causa costuma ser a senha de abertura. Remova a senha com o qpdf, comprima e proteja o arquivo de novo no final. Para não deixar a senha no histórico do shell, coloque-a em um arquivo de texto:
- Crie o arquivo senha.txt com a senha em uma linha e rode
qpdf --password-file=senha.txt --decrypt entrada.pdf sem-senha.pdf. - Comprima o sem-senha.pdf com o comando do Ghostscript acima.
- Proteja o resultado com
qpdf --encrypt SENHA SENHA 256 -- comprimido.pdf protegido.pdf, trocando SENHA pela senha de verdade. - Apague senha.txt, sem-senha.pdf e comprimido.pdf, que ficaram no disco sem criptografia.
Se você não tem a senha de abertura, não há comando que a substitua. O qpdf só decifra com a senha informada. Quem não tem a senha pode usar o desbloquear PDF, que também exige a senha atual e não tenta adivinhá-la.
Comprimir vários arquivos de uma vez
Para uma pasta inteira, um laço de shell resolve. O exemplo grava cada resultado com o prefixo min- e mantém os originais intactos:
for f in *.pdf; do gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -dSAFER -sOutputFile="min-$f" "$f"; doneAspas em volta de "$f" são obrigatórias, senão nomes com espaço quebram o comando. Ao final, confira o tamanho de cada min- com o original antes de enviar qualquer um deles.
Erros comuns
- Esperar que o qpdf reduza fotos. Ele não reamostra imagens. Para reduzir fotos, o Ghostscript é o único dos dois que faz isso.
- Usar /screen em documento para impressão. As fotos ficam a 72 DPI e não voltam a ter detalhe. Use /prepress ou /ebook quando a arte importa.
- Não conferir o tamanho. A saída pode ser maior do que a entrada, e o comando não avisa.
- Rodar o Ghostscript sobre um PDF criptografado. Remova a senha antes, como descrito acima.
Para validar o resultado, abra o arquivo comprimido com zoom de 100% em duas páginas: uma com foto e uma só de texto. O texto precisa estar nítido em qualquer zoom, e a foto precisa ser aceitável para o destino. Se a foto ficou ruim demais, troque o preset pelo nível acima e teste de novo, em vez de aceitar a primeira saída.
Quando o AjustaPDF resolve melhor que o terminal
Para um arquivo de vez em quando, o terminal tem uma vantagem clara: o PDF nunca sai do seu computador. Para uso frequente ou para quem não quer instalar nada, a ferramenta de comprimir PDF do AjustaPDF roda os mesmos programas no servidor, com os níveis leve, média e forte. O arquivo é apagado assim que a resposta sai, e o site não guarda a senha quando houver uma.
A diferença é de lugar, não de resultado. Se o documento tem dados que não podem ser enviados para um servidor, rode os comandos deste guia. Quem entende o que é processamento no servidor e no navegador pode ler o guia sobre PDF online e segurança antes de decidir.
Perguntas frequentes
Qual comando usar para comprimir PDF no Linux?
Use o Ghostscript com o preset /ebook: gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=saida.pdf entrada.pdf. O preset reamostra as imagens para uma resolução de tela e mantém o texto como texto.
Qual a diferença entre os presets /prepress, /ebook e /screen?
São três níveis de reamostragem de imagem, do mais fiel ao mais leve. /prepress serve para impressão e mexe pouco no tamanho, /ebook é o equilíbrio para tela e e-mail, e /screen é o mais agressivo. O AjustaPDF usa os três como níveis leve, média e forte.
O qpdf comprime PDF?
Reduz pouco, e só sem perda. O qpdf reorganiza os objetos do arquivo e recomprime os fluxos internos, mas não reamostra imagens. Ele ajuda em PDFs de texto gerados por programas que deixam redundância. Para fotos e páginas escaneadas, use o Ghostscript.
O Ghostscript pode deixar o PDF maior?
Pode, sobretudo quando o arquivo já foi otimizado e o preset tenta reamostrar imagens que já estão pequenas. Compare o tamanho do entrada.pdf com o do saida.pdf. O servidor do AjustaPDF faz essa comparação e devolve o original quando o resultado é maior.
Dá para comprimir um PDF com senha pelo terminal?
Dá, em três passos: remova a senha com qpdf --decrypt, comprima com o Ghostscript e proteja de novo com qpdf --encrypt. O Ghostscript não abre arquivos criptografados, por isso a remoção vem antes. Guarde a senha em um arquivo temporário e apague-o depois.