Jak mogę sprawdzić pliki PDF, najlepiej za pomocą narzędzia?
Przykład zastosowania: próbuję programowo generować pliki PDF (przy użyciu iText). Mam problemy z uzyskaniem niektórych układów, ale mam pliki PDF z tekstem ułożonym tak, jak chcę (wygenerowane z programu Word). Chciałbym odtworzyć, jak oni to robią.
PDF Inspector wydaje się być dobry, ale szukam czegoś dla Windowsa.
no main manifest attribute, in PDF Document Inspector.jar
Odpowiedzi:
Adobe Acrobat ma bardzo fajny, ale raczej dobrze ukryty tryb, umożliwiający przeglądanie plików PDF. Napisałem artykuł wyjaśniający to na blogu pod adresem https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/
źródło
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
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:podofouncompress
PoDoFo to biblioteka FreeSoftware / OpenSource do pracy z formatem PDF i zawiera kilka narzędzi wiersza poleceń, w tym
podofouncompress
. Użyj go w ten sposób, aby zdekompresować strumienie 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
ipdf-parser.py
pdfid.py
ipdf-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:
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.
źródło
Używam iText RUPS (odczyt i aktualizacja składni PDF) w Linuksie. Ponieważ jest napisany w Javie, działa również w systemie Windows. Możesz przeglądać wszystkie obiekty w pliku PDF w strukturze drzewa. Może również dekodować strumienie zakodowane w formacie Flate na bieżąco, aby ułatwić kontrolę.
Oto zrzut ekranu:
źródło
java -jar itext-rups-5.5.6.jar
->Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/itextpdf/text/Version
- Jak masz to uruchomić? Edycja: rozgryzłem to. Nie powinieneś pobierać domyślnego pliku oferowanego przez SourceForge, musisz pobrać plik .jar, który zawiera zależności.PDFXplorer z O2 Solutions wykonuje znakomitą pracę, wyświetlając elementy wewnętrzne.
http://www.o2sol.com/pdfxplorer/overview.htm
(Bezpłatny, rozpraszający baner na dole).
źródło
Użyłem PDFBox z dobrym sukcesem. Oto próbka tego, jak wygląda kod (z wersji 0.7.2), który prawdopodobnie pochodzi z jednego z podanych przykładów:
źródło
Jest też inna opcja. Adobe Acrobat Pro może także wyświetlać wewnętrzną strukturę drzewa pliku PDF.
Na wierzchu Adobe Acrobat Pro może również wyświetlać wewnętrzną strukturę czcionek dokumentu w PDF, większość innych "przeglądarek struktury drzewa PDF" nie ma tej możliwości
źródło
Przeglądarka obiektów w programie Acrobat jest dobra, ale PDF Canopener firmy Windjack Solution umożliwia lepszą kontrolę za pomocą kroplomierza do wybierania obiektów na stronie. Pozwala również na modyfikacje w formacie PDF.
http://www.windjack.com/products/pdfcanopener.html
źródło
PDF Analyzer jest podobny do PDFXplorer , ale ma więcej opcji. Jest również bezpłatny po pojedynczej rejestracji.
źródło
Jeśli chcesz pracować programowo z poziomu Pythona, pdfminer jest dobrą opcją. Pozwala pracować ze strukturą PDF w pamięci jako hierarchią obiektów lub serializować ją jako XML.
źródło
Moją sugestią jest Foxit PDF Reader, który jest bardzo pomocny w wykonywaniu ważnych prac związanych z edycją tekstu na pliku pdf.
źródło