Alat terbaik untuk memeriksa file PDF? [Tutup]

94

Bagaimana saya bisa memeriksa file PDF, lebih disukai dengan alat?

Kasus penggunaan: Saya mencoba membuat file PDF secara terprogram (menggunakan iText). Saya mengalami masalah dalam mencapai tata letak tertentu, tetapi saya memiliki file PDF dengan teks yang ditata seperti yang saya inginkan (dihasilkan dari Word). Saya ingin merekayasa balik cara mereka melakukannya.

PDF Inspector sepertinya bagus, tapi saya mencari sesuatu untuk Windows.

bmm6o
sumber
PDF Inspector berbasis Java, jadi multiplatform.
david.perez
2
Sepertinya tidak berjalan di Windows. Stoples tidak melakukan apa pun saat diklik. Ketika dipanggil di baris perintah saya mendapatkanno main manifest attribute, in PDF Document Inspector.jar
Tom
1
@ david.perez itu berbasis java tetapi dibungkus apel jadi ini semacam distribusi hanya apel. Ada jar "PDF Document Inspector.app/Contents/Resources/Java/PDF Document Inspector.jar" tetapi tidak dapat dimulai sebagai java -jar "PDF Document Inspector.jar" Juga ada banyak com.apple.cocoa. * Termasuk yang khusus platform. :(
andrej
Saya sekarang berhasil menggunakan iText Rups, multiplatform dan berbasis Java.
david.perez

Jawaban:

18

Adobe Acrobat memiliki mode yang sangat keren tetapi cukup tersembunyi yang memungkinkan Anda untuk memeriksa file PDF. Saya menulis artikel blog yang menjelaskannya di https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/

tandai stephens
sumber
Ini sepertinya membutuhkan plugin; setidaknya ini tidak tersedia di Acrobat Reader 9.5.5 di Linux.
Adam Spiers
3
@AdamSpiers, kotak dialog preflight adalah fitur Adobe Acrobat, bukan Adobe Reader
IPSUS
... dan Acrobat ( sebelumnya Acrobat Exchange ) tidak tersedia untuk Linux: - /
Adam Spiers
7
Kotak dialog Preflight sebenarnya membutuhkan Adobe Acrobat Pro. Ini tidak tersedia dalam Adobe Acrobat Standard.
Futal
1
Dan itu adalah mimpi buruk UI untuk benar-benar digunakan.
Jon
87

Selain alat berbasis GUI yang disebutkan dalam jawaban lain, ada beberapa alat baris perintah yang dapat mengubah kode sumber PDF asli menjadi representasi berbeda yang memungkinkan Anda memeriksa (file yang sekarang dimodifikasi) dengan editor teks. Semua alat di bawah ini berfungsi di Linux, Mac OS X, sistem Unix lain, atau Windows.

qpdf (kesukaanku)

Gunakan qpdf untuk membuka kompresi (sebagian besar) aliran objek dan juga membedah ObjStmobjek menjadi objek tidak langsung individual:

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

qpdfmendeskripsikan dirinya sebagai alat yang melakukan "transformasi struktural, yang memelihara konten pada file PDF" .

Kemudian buka + periksa uncompressed-qpdf.pdffile di editor teks favorit Anda. Sebagian besar byte yang sebelumnya dikompresi (dan karenanya, biner) sekarang akan menjadi teks biasa.

mutool

Ada juga mutoolalat baris perintah yang dibundel dengan penampil PDF MuPDF (yang merupakan produk saudara Ghostscript, dibuat oleh perusahaan yang sama, Artifex ). Perintah berikut juga membuka kompresi aliran dan membuatnya lebih mudah untuk diperiksa melalui editor teks:

mutool clean -d orig.pdf uncompressed-mutool.pdf

podofouncompress

PoDoFo adalah pustaka FreeSoftware / OpenSource untuk bekerja dengan format PDF dan mencakup beberapa alat baris perintah, termasukpodofouncompress. Gunakan seperti ini untuk membuka kompresi aliran PDF:

podofouncompress orig.pdf uncompressed-podofo.pdf

peepdf.py

PeePDF adalah alat berbasis Python yang membantu Anda menjelajahi file PDF. Tujuan aslinya adalah untuk penelitian dan pembedahan malware berbasis PDF, tetapi saya merasa berguna juga untuk menyelidiki struktur file PDF yang sepenuhnya jinak.

Ini dapat digunakan secara interaktif untuk "menelusuri" objek dan aliran yang terdapat dalam PDF.

Saya tidak akan memberikan contoh penggunaan di sini, tetapi hanya tautan ke dokumentasinya:

pdfid.py dan pdf-parser.py

pdfid.pydan pdf-parser.pydua alat PDF oleh Didier Stevens yang ditulis dengan Python.

Latar belakang mereka juga untuk membantu menjelajahi PDF berbahaya - tetapi saya juga merasa berguna untuk menganalisis struktur dan konten file PDF jinak.

Berikut adalah contoh bagaimana saya mengekstrak aliran tidak terkompresi dari objek PDF no. 5 menjadi file * .dump:

pdf-parser.py -o 5 -f -d obj5.dump my.pdf

Catatan akhir

  1. Harap dicatat bahwa beberapa bagian biner di dalam PDF belum tentu tidak dapat dikompresi (atau dapat didekodekan menjadi kode ASCII yang dapat dibaca manusia), karena mereka tertanam dan digunakan dalam format aslinya di dalam PDF. Bagian PDF tersebut adalah gambar JPEG, font atau profil warna ICC.

  2. Jika Anda membandingkan alat-alat di atas dan contoh baris perintah yang diberikan, Anda akan menemukan bahwa mereka TIDAK semuanya menghasilkan keluaran yang sama. Upaya membandingkan keduanya karena perbedaannya sendiri dapat membantu Anda lebih memahami sifat sintaks PDF dan format file.

Kurt Pfeifle
sumber
42

Saya menggunakan iText RUPS (Membaca dan Memperbarui Sintaks PDF) di Linux. Karena ditulis di Java, ini juga berfungsi di Windows. Anda dapat menelusuri semua objek dalam file PDF dalam struktur pohon. Itu juga dapat mendekode aliran yang dikodekan Flate dengan cepat untuk mempermudah pemeriksaan.

Ini tangkapan layarnya:

Screenshot iText RUPS

gkcn
sumber
9
java -jar itext-rups-5.5.6.jar-> Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/itextpdf/text/Version- Bagaimana Anda bisa menjalankan hal ini? Edit: Berhasil. Anda tidak boleh mengunduh file default yang ditawarkan oleh SourceForge, Anda perlu mengunduh .jar yang menyertakan dependensi.
Zero3
2
@ Zero3 baru saja menemukan hal yang sama. Terima kasih atas komentar Anda.
Sam
1
@KurtPink Saya sepenuhnya setuju. Sayangnya, banyak perangkat lunak (seperti ini!) Yang hanya tersedia melalui SourceForge karena pengelola belum memindahkan proyek ke tempat lain, dan mungkin tidak akan pernah melakukannya. Anda memang harus sangat berhati-hati saat mengunduh apa pun dari SourceForge hari ini ...
Zero3
7
Ya - sebagai toples yang dikompilasi dan bahkan sebagai exe, untuk pengguna Windows. Lihat github.com/itext/rups/releases/latest
Amedee Van Gasse
1
@AmedeeVanGasse screenshot di jawaban ini menunjukkan tampilan halaman (antara pohon dokumen dan tab xref). Bagaimana cara menampilkan tampilan itu di v5.5.9 pada Windows?
iPDFdev
5

Saya telah menggunakan PDFBox dengan kesuksesan yang baik. Berikut adalah contoh tampilan kode (kembali dari versi 0.7.2), yang kemungkinan besar berasal dari salah satu contoh yang diberikan:

// load the document
System.out.println("Reading document: " + filename);
PDDocument doc = null;                                                                                                                                                                                                          
doc = PDDocument.load(filename);

// look at all the document information
PDDocumentInformation info = doc.getDocumentInformation();
COSDictionary dict = info.getDictionary();
List l = dict.keyList();
for (Object o : l) {
    //System.out.println(o.toString() + " " + dict.getString(o));
    System.out.println(o.toString());
}

// look at the document catalog
PDDocumentCatalog cat = doc.getDocumentCatalog();
System.out.println("Catalog:" + cat);

List<PDPage> lp = cat.getAllPages();
System.out.println("# Pages: " + lp.size());
PDPage page = lp.get(4);
System.out.println("Page: " + page);
System.out.println("\tCropBox: " + page.getCropBox());
System.out.println("\tMediaBox: " + page.getMediaBox());
System.out.println("\tResources: " + page.getResources());
System.out.println("\tRotation: " + page.getRotation());
System.out.println("\tArtBox: " + page.getArtBox());
System.out.println("\tBleedBox: " + page.getBleedBox());
System.out.println("\tContents: " + page.getContents());
System.out.println("\tTrimBox: " + page.getTrimBox());
List<PDAnnotation> la = page.getAnnotations();
System.out.println("\t# Annotations: " + la.size());
Kaleb Pederson
sumber
4

Ada juga opsi lain. Adobe Acrobat Pro juga dapat menampilkan struktur pohon internal PDF.

  1. Buka Preflight
  2. Pergi ke Opsi (pojok kanan atas)
  3. Struktur PDF Internal

Di atas Adobe Acrobat Pro juga dapat menampilkan struktur internal Font Dokumen dalam PDF sebagian besar "penampil struktur pohon PDF" lainnya tidak memiliki fitur ini

masukkan deskripsi gambar di sini

Vadimo
sumber
2
Inilah yang dijelaskan @ mark-stephens dalam jawaban yang diterima.
koppor
3
Jawaban @ mark-stephens hanya menautkan ke entri blog yang mungkin hilang di masa mendatang (dan tidak disarankan di SO). vadimo sebenarnya memberikan jawabannya.
Starfish
1

Jika Anda ingin bekerja secara terprogram dari dalam Python, pdfminer adalah pilihan yang bagus. Ini memungkinkan Anda untuk bekerja dengan struktur PDF di memori sebagai hierarki objek atau membuat serial sebagai XML.

WP McNeill
sumber
-6

Saran saya adalah Foxit PDF Reader yang sangat membantu untuk melakukan pekerjaan pengeditan teks penting pada file pdf.

nifCody
sumber
6
Saya tidak dapat menemukan cara di Foxit Reader untuk melihat struktur internal PDF yang mirip dengan PDF Inspector (direferensikan dalam pertanyaan)
bmaupin