Küçük bir proje için pdf dosyalarını ayrıştırmalı ve belirli bir bölümünü almalıyım (basit bir karakter zinciri). Bunu yapmak için python kullanmak isterdim ve istediğimi bir şekilde yapabilen bazı kütüphaneler buldum.
Fakat şimdi birkaç araştırmadan sonra, pdf dosyasının asıl yapısının ne olduğunu merak ediyorum, çevrimiçi ortamda herhangi bir şey veya bir açıklama olup olmadığını bilen var mı? Adobe’de bir bağlantı buldum ama bu ölü bir bağlantı gibi görünüyor :(
İşte Adobe'nin referans materyaline bir link
PDF yapısının değil, sadece sunumla ilgili olduğunu bilmelisin. Ayrıştırma kolay gelmeyecek.
PDF ile çalışmaya başladığımda PDF reference 'in gezinmesini çok zor buldum . Dosya yapısına genel bakışın sözdiziminde olduğunu ve Adobe’nin hangi Adobe’de olduğunu bilmenize yardımcı olabilir. Belge yapısını çağırmak, dosya yapısını değil, nesne yapısını oluşturur. Bu da sözdiziminde bulunur. Operatörlerin açıklaması Ek A'da gizlenmiştir - içerik akışlarında neler olduğunu anlamak için çok kullanışlıdır. Renk boşluklarıyla çalışma acınız varsa bunu Grafikler'de saklı bulacaksınız! Umarım bu işaretçiler bir şeyleri benden daha hızlı bulmanıza yardımcı olur.
Windows kullanıyorsanız, pdftron CosEdit , anlamanız için nesne yapısına göz atmanıza izin verir. Dosyayı incelemenizi sağlayan ancak kaydetmeyen ücretsiz bir demo var.
Diğer faydalı linkler:
Ben de hemen hemen aynı şeyi yapmaya çalışıyorum. PDF referansı okunması çok zor bir belgedir. Bu eğitimde bence daha iyi bir başlangıç.
Bu biraz ışık tutabilir: (PDF32000.book sayfa 11'den)
PDF sözdizimi, Şekil 1'de gösterildiği gibi dört bölüm olarak değerlendirilerek en iyi şekilde anlaşılır:
• Nesneler. PDF belgesi, küçük bir tür temel veri nesnesi grubundan oluşan bir veri yapısıdır. Alt fıkra 7.2, "Lexical Conventions", nesneleri ve diğer .__ yazmak için kullanılan karakter setini açıklar. sözdizimsel elemanlar. Fıkra 7.3, "Nesneler", nesnelerin sözdizimini ve temel özelliklerini açıklar. Madde 7.3.8, "Akış Nesneleri", en karmaşık veri türünün, stream nesne.
• Dosya yapısı. PDF dosya yapısı, nesnelerin bir PDF dosyada nasıl saklandığını, nasıl olduklarını belirler. erişildi ve bunların nasıl güncellendiğini. Bu yapı nesnelerin anlamlarından bağımsızdır. Alt- Madde 7.5, "Dosya Yapısı", dosya yapısını açıklar. 7.6 fıkrası, "Şifreleme", bir dosya seviyesi .__ dır. Bir belgenin içeriğini yetkisiz erişime karşı koruma mekanizması.
• Belge yapısı. PDF belge yapısı, temel nesne türlerinin İçin nasıl kullanıldığını belirtir. PDF belgesinin bileşenlerini temsil eder: sayfalar, yazı tipleri, ek açıklamalar vb. Fıkra 7.7, "Doküman Yapısı", genel doküman yapısını açıklar; daha sonraki maddeler detaylı bileşenlerin anlambilimi.
• İçerik akışları. Bir PDF içerik akışı, Görünümünü açıklayan bir dizi talimat içerir. bir sayfa veya başka bir grafik varlık. Bu talimatlar aynı zamanda nesne olarak temsil edilmekle birlikte kavramsal olarak kullanılmıştır. Belge yapısını temsil eden ve ayrı olarak tanımlanmış nesnelerden farklı. Fıkra 7.8, "İçerik Akışları ve Kaynakları", PDF içerik akışlarını ve bunlarla ilişkili kaynaklarını tartışıyor.
Bir PDF dosyada gezinmek, geçici bir çabadan biraz daha fazlasını gerektirecek gibi görünüyor.
Didier, PDF'yi ayrıştırmak için bir araca sahip:
veya burada:
http://blog.didierstevens.com/programs/pdf-tools/ / ilgili birçok pdf analiz aracını katalogladı.
Başka bir araç burada:
Python kullanarak PDF öğesini ayrıştırmak istiyorsanız, lütfen PDFMINER 'e bakın. Bu, PDF dosyalarını tarihe kadar ayrıştırmak için en iyi kütüphanedir.
PDF 'den metin çıkarmak zor bir sorundur çünkü PDF böyle bir düzen odaklı yapıya sahiptir. CPAN konusunda zor başarılı girişimin docs ve kaynak kodunu görebilirsiniz. PDF veri yapısı çok güzel ve iyi tasarlanmış, ancak yazmaktan okumak daha kolay.
Bazı ipuçlarını almanın bir yolu, boş bir sayfadan oluşan bir PDF dosyası oluşturmaktır. Bilgisayarımda CutePDF Writer var ve bir sayfalık boş bir Wordpad belgesi hazırladım. Bir .pdf dosyasına yazdırıldı ve sonra Not Defteri'ni kullanarak .pdf dosyasını açtı.
Ardından, bu dosyanın bir kopyasını kullanın ve ilginizi çekebilecek metin satırlarını veya bloklarını kaldırın, sonra Acrobat Reader'a yeniden yükleyin. Çalışan bir sayfalık bir PDF belge yapmak için ne kadar az bilgiye ihtiyaç duyulduğuna şaşıracaksınız.
Koddan PDF formu oluşturmak için bir elektronik tablo oluşturmaya çalışıyorum.
PDF dosyalarının ayrıntıları ve yapısı hakkında okumaya başlamak için PDF Kullanım kılavuzuna ihtiyacınız var. 1.7 sürümüyle başlamanızı öneririm.
Pencerelerde, PDF dosyalarının iç yapısını görmek için PDF Analyzer adlı ücretsiz bir araç kullandım. Bu, referans kılavuzunu okurken sizin anlamanıza yardımcı olacaktır.
PDF'den metin çıkarmak için bunu Linux, BSD, vb. Makinede deneyin veya Windows'ta Cygwin kullanın:
pdfinfo -layout some_pdf_file.pdf
some_pdf_file.txt adlı bir düz metin dosyası oluşturulur. PDF dosya düzeni ne kadar basitse, .txt dosyası o kadar kolay olur.
Onaltılık karakterler, .txt dosya çıktısında sıklıkla bulunur ve metin editörlerinde garip görünür. Bu onaltılık karakterler genellikle PDF'de kıvrık tek ve çift tırnak, madde işareti noktaları, kısa çizgiler vb. Anlamına gelir.
Onaltılık karakterlerin göründüğü bağlamı görmek için, bu grep komutunu çalıştırın ve kodların PDF'de hangi karakteri temsil ettiğini görmek için orijinal PDF'i el altında bulundurun:
grep -a --color=always "\\\\[0-9][0-9][0-9]" some_pdf_file.txt
Bu, belgedeki farklı sekizlik kodların benzersiz bir listesini sağlayacaktır:
grep -ao "\\\\[0-9][0-9][0-9]" some_pdf_file.txt|sort|uniq
Bu onaltılık karakterleri ASCII eşdeğerlerine dönüştürmek için grep, sed ve bc kombinasyonu kullanılabilir, yakında bunu yapmak için prosedürü göndereceğim.