Eu escrevi um script Python para executar a tarefa. Ele procura todos os objetos no arquivo PDF (marcado por obj
e endobj
) e verifica cada objeto se for uma anotação ( /Type/Annot
) do tipo de realce ( /Subtype/Highlight
). Se esse for o caso, a definição de cor ( /C[...]
) será substituída.
Existem algumas limitações:
- Nenhuma análise real do PDF é feita. As expressões regulares usadas podem não ser adequadas para alguns arquivos PDF.
- Isso pode não funcionar para arquivos PDF criptografados ou compactados. (Não tenho certeza se as anotações podem ser compactadas.)
- O arquivo original será sobrescrito. Não me culpe pelos dados perdidos! (O script é facilmente editado para criar novos arquivos.)
- Presumo que alguns objetos PDF referenciem outros objetos por sua posição no arquivo. Assim, evito que o tamanho do arquivo mude. Isso significa que a nova definição de cores pode não ocupar mais bytes do que a antiga.
- A definição de cores não é validada. Você pode quebrar seu PDF com uma expressão inválida.