Ghostscript: o motor de compressão do PDF e seus três níveis
O que é o Ghostscript e como ele comprime PDF: os presets /prepress, /ebook e /screen, o DPI de cada um, o que muda além do peso e quando não ajuda.
O Ghostscript é um interpretador de PostScript e PDF de código aberto que, no modo pdfwrite, reescreve um PDF inteiro. No site ele é o motor da compressão: cada imagem é reamostrada para a resolução do nível escolhido, e o resultado só é entregue se for menor que o original.
O que o Ghostscript faz com o arquivo
Um PDF é lido pelo Ghostscript como uma sequência de instruções de desenho. Ao gravar o novo arquivo, ele escreve de novo cada página, cada fonte e cada imagem. A diferença fundamental para a compressão está nas imagens: quando o modo de gravação é pdfwrite, o programa pode reduzir a resolução de uma imagem e recodificá-la antes de gravar. O guia sobre compressão JPEG dentro do PDF mostra o que acontece com a imagem nessa recodificação.
O texto e os desenhos vetoriais não são imagens, então não passam por essa redução. Por isso uma página de texto feita no Word quase não muda de tamanho com a compressão: ela já era pequena. O peso de um PDF está, quase sempre, nas imagens.
Os três presets e o que cada um define
O site não expõe o nome dos presets. Ele usa nomes do produto e os mapeia para os presets do Ghostscript, cada um com uma resolução-alvo para as imagens:
| Nível no site | Preset do Ghostscript | Resolução-alvo | Uso típico |
|---|---|---|---|
| Leve | /prepress | 300 DPI | Impressão, com pouca perda |
| Média | /ebook | 150 DPI | Tela e e-mail |
| Forte | /screen | 72 DPI | Portal com limite de tamanho |
Um preset é um alvo, não uma promessa de tamanho. Se uma imagem já está abaixo da resolução do alvo, ela não é aumentada nem alterada. Por isso o nível leve, que mira 300 DPI, quase não mexe num escaneado feito a 300 DPI: não sobra pixel para descartar. No teste com uma página A4 escaneada, o leve manteve o arquivo de 2,5 MB, enquanto o médio o levou a 462 KB e o forte a 157 KB. Se uma imagem ficou borrada depois do forte, veja PDF borrado depois de comprimir.
Como o motor usa o Ghostscript
A chamada do motor é simples e fica no código de compressão. São usados o dispositivo pdfwrite, a compatibilidade com PDF 1.5, o preset escolhido e a saída em arquivo. Os parâmetros de modo não interativo, como o de execução em lote, impedem que o programa espere por uma resposta. Também é usado o modo seguro, que restringe o acesso a arquivos feito pelo próprio código PostScript do documento. Um documento é um dado não confiável, e o modo seguro existe para isso.
Há ainda um limite de tempo de 120 segundos por chamada. Depois da compressão, o motor compara o tamanho de entrada com o de saída. Se o resultado não ficou menor, ele devolve o arquivo original. Essa regra evita que um preset mal indicado para um arquivo já otimizado entregue algo maior.
O que muda além do peso
Reamostrar uma imagem não é a única mudança. Num teste do motor, a compressão nos níveis média e forte também descartou os metadados de câmera das fotos, como a localização. No nível leve, a foto passou intacta. Em PDFs com formulário, a compressão achata os campos, de modo que o valor preenchido vira texto fixo. E quando uma fonte não está embutida no arquivo original, o motor pode embutir uma substituta, o que altera a aparência de textos com tipografia específica.
| Efeito | Quando acontece | O que fazer |
|---|---|---|
| Foto reamostrada | Níveis média e forte | Usar o leve se a foto for importante |
| Metadados removidos | Níveis média e forte | Guardar o original para prova |
| Campos achatados | Qualquer nível | Preencher de novo depois, se preciso |
| Fonte substituída | Fonte original não embutida | Conferir a aparência antes de enviar |
Quando o Ghostscript não ajuda
O motor de compressão não tem efeito sobre o que não é imagem. Se o peso de um PDF vem de anexos, de vídeo embutido ou de fontes muito grandes, a compressão de imagens quase não muda o total. Antes de comprimir, descubra onde está o peso: um PDF longo de texto com uma foto por página é diferente de um PDF curto com muitas fotos grandes.
Nenhum nível garante um tamanho final. A opção "Até um tamanho" do site tenta leve, média e forte, nessa ordem, e entrega o primeiro resultado que cabe no limite informado; se nem o forte couber, devolve o menor resultado com um aviso. Nesse caso o caminho é dividir o arquivo e comprimir cada parte. O guia sobre quanto pesa uma página escaneada mostra como estimar isso por página.
Comprimir com o Ghostscript ou com o site
Se você trabalha com muitos arquivos, rodar o Ghostscript no seu computador faz sentido: você controla o preset e a versão, e o arquivo não sai da máquina. Para um PDF ocasional, a diferença de resultado é pequena e a ferramenta online poupa a instalação. Quem quer a versão de linha de comando completa encontra o passo a passo no guia de comprimir PDF com Ghostscript e qpdf.
Na ferramenta, escolha o nível pelo tamanho que o destino aceita, não pelo que parece bonito. Comece pelo média, que é o equilíbrio para tela e e-mail, e use o comprimir PDF com o original guardado ao lado. O guia de comprimir PDF sem perder qualidade explica o que esperar de cada nível.
Perguntas frequentes
O que é o Ghostscript e para que ele serve num PDF?
O Ghostscript é um programa de código aberto que interpreta PostScript e PDF e pode gravar um PDF novo a partir dele. Ao comprimir, ele reamostra as imagens para uma resolução-alvo e regrava o arquivo. O texto continua texto e os desenhos continuam vetoriais.
Que resolução de imagem cada preset do Ghostscript usa?
São três resoluções-alvo para as imagens: 300 DPI no /prepress, 150 DPI no /ebook e 72 DPI no /screen. O AjustaPDF chama esses presets de leve, média e forte. Quanto menor o alvo, menor o arquivo e mais perda visível nas fotos.
Por que o Ghostscript deixou meu PDF maior ou igual ao original?
Quando o arquivo comprimido não fica menor, o AjustaPDF devolve o original, porque entregar um arquivo maior não faz sentido. Isso acontece com arquivos já otimizados, com imagens abaixo do alvo do nível escolhido e com PDFs que são só texto.
Dá para usar o Ghostscript direto pelo terminal?
Dá. Ele é instalado em Linux e macOS pelo gerenciador de pacotes e roda com um comando, indicando o preset, o arquivo de entrada e o de saída. Os presets são os mesmos do motor do site, mas o resultado pode variar com a versão instalada. O guia de comprimir com Ghostscript e qpdf mostra o comando completo.