Por que meu PDF quase não diminuiu?
Passei meu PDF em um compressor e ele foi de 4,1 MB para 4,0 MB. A ferramenta está com defeito?
Um PDF é um fichário
O modelo mental que gera a decepção é pensar no PDF como uma imagem de um documento. Ele não é. Um PDF, como define a norma ISO 32000, é um contêiner de objetos numerados: árvores de páginas, fluxos de conteúdo cheios de operadores de desenho, programas de fonte embutidos, XObjects de imagem, campos de formulário, anotações, marcadores e uma tabela de referências cruzadas que diz onde cada objeto começa.
A maior parte desses objetos já vem comprimida. Os fluxos de conteúdo costumam usar codificação Flate, o mesmo algoritmo de um arquivo ZIP. As fotografias embutidas costumam ser guardadas como fluxos DCT, ou seja, dados JPEG repassados sem alteração. Então, quando um compressor de uso geral olha para um PDF, ele está olhando para uma caixa de coisas que já foram comprimidas uma vez cada.
Descubra onde estão os bytes antes de comprimir qualquer coisa
O diagnóstico mais útil de todos é saber que tipo de documento você tem, porque isso prevê o resultado quase por completo.
| Tipo de documento | Onde estão os bytes | O que uma gravação estrutural consegue fazer |
|---|---|---|
| Relatório de texto feito em editor de textos | Programas de fonte embutidos e fluxos de conteúdo pequenos | Muito pouco; o conteúdo já é denso |
| Páginas digitalizadas | Uma imagem grande por página | Quase nada sem mexer nas imagens |
| Exportação de apresentação | Fotografias e gradientes embutidos | Alguma coisa, se houver imagens repetidas entre os slides |
| Desenho técnico | Fluxos de conteúdo vetorial longos | Alguma coisa, recodificando fluxos e removendo objetos não usados |
| Formulário com anexos | Arquivos embutidos, JavaScript, dicionários de anotações | Bastante, se os extras puderem ser removidos |
O que uma gravação estrutural realmente remove
Uma gravação estrutural reescreve o documento sem mudar a aparência de nenhuma página. Ela pode descartar objetos que nada mais referencia, e esses se acumulam a cada vez que um documento é editado e salvo de forma incremental. Pode comprimir a tabela de referências cruzadas e empacotar objetos pequenos em fluxos de objetos. Pode descartar metadados do documento, miniaturas e o histórico de edição que alguns geradores deixam para trás.
Em um documento editado e salvo muitas vezes, isso pode render bastante. Em um documento exportado de forma limpa, uma única vez, a partir de um editor de textos, não há nada a recolher: o arquivo já está perto da menor forma possível de si mesmo, e cem kilobytes a menos em quatro megabytes é exatamente o resultado a esperar.
Por que um documento de texto resiste
Em um PDF de texto, boa parte do arquivo costuma ser fonte embutida. Um programa de fonte é um binário compacto com os contornos dos glifos e as instruções de hinting, e ele está ali porque o documento precisa ser exibido de forma idêntica em uma máquina que não tem aquela tipografia instalada. Não dá para comprimi-lo até sumir sem reduzir ainda mais o subconjunto de caracteres ou sem removê-lo — e remover muda a aparência da página.
O texto em si é minúsculo. Cem páginas de prosa são algumas centenas de kilobytes de caracteres antes de qualquer compressão. Se o seu PDF de texto está grande, olhe para as fontes e para as imagens escondidas atrás do texto — um logotipo repetido no cabeçalho, uma marca-d'água de fundo — e não para as palavras.
Por que uma digitalização encolhe tanto
Uma página digitalizada é uma grande fotografia de uma folha de papel, muitas vezes capturada a 300 pontos por polegada ou mais. Uma página A4 a 300 DPI tem cerca de 2480 × 3508 pixels — quase nove milhões deles, para uma página cujo conteúdo de informação são alguns kilobytes de texto. É por isso que digitalizações respondem de forma tão dramática à compressão rasterizada: reduzir a resolução de renderização e recodificar as imagens das páginas ataca justamente a parte do arquivo que é grande.
É também por isso que esse modo é destrutivo. Assim que a página vira imagem, a camada de texto pesquisável, os links, os campos de formulário, as anotações, a estrutura marcada de acessibilidade e qualquer assinatura digital deixam de existir. O FileSlimmer trata a rasterização como um modo separado, claramente identificado e com esse aviso, em vez de usá-la como recurso silencioso quando a gravação estrutural decepciona.
Por que ninguém pode prometer um número
Um tamanho-alvo para um PDF é uma busca entre resolução de renderização e qualidade de imagem, e essa busca tem um piso: abaixo de certa resolução, o texto de uma digitalização deixa de ser legível. Se um documento específico chega a um orçamento específico acima desse piso, isso depende do número de páginas, da cobertura de tinta, da quantidade de conteúdo fotográfico e do ruído do scanner. Dois documentos com o mesmo número de páginas podem terminar com tamanhos muito diferentes.
O comportamento honesto é parar no piso e informar onde a busca parou, que é o que fazem as predefinições de tamanho-alvo para PDF do FileSlimmer. Uma ferramenta que acerta sempre o número que você digitou ou está mentindo sobre o número ou está destruindo o documento para chegar lá.
Antes de culpar a ferramenta
- Veja se o PDF é uma digitalização. Tente selecionar uma linha de texto: se o cursor não selecionar nada, todas as páginas são imagens.
- Compare o número de páginas com o tamanho. Um arquivo de 40 MB com três páginas é pesado de imagens; um de 40 MB com 900 páginas pode ser perfeitamente razoável.
- Veja se o documento está criptografado. Um PDF protegido por senha não pode ser reestruturado de forma alguma enquanto não for desbloqueado.
- Veja se ele está assinado. Reescrever um documento assinado invalida a assinatura, e isso costuma ser pior do que um arquivo grande.
- Veja do que você realmente precisa. Separar as seis páginas que você tem de enviar costuma render mais do que comprimir as noventa.
Ferramentas para isso
Fontes
- ISO 32000-2 — Document management, Portable Document Format
- Adobe — PDF 32000-1:2008, the freely published PDF 1.7 specification
- PDF Association — ISO 32000 and the PDF standards family