Qual ferramenta você recomenda para inspecionar arquivos PDF?
Caso de uso: estou tentando gerar arquivos PDF programaticamente (usando o iText). Estou tendo problemas para obter determinados layouts, mas tenho arquivos PDF com texto dispostos da maneira que desejo (gerados a partir do Word). Eu gostaria de fazer a engenharia reversa de como eles fazem isso.
O PDF Inspector parece bom, mas estou procurando algo para o Windows.
no main manifest attribute, in PDF Document Inspector.jar
Respostas:
Adobe Acrobat tem um modo muito legal, mas bem escondido, permitindo que você inspecione arquivos PDF. Escrevi um artigo no blog explicando isso em https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/
fonte
Além das ferramentas baseadas em GUI mencionadas nas outras respostas, existem algumas ferramentas de linha de comando que podem transformar o código-fonte do PDF original em uma representação diferente que permite inspecionar o (agora arquivo modificado) com um editor de texto. Todas as ferramentas abaixo funcionam em Linux, Mac OS X, outros sistemas Unix ou Windows.
qpdf
(meu favorito)Use qpdf para descompactar (a maioria) fluxos de
ObjStm
objetos e também dissecar objetos em objetos indiretos individuais:qpdf
descreve a si mesmo como uma ferramenta que faz "transformações estruturais e preservadoras de conteúdo em arquivos PDF" .Em seguida, basta abrir e inspecionar o
uncompressed-qpdf.pdf
arquivo em seu editor de texto favorito. A maioria dos bytes compactados anteriormente (e, portanto, binários) agora serão texto simples.mutool
Também existe a
mutool
ferramenta de linha de comando que vem com o visualizador de PDF MuPDF (que é um produto irmão do Ghostscript, feito pela mesma empresa, Artifex ). O comando a seguir também descompacta fluxos e os torna mais fáceis de inspecionar por meio de um editor de texto:podofouncompress
PoDoFo é uma biblioteca FreeSoftware / OpenSource para trabalhar com o formato PDF e inclui algumas ferramentas de linha de comando, incluindo
podofouncompress
. Use-o assim para descompactar fluxos de PDF:peepdf.py
PeePDF é uma ferramenta baseada em Python que ajuda você a explorar arquivos PDF. Seu propósito original era pesquisar e dissecar malware baseado em PDF, mas acho útil também investigar a estrutura de arquivos PDF completamente benignos.
Ele pode ser usado interativamente para "navegar" pelos objetos e fluxos contidos em um PDF.
Não vou dar um exemplo de uso aqui, mas apenas um link para sua documentação:
pdfid.py
epdf-parser.py
pdfid.py
epdf-parser.py
são duas ferramentas PDF de Didier Stevens escritas em Python.Sua experiência também ajuda a explorar PDFs maliciosos - mas também acho útil analisar a estrutura e o conteúdo de arquivos PDF benignos.
Aqui está um exemplo de como eu extrairia o fluxo não compactado do objeto PDF no. 5 em um arquivo * .dump:
Notas finais
Observe que algumas partes binárias dentro de um PDF não são necessariamente incompressíveis (ou decodificáveis em código ASCII legível por humanos), porque são incorporadas e usadas em seu formato nativo dentro de PDFs. Essas partes do PDF são imagens JPEG, fontes ou perfis de cores ICC.
Se você comparar acima ferramentas e exemplos de linha de comando dadas, você vai descobrir que eles fazem não todos produzem saídas idênticas. O esforço de compará-los por suas diferenças pode ajudá-lo a entender melhor a natureza da sintaxe e do formato do arquivo PDF.
fonte
Eu uso o iText RUPS ( Sintaxe de leitura e atualização de PDF) no Linux. Por ser escrito em Java, também funciona no Windows. Você pode navegar por todos os objetos em arquivo PDF em uma estrutura de árvore. Ele também pode decodificar fluxos codificados em Flate dinamicamente para facilitar a inspeção.
Aqui está uma captura de tela:
fonte
java -jar itext-rups-5.5.6.jar
->Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/itextpdf/text/Version
- Como você deve executar essa coisa? Edit: Descobri isso. Você não deve baixar o arquivo padrão oferecido pelo SourceForge, você precisa baixar o .jar que inclui dependências.O PDFXplorer da O2 Solutions faz um excelente trabalho de exibição dos internos.
http://www.o2sol.com/pdfxplorer/overview.htm
(Banner grátis e distrativo na parte inferior).
fonte
Usei o PDFBox com muito sucesso. Aqui está uma amostra da aparência do código (desde a versão 0.7.2), que provavelmente veio de um dos exemplos fornecidos:
fonte
O visualizador de objetos no Acrobat é bom, mas o PDF Canopener do Windjack Solution permite uma melhor inspeção com um conta-gotas para selecionar objetos na página. Também permite que modificações sejam feitas no PDF.
http://www.windjack.com/products/pdfcanopener.html
fonte
Também existe outra opção. O Adobe Acrobat Pro também é capaz de exibir a estrutura de árvore interna do PDF.
No topo, o Adobe Acrobat Pro também pode exibir a estrutura interna das Fontes de Documento no PDF, a maioria dos outros "visualizadores de estrutura em árvore PDF" não tem esta opção
fonte
Se você deseja trabalhar programaticamente a partir do Python, o pdfminer é uma boa opção. Ele permite que você trabalhe com a estrutura PDF na memória como uma hierarquia de objetos ou serialize-a como XML.
fonte
O PDF Analyzer é semelhante ao PDFXplorer , mas tem mais opções. Também é gratuito após um único registro.
fonte
Minha sugestão é o Foxit PDF Reader, que é muito útil para fazer importantes trabalhos de edição de texto em arquivos PDF.
fonte