Eu queria saber como visualizar e editar o código de um arquivo PDF?
Ao visualizar, não quero ver o formato binário, então acho que
hexdump
pode não ser o que quero. Eu tenteigedit
, mas nenhum método de codificação pode ser usado para decodificar o conteúdo do PDF.Ao editar, gostaria de procurar
/Fit
e alterá-los para,/XYZ
por exemplo, sed. Mas meu comandosed s/\/Fit/\/XYZ/ < 1.pdf > 2.pdf
parece não alterar a aparência do meu PDF como eu esperava, embora não relate nenhum erro. Eu queria saber sesed
pode realmente funcionar em arquivos PDF como se fossem texto sem formatação?
O contexto das minhas perguntas pode ser encontrado nesta pergunta . Meu sistema operacional é o Ubuntu 10.10.
!
,\b
eg
quer dizer? Isso pode ser feito sem o perl apenas com o sed?g
significa substituir todas as ocorrências em cada linha, tanto em sed quanto em perl.!
é o separador; você pode escolher (quase) qualquer caractere como separador para os
comando (isso ocorre tanto em sed quanto em perl).\b
significa um limite de palavras; existe em perl mas não em sed.Em relação à sua 1ª pergunta ("visualizando o código-fonte, mas não o binário"): existem algumas opções que você tem para descompactar os fluxos binários internos que estão anexados a muitos objetos.
Minha ferramenta favorita para isso é o QPDF , disponível em todas as principais plataformas de sistemas operacionais. O comando a seguir descompacta todos os fluxos e todos os fluxos de objetos:
Agora você pode abrir seu PDF em qualquer editor de texto. (Ainda pode haver alguns blobs binários: por exemplo, arquivos de fonte e perfis ICC, o que não faria sentido expandir o QPDF).
Para re-comprimir o
expanded.pdf
novamente após a edição, você pode executar:(Cuidado ao editar PDFs manualmente! Você precisa saber muito sobre a sintaxe interna deles para fazer isso corretamente. Assim que você adicionar ou excluir um único byte, poderá receber mensagens de erro de leitores de PDF que talvez não consigam mais abra-o, porque o sumário interno do PDF está corrompido, o que é baseado em cálculos de desvio de bytes. A substituição
Fit
porXYZ
seqüências de caracteres deve funcionar bem ...)fonte
fix-qdf
programa que faz parte do qpdf. Você ainda precisa ter um pouco de cuidado. Veja qpdf.sourceforge.net/files/qpdf-manual.html#ref.qdffix-qdf
. Portanto, se você deseja substituir uma sequência por outra de comprimento diferente, é possível, mas é necessário usar afix-qdf
ferramenta. Eu diria que esta é uma adição útil à resposta.sed
é orientado a linhas, o que o torna inadequado para arquivos binários, estruturados como blocos e não linhas.Tente usar o bbe (bbe-.sourceforge.net).
Como alternativa, o Emacs (GNU e XEmacs) e o vim abrem arquivos PDF sem problemas. É claro que não é muito bonito, pois é um texto misto e binário, mas é suficiente para os propósitos de edição.
Existe um plugin Pdftk para vim que facilita tudo, faça o download aqui (arquivo zip).
Como você provavelmente sabe, os dois editores acima têm recursos avançados de pesquisa e substituição.
Além disso, a conversão do PDF para o modo QDF antes facilita a edição de arquivos PDF.
fonte
sed
usando o-b
switch. se funcionar, adicionarei isso à minha resposta.-b
, é específico para cygwin.Use o LibreOffice ou o OpenOffice para abrir o PDF, visualizá-lo, substituir itens, escrever um novo PDF, etc. Acho que você pode usá-lo a partir da linha de comando ou programaticamente se houver muitos documentos para processar.
Observe que PDFs de algumas fontes, por exemplo, scanners, geralmente contêm as páginas como imagens e não como texto, para que você não tenha sorte com o uso de pesquisa e substituição.
fonte