Versões antigas escondidas no PDF: o que o arquivo ainda guarda
Como saber se um PDF guarda versões antigas de texto apagado, contar as marcas de fim de arquivo e remover o histórico por reescrita antes de enviar.
Um PDF editado e salvo de forma incremental guarda as versões anteriores dentro do mesmo arquivo. O texto apagado pode continuar em uma revisão antiga, mesmo sem aparecer na página. Para checar, conte as marcas de fim de arquivo com um comando simples. Para remover o histórico, reescreva o PDF: no AjustaPDF, a compressão faz isso com o arquivo inteiro.
Como um PDF guarda versões antigas
Quando um editor salva de forma incremental, ele não reescreve o arquivo do começo. Ele acrescenta no fim as partes alteradas, com uma nova tabela que aponta para as versões novas. Os bytes antigos continuam no lugar, e o leitor apenas mostra a versão mais recente.
Isso explica por que um arquivo pode ficar maior do que o conteúdo justifica, mesmo depois de apagar páginas ou trechos. Também explica por que um trecho removido pode ser recuperado por quem tiver o arquivo e souber onde procurar.
Imagine um contrato em que uma cláusula foi apagada no editor e salva com o mesmo nome. Na tela, a cláusula sumiu. No arquivo, a versão anterior pode continuar nos bytes do PDF, esperando um programa que a interprete. Quem recebe o arquivo, com um pedido de cópia ou uma perícia, pode tentar recuperar essa versão, e o documento parece limpo para quem só o abre.
Sinais de que o arquivo tem histórico
Nenhum sinal sozinho prova que o histórico existe. Eles servem para decidir se vale a pena reescrever o arquivo antes de enviar.
| Sinal | O que pode significar | Cuidado |
|---|---|---|
| A contagem de fim de arquivo dá 1 | O arquivo foi gravado de uma vez, sem salvamentos acumulados | Não garante que não houve edição em outra ferramenta |
| A contagem de fim de arquivo dá 2 ou mais | Houve salvamentos incrementais, e cada um deixou dados anteriores | Um padrão igual pode aparecer dentro de dados comprimidos |
| O arquivo pesa mais do que as páginas explicam | Podem existir objetos antigos que nenhuma página mostra | Imagens grandes também explicam o peso, então veja as imagens primeiro |
Para fazer a contagem no Mac ou no Linux, abra o terminal na pasta do arquivo e rode grep -a -o "%%EOF" nome-do-arquivo.pdf | wc -l, trocando o nome pelo seu. O comando devolve um número. Ele não altera o arquivo.
Como o AjustaPDF trata esse histórico
A compressão do AjustaPDF usa o Ghostscript para gravar o documento de novo do começo ao fim. Esse processo é o que elimina as versões guardadas por salvamento incremental. Vale para os três níveis de compressão, porque todos passam pela mesma reescrita.
A junção de PDFs monta um arquivo novo a partir das páginas atuais. Ela copia o que cada página usa, e não o histórico do arquivo original. Na prática, costuma deixar as versões antigas de fora, mas confira o resultado com a contagem antes de confiar.
Girar, dividir e organizar também gravam um arquivo novo só com os objetos em uso, então as versões antigas penduradas no fim não passam para o resultado. Confira com a contagem, como nos outros casos.
Passo a passo para remover o histórico
O melhor método é gerar o PDF de novo a partir da origem, sem o trecho. Quando isso não é possível, siga a sequência abaixo.
- Antes de tudo, copie o trecho sensível e busque-o no leitor. Se ele aparecer na página atual, resolva isso primeiro, porque o histórico é um problema separado.
- Conte as marcas de fim de arquivo com o comando acima e anote o número.
- Se o arquivo tem senha para abrir, desbloqueie antes com a senha certa. As ferramentas não trabalham sobre um arquivo que pede senha de abertura.
- Abra a ferramenta de comprimir PDF, envie o arquivo e baixe o resultado. O nível médio serve para a maioria dos casos.
- Conte as marcas de fim de arquivo no arquivo novo. O número costuma cair para 1, mas o mais importante é buscar o trecho antigo de novo.
O que a reescrita não resolve
Apagar o histórico não remove o que ainda está visível. Se o trecho continua na página, ele continua no arquivo, e a reescrita só mantém o documento atual. Também não há garantia sobre cópias que o programa de origem guardou fora do arquivo, como rascunhos ou backups na nuvem.
- Não remove autor, programa de origem e datas como uma ferramenta de metadados. O campo Producer, por exemplo, passa a citar o Ghostscript.
- Não serve para documento assinado digitalmente. Qualquer reescrita depois da assinatura pode quebrar a validação, como explica o guia sobre PDF assinado digitalmente.
- Não faz OCR. Se o trecho está em imagem, a reescrita mantém a imagem como ela é.
Quando o problema também é o autor do arquivo
Às vezes o que sobra no arquivo não é um trecho, e sim o nome de quem criou o documento e o programa usado. Nesse caso, o próximo passo é uma ferramenta de metadados. O MetaWipe lê o relatório de metadados grátis e sem conta. Para PDF, ele regrava o documento para que os campos /Info e XMP antigos não fiquem recuperáveis numa atualização incremental. Você paga por Pix só ao baixar o arquivo limpo, e os arquivos são apagados uma hora depois do envio.
Para entender que tipo de informação fica no arquivo, leia o guia sobre metadados do PDF. Se a dúvida é se um trecho aparece mesmo com tarja, o guia sobre tarja preta que não apaga o texto mostra o teste passo a passo.
Perguntas frequentes
Apagar o texto no editor já remove a versão antiga do arquivo?
Nem sempre. Muitos editores salvam as mudanças no fim do arquivo, e a versão anterior continua nos bytes do documento. O texto apagado pode seguir guardado em uma revisão antiga. Para ter certeza, conte as marcas de fim de arquivo, como descrito no guia, e reescreva o PDF.
Como saber quantas versões um PDF tem guardadas?
No Mac ou no Linux, rode o comando com grep, contando as ocorrências de %%EOF no arquivo. Um resultado igual a 1 indica um arquivo gravado de uma vez. Mais de 1 indica salvamentos acumulados. Trate o número como um indício, porque o padrão pode aparecer dentro de dados comprimidos.
Comprimir o PDF no AjustaPDF apaga o histórico de salvamentos?
Sim. A compressão reescreve o arquivo inteiro com o Ghostscript, então as versões antigas guardadas por salvamento incremental deixam de existir. O campo Producer passa a citar o Ghostscript. Confira o resultado com a mesma contagem de %%EOF antes de enviar.
Salvar com outro nome limpa as versões antigas?
Não necessariamente. Salvar como outro nome pode só copiar o arquivo com o mesmo histórico dentro. O teste é o mesmo: conte as marcas de fim de arquivo no novo arquivo. Se ainda houver mais de uma, o histórico foi copiado junto.
Quem não tem Mac ou Linux, como faz o teste?
Sem terminal, o caminho prático é reescrever o arquivo com a ferramenta de comprimir e depois buscar um trecho antigo no leitor. Se a busca não achar o trecho que você removeu, a reescrita funcionou. Se o arquivo tem assinatura digital, não faça a reescrita sem antes checar a validade.