PDF dosyalarını incelemek için en iyi araç? [kapalı]


94

Tercihen bir araçla PDF dosyalarını nasıl inceleyebilirim?

Kullanım örneği: Programlı olarak PDF dosyaları oluşturmaya çalışıyorum (iText kullanarak). Belirli düzenleri elde etmekte sorun yaşıyorum, ancak metni istediğim şekilde düzenlenmiş (Word'den oluşturulmuş) PDF dosyalarım var. Bunu nasıl yaptıklarını tersine çevirmek istiyorum.

PDF Inspector iyi görünüyor, ancak Windows için bir şeyler arıyorum.


PDF Inspector, Java tabanlıdır, bu nedenle çoklu platformdur.
david.perez

2
Yine de Windows'ta çalışmıyor gibi görünüyor. Kavanoz tıklandığında hiçbir şey yapmıyor. Komut satırından çağrıldığında anlıyorumno main manifest attribute, in PDF Document Inspector.jar
Tom

1
@ david.perez java tabanlı ama elma sarılı, bu yüzden sadece elma dağıtımı. "PDF Document Inspector.app/Contents/Resources/Java/PDF Document Inspector.jar" kavanozu var ancak java -jar olarak başlatılamıyor "PDF Document Inspector.jar" Ayrıca birçok com.apple.cocoa var. * İçerir platforma özeldir. :(
andrej

Şimdi başarılı bir şekilde iText Rups, multiplatform ve Java tabanlı kullanıyorum.
david.perez

Yanıtlar:


18

Adobe Acrobat, PDF dosyalarını incelemenizi sağlayan çok güzel ancak oldukça iyi gizli bir moda sahiptir. Bunu https://blog.idrsolutions.com/2009/04/viewing-pdf-objects/ adresinde açıklayan bir blog yazısı yazdım.


Bu bir eklenti gerektiriyor gibi görünüyor; en azından Linux'ta Acrobat Reader 9.5.5'te mevcut değil.
Adam Spiers

3
@AdamSpiers, ön kontrol iletişim kutusu Adobe Reader değil, Adobe Acrobat'ın bir özelliğidir
IPSUS

... ve Acrobat ( eski adıyla Acrobat Exchange ) Linux için mevcut değil: - /
Adam Spiers

7
Ön kontrol iletişim kutusu aslında Adobe Acrobat Pro gerektirir. Adobe Acrobat Standard'da mevcut değildir.
Futal

1
Ve gerçekten kullanmak için bir UI kabusu.
Jon

87

Diğer yanıtlarda bahsedilen GUI tabanlı araçların yanı sıra, orijinal PDF kaynak kodunu farklı bir gösterime dönüştürebilen ve (şimdi değiştirilmiş dosyayı) bir metin düzenleyiciyle incelemenizi sağlayan birkaç komut satırı aracı vardır. Aşağıdaki tüm araçlar Linux, Mac OS X, diğer Unix sistemleri veya Windows üzerinde çalışır.

qpdf (benim favorim)

Sıkıştırılmış (çoğu) nesnenin akışlarını açmak ve ayrıca ObjStmnesneleri ayrı dolaylı nesnelere ayırmak için qpdf kullanın :

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

qpdfkendisini "PDF dosyalarında yapısal, içeriği koruyan dönüştürmeler" yapan bir araç olarak tanımlıyor .

Ardından uncompressed-qpdf.pdf, en sevdiğiniz metin düzenleyicide dosyayı açın + inceleyin . Önceden sıkıştırılmış (ve dolayısıyla ikili) baytların çoğu artık düz metin olacaktır.

mutool

Orada da mutoolbirlikte geliyor komut satırı aracı MuPDF (aynı şirket tarafından yapılan Ghostscript'e kardeş ürünüdür, PDF görüntüleyici Artifex ). Aşağıdaki komut aynı zamanda akışları açar ve bir metin düzenleyici aracılığıyla incelemeyi daha kolay hale getirir:

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

podofouncompress

PoDoFo , PDF formatıyla çalışmak için bir FreeSoftware / OpenSource kitaplığıdır ve dahil olmak üzere birkaç komut satırı aracı içerirpodofouncompress. PDF akışlarını açmak için şu şekilde kullanın:

podofouncompress orig.pdf uncompressed-podofo.pdf

peepdf.py

PeePDF , PDF dosyalarını keşfetmenize yardımcı olan Python tabanlı bir araçtır. Orijinal amacı PDF tabanlı kötü amaçlı yazılımların araştırılması ve incelenmesiydi, ancak tamamen zararsız PDF dosyalarının yapısını araştırmayı da yararlı buluyorum.

Bir PDF'de bulunan nesnelere ve akışlara "göz atmak" için etkileşimli olarak kullanılabilir.

Burada bir kullanım örneği vermeyeceğim, sadece belgelerine bir bağlantı vereceğim:

pdfid.py ve pdf-parser.py

pdfid.pyve Didier Stevens'ınpdf-parser.py iki PDF aracıdır Python ile yazılmış .

Geçmişleri de kötü niyetli kişilerin araştırılmasına yardımcı olmaktır. PDF'leri - ancak aynı zamanda zararsız PDF dosyalarının yapısını ve içeriğini analiz etmeyi de faydalı buluyorum.

PDF nesnesinin sıkıştırılmamış akışını nasıl çıkaracağıma bir örnek. 5 * .dump dosyasına:

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

Son notlar

  1. Lütfen bir PDF içindeki bazı ikili parçaların sıkıştırılamaz (veya insan tarafından okunabilir ASCII koduna çözülebilir) olmadığına dikkat edin, çünkü bunlar PDF'lerin içine gömülüdür ve yerel formatlarında kullanılır. Bu tür PDF parçaları, JPEG görüntüleri, yazı tipleri veya ICC renk profilleridir.

  2. Eğer araç ve verilen komut satırı örneklere yukarıda karşılaştırırsanız, yaptıklarını keşfedeceksiniz DEĞİL tüm özdeş çıktılar üretirler. Bunları kendi başlarına farklılıkları açısından karşılaştırma çabası, PDF sözdiziminin ve dosya biçiminin doğasını daha iyi anlamanıza yardımcı olabilir.


42

Kullandığım iText rups Linux (okuma ve güncellenmesi PDF Syntax'i). Java ile yazıldığı için Windows'ta da çalışıyor. PDF dosyasındaki tüm nesnelere bir ağaç yapısında göz atabilirsiniz. Ayrıca denetlemeyi kolaylaştırmak için Flate kodlu akışların kodunu anında çözebilir.

İşte bir ekran görüntüsü:

iText RUPS ekran görüntüsü


9
java -jar itext-rups-5.5.6.jar-> Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: com/itextpdf/text/Version- Bu şeyi nasıl çalıştıracaksın? Düzenleme: Anladım. SourceForge tarafından sunulan varsayılan dosyayı indirmemelisiniz, bağımlılıkları içeren .jar'ı indirmelisiniz.
Zero3

2
@ Zero3 aynı şeye rastladı. Yorumun için teşekkürler.
Sam

1
@KurtPfeifle Tamamen katılıyorum. Ne yazık ki, pek çok yazılım (bunun gibi!) Yalnızca SourceForge aracılığıyla edinilebilir çünkü bakımcı projeyi henüz başka bir yere taşımadı ve asla yapmayabilir. Bu günlerde SourceForge'dan herhangi bir şey indirirken gerçekten çok dikkatli olmalısın ...
Zero3

7
Evet - Windows kullanıcıları için derlenmiş bir jar ve hatta bir exe olarak. Bkz. Github.com/itext/rups/releases/latest
Amedee Van Gasse

1
@AmedeeVanGasse Bu yanıttaki ekran görüntüsü sayfanın bir görünümünü gösterir (belge ağacı ile xref sekmesi arasında). Bu görünümü Windows'ta v5.5.9'da nasıl görüntüleyebilirim?
iPDFdev


5

Ben kullandım PDFBox iyi bir başarı ile. Aşağıda, kodun nasıl göründüğünün bir örneği (0.7.2 sürümünden itibaren) verilmiştir ve muhtemelen sağlanan örneklerden birinden gelmiştir:

// 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());

4

Başka bir seçenek daha var. Adobe Acrobat Pro, PDF'nin dahili ağaç yapısını da görüntüleyebilir.

  1. Ön Kontrolü Aç
  2. Seçeneklere gidin (sağ üst köşe)
  3. Dahili PDF Yapısı

Adobe Acrobat Pro, PDF'deki Belge Yazı Tiplerinin dahili yapısını da görüntüleyebilir, diğer "PDF ağaç yapısı görüntüleyicilerin" çoğu bu seçeneğe sahip değildir

görüntü açıklamasını buraya girin


2
Bu, @ mark-stephens'in kabul edilen cevapta tanımladığı şeydir.
koppor

3
@ mark-stephens'in yanıtı, yalnızca gelecekte kaybolabilecek (ve SO'da tavsiye edilmeyen) bir blog gönderisine bağlantı verir. vadimo aslında cevabı sağlıyor.
Starfish



1

Python içinden programlı olarak çalışmak istiyorsanız, pdfminer iyi bir seçenektir. Bir nesne hiyerarşisi olarak bellekteki PDF yapısı ile çalışmanıza veya XML olarak serileştirmenize olanak tanır.


-6

Önerim, pdf dosyası üzerinde önemli metin düzenleme çalışmaları yapmak için çok yararlı olan Foxit PDF Reader .


6
Foxit Reader'da, PDF Inspector'a benzer bir PDF'nin dahili yapısını görüntülemek için herhangi bir yol bulamadım (soruda başvurulmaktadır)
bmaupin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.