Oprócz narzędzi opartych na graficznym interfejsie użytkownika, o których mowa w innych odpowiedziach, istnieje kilka narzędzi wiersza poleceń, które mogą przekształcić oryginalny kod źródłowy PDF w inną reprezentację, co pozwala sprawdzić (teraz zmodyfikowany plik) za pomocą edytora tekstu. Wszystkie poniższe narzędzia działają w systemie Linux, Mac OS X, innych systemach Unix lub Windows.
qpdf
(mój ulubiony)
Użyj qpdf, aby zdekompresować (większość) strumieni obiektów, a także rozdzielićObjStm
obiekty na poszczególne obiekty pośrednie:
qpdf --qdf --object-streams=disable orig.pdf uncompressed-qpdf.pdf
qpdf
określa siebie jako narzędzie, które wykonuje „strukturalne przekształcenia zachowujące zawartość plików PDF” .
Następnie po prostu otwórz + sprawdź plik uncompressed-qpdf.pdf
plik w swoim ulubionym edytorze tekstu. Większość wcześniej skompresowanych (a zatem binarnych) bajtów będzie teraz zwykłym tekstem.
mutool
Istnieje również mutool
narzędzie wiersza poleceń, które jest dostarczane w pakiecie z przeglądarką plików PDF MuPDF (która jest siostrzanym produktem Ghostscript, wyprodukowanym przez tę samą firmę Artifex ). Następujące polecenie dekompresuje również strumienie i ułatwia ich przeglądanie w edytorze tekstu:
mutool clean -d orig.pdf uncompressed-mutool.pdf
podofouncompress
PoDoFo to biblioteka FreeSoftware / OpenSource do pracy z formatem PDF i zawiera kilka narzędzi wiersza poleceń, w tympodofouncompress
. Użyj go w ten sposób, aby zdekompresować strumienie PDF:
podofouncompress orig.pdf uncompressed-podofo.pdf
peepdf.py
PeePDF to narzędzie oparte na języku Python, które pomaga przeglądać pliki PDF. Jego pierwotnym celem było badanie i analiza złośliwego oprogramowania opartego na plikach PDF, ale uważam, że przydatne jest również zbadanie struktury całkowicie niegroźnych plików PDF.
Można go używać interaktywnie do „przeglądania” obiektów i strumieni zawartych w pliku PDF.
Nie podam tutaj przykładu użycia, a jedynie link do jego dokumentacji:
pdfid.py
i pdf-parser.py
pdfid.py
i pdf-parser.py
to dwa narzędzia PDF autorstwa Didiera Stevensa napisane w języku Python.
Ich tło ma również pomóc w eksploracji złośliwego oprogramowania plików PDF - ale uważam również, że przydatne jest analizowanie struktury i zawartości niegroźnych plików PDF.
Oto przykład, jak wyodrębnić nieskompresowany strumień obiektu PDF nr. 5 do pliku * .dump:
pdf-parser.py -o 5 -f -d obj5.dump my.pdf
Uwagi końcowe
Należy pamiętać, że niektóre części binarne w pliku PDF niekoniecznie są niekompresowalne (lub dekodowane do czytelnego dla człowieka kodu ASCII), ponieważ są osadzane i używane w swoim rodzimym formacie w plikach PDF. Takie części PDF to obrazy JPEG, czcionki lub profile kolorów ICC.
Jeśli porównasz powyższe narzędzia z podanymi przykładami wiersza poleceń, odkryjesz, że NIE wszystkie dają identyczne wyniki. Sam wysiłek polegający na porównaniu ich pod kątem różnic może pomóc lepiej zrozumieć naturę składni PDF i formatu pliku.