it-swarm-tr.com

Bir yapısı PDF dosya?

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 :(

57

İşte Adobe'nin referans materyaline bir link

http://www.Adobe.com/devnet/pdf/pdf_reference.html

PDF yapısının değil, sadece sunumla ilgili olduğunu bilmelisin. Ayrıştırma kolay gelmeyecek.

38
minty

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.

22
danio

Yapının anlaşılmasında yardımcı olmak için GNU PDF 'ye giriş yaptım. Kolayca okunabilen example PDF dosya 'yı tamamen ayrıntılı bir şekilde tarif eder.

Diğer faydalı linkler:

20
Jeff Moser

İşte ham PDF 1.7 'nin referansı ve işte bir makale PDF' nin yapısını tanımlayan dosyası. Vim kullanıyorsanız, pdftk eklentisi , belgeyi çok daha az ham bir formda ve pdftk yardımcı programının (ve GPL kaynağının) kendisini keşfetmek için iyi bir yol belgeleri ayırmak için harika bir yoldur.

10
jmah

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ıç.

7
Noran

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.

6
Josh Albert
3
Peter Teoh

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.

3
codingscientist

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.

2
Chris Dolan

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.

2
Daniel Kim

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.

 enter image description here

0
juFo

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.

0
keithchristian