Como visualizar e editar o código de um arquivo PDF

9

Eu queria saber como visualizar e editar o código de um arquivo PDF?

  1. Ao visualizar, não quero ver o formato binário, então acho que hexdump pode não ser o que eu quero. Eu tentei gedit , mas nenhum método de codificação pode ser usado para decodificar o conteúdo em PDF.

  2. Ao editar, gostaria de pesquisar /Fit e alterá-los para /XYZ por exemplo sed. Mas meu comando sed s/\/Fit/\/XYZ/ < 1.pdf > 2.pdf não parece mudar a aparência do meu PDF como eu esperava, embora não relate nenhum erro. Eu queria saber se sed pode realmente trabalhar em arquivos PDF como se fossem texto simples?

O contexto das minhas perguntas pode ser encontrado em esta pergunta . Meu sistema operacional é o Ubuntu 10.10.

    
por Tim 22.07.2011 / 14:25

4 respostas

9

Você pode usar sed com arquivos binários (pelo menos o GNU sed; algumas implementações podem ter problemas com arquivos que contenham caracteres nulos ou que não terminem com um caractere de nova linha). Mas o comando usado substitui apenas a primeira ocorrência de /Fit em cada linha e as linhas são praticamente sem sentido em um arquivo PDF. Você precisa substituir todas as ocorrências:

 sed s/\/Fit/\/XYZ/g

Seria mais robusto substituir somente /Fit se não for seguido por um constituinte de palavra (por exemplo, não substituindo /Fitness ; não sei se seu arquivo contém ocorrências de /Fit que causariam problemas). Aqui está uma maneira:

perl -pe 's!/Fit\b!/XYZ!g'
    
por 22.07.2011 / 15:49
10

Em relação à sua primeira pergunta ("visualização do código-fonte, mas não binário"): há algumas opções que você tem para desfazer a compactação dos fluxos binários internos que estão anexados a muitos objetos.

Minha ferramenta favorita para isso é QPDF , disponível em todas as principais plataformas de sistemas operacionais. O comando a seguir descompacta todos os fluxos e todos os fluxos de objeto:

 qpdf --qdf --object-streams=disable orig.pdf expanded.pdf

Agora você pode abrir seu PDF em qualquer editor de texto. (Ainda pode haver alguns blobs binários lá: por exemplo, arquivos font e perfis ICC que não fazem sentido para o QPDF expandir).

Para re-comprimir o expanded.pdf novamente após a edição, você pode executar:

 qpdf expanded.pdf orig2.pdf

(Cuidado ao editar PDFs manualmente! Você precisa saber muito sobre sua sintaxe interna para fazer isso corretamente. Assim que você adicionar ou excluir um único byte, poderá receber mensagens de erro dos leitores de PDF que não podem mais ser capaz de abri-lo, porque o ToC interno dos PDFs está corrompido, o que é baseado em cálculos de deslocamento de byte.Apenas substituir Fit by XYZ strings deve ficar bem, embora ...)

    
por 13.01.2014 / 18:09
1

sed é orientado à linha, o que o torna inadequado para arquivos binários, que são estruturados como blocos e não como linhas.
Tente usar o bbe (bbe-.sourceforge.net) em seu lugar.

Alternativamente, tanto o Emacs (GNU e XEmacs) quanto o vim abrem arquivos PDF sem problemas. Não é muito bonito, é claro, já que é um texto misto e binário, mas é suficiente para seus propósitos de edição. Existe um plug-in Pdftk para o vim que torna tudo mais fácil, faça o download de aqui (arquivo zip).
Como você provavelmente sabe, ambos os editores acima têm recursos avançados de pesquisa e substituição.

Além disso, converter o PDF para o modo QDF antes de facilitar a edição de arquivos PDF .

    
por 22.07.2011 / 14:44
1

Use o LibreOffice ou o OpenOffice para abrir o PDF, visualizá-lo, substituir coisas, escrever um novo PDF, etc. Acho que você pode até usá-lo a partir da linha de comando ou programaticamente, se houver muitos documentos para processar.

Observe que os PDFs de algumas fontes, por exemplo Scanners, muitas vezes contêm as páginas como imagens e não como texto, assim você estará sem sorte com eles para usar a pesquisa e substituir.

    
por 12.04.2014 / 11:04

Tags