PDF Dosya Formatı Açıklaması: Yapı, Katmanlar ve Standartlar
Bir PDF'in içinde aslında ne bulunur? Dört fiziksel bölümü (başlık, gövde, xref, treyler), altı içerik katmanını (metin, resimler, yazı tipleri, açıklamalar, vektörler, imzalar), meta verileri ve bunların üzerine inşa edilmiş ISO standartlarını (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT) kapsayan etiketli bir diyagram ve sözlük.
Bir PDF tek bir şey değildir. Belirli bir yapıya sahip ikili bir kapsayıcı, o kapsayıcının içine yığılmış içerik katmanları kümesi ve temel spesifikasyonun üzerine inşa edilmiş bir ISO standartları ailesidir. Birini hex düzenleyici ile açtığınızda yapı ilk birkaç satırda düz metin olarak görünür. Birini görüntüleyici ile açtığınızda katmanlar tek bir sayfa olarak birlikte işlenir.
Bu kılavuz etiketli bir referanstır: fiziksel dosya yapısı, bir gövdenin tuttuğu içerik katmanları, her şeyi çevreleyen meta veriler ve belirli kullanım durumları için onu kısıtlayan standartlar (PDF/A, PDF/X, PDF/UA, PDF/E, PDF/VT).

Bu diyagramı blogunuzda kullanmak ister misiniz? Bu yerleştirme kodunu kopyalayın:
Dört Fiziksel Bölüm
Disk üzerindeki her PDF, bu sırada aynı dört bölümlü yapıya sahiptir:
1. Başlık (Header)
Dosyanın ilk satırı. Her zaman %PDF- ile başlar ve ardından bir sürüm numarası gelir:
%PDF-1.7Sürümler 1.0 (1993'te yayınlandı) ile 2.0 (2017'de yayınlandı, güncel) arasındadır. Başlığı, FTP ve diğer taşıma araçlarına bunun ikili bir dosya olduğunu bildiren ikili bayt içeren bir yorum satırı izler.
2. Gövde - Dolaylı Nesneler (Body - Indirect Objects)
Dosyanın büyük kısmı. Her sayfa, yazı tipi, resim, açıklama ve form alanı numaralandırılmış dolaylı bir nesnedir:
1 0 obj
<< /Type /Catalog /Pages 2 0 R >>
endobj
2 0 obj
<< /Type /Pages /Kids [3 0 R] /Count 1 >>
endobj
3 0 obj
<< /Type /Page /Parent 2 0 R /Contents 4 0 R /Resources << ... >> >>
endobjHer nesnenin bir kimliği ( 0 obj öncesindeki sayı), bir üretim numarası (0, artımlı güncellemeler için kullanılır) ve sözlükler için << ve >> arasında veya ikili akışlar (resim verileri, yazı tipi verileri, sıkıştırılmış içerik) için stream ve endstream arasında bir yükü vardır.
Nesneler, <id> <gen> R söz dizimini kullanarak birbirine başvurur (örneğin, 3 0 R, "nesne 3, üretim 0" anlamına gelir). Bir sayfanın kullandığı yazı tipine nasıl başvurduğu veya bir kataloğun sayfa ağacının köküne nasıl başvurduğu budur.
3. Çapraz Başvuru Tablosu (xref)
Bayt ofseti arama tablosu. Gövdedeki her nesne için xref, dosyada mutlak bayt konumunu kaydeder:
xref
0 6
0000000000 65535 f
0000000017 00000 n
0000000089 00000 n
0000000172 00000 n
0000000299 00000 n
0000000453 00000 nPDF'leri rastgele erişilebilir yapan budur. Bir görüntüleyici xref'i okuyabilir, doğrudan 3 numaralı nesnenin bayt ofsetine atlayabilir ve dosyanın geri kalanını ayrıştırmadan o sayfayı işleyebilir. Tek bir bölümün PDF'lerinin, kaynak dosya 500 sayfa olsa bile anında açılmasının nedeni budur.
4. Treyler (Trailer)
Son bölüm. Ayrıştırıcıya xref'in nerede bulunacağını ve kök nesnenin hangisi olduğunu söyler:
trailer
<< /Size 6 /Root 1 0 R /Info 7 0 R >>
startxref
1893
%%EOFstartxref değeri, xref tablosunun bayt ofsetidir. %%EOF işareti, dosyanın tam sonunu belirtir. Treylerler, artımlı güncellemeleri mümkün kılan şeydir: sona yeni bir xref + treyler eklemek, tüm dosyayı yeniden yazmadan nesne eklemenize olanak tanır.
Altı İçerik Katmanı
Gövdenin içinde içerik altı katman türünde depolanır. İşlenen her PDF sayfası bu katmanların bir bileşimidir:
1. Metin (Text)
Metin dizileri değil, glif konumu komutları ve yazı tipi başvuruları. Bir PDF, "burada A harfini çiz" yerine "F3 yazı tipinden 42 numaralı glifi (120, 540) konumunda çiz" gibi talimatlar depolar. Metnin seçilebilir ve aranabilir olmasının nedeni budur: görüntüleyici, glif kimliklerini bir ToUnicode eşlemesi (veya CJK yazı tipleri için bir CMap) aracılığıyla Unicode kod noktalarına geri eşler.
Bir metnin ToUnicode eşlemesi eksik olduğunda, klasik "seçilebilir metni olan ancak çöp olarak kopyalanan PDF" sorununu yaşarsınız. Metin görünürdür, ancak glif-Unicode eşlemesi bozuk veya eksiktir.
2. Resimler (Images)
Birkaç biçimden birinde yerleşik akışlar olarak depolanır:
- JPEG (DCTDecode filtresi): fotoğraflar, en yaygın
- JPEG2000 (JPXDecode): daha yüksek sıkıştırma, daha az yaygın
- PNG eşdeğeri (FlateDecode + Predictor): ekran görüntüleri, çizgi sanatı
- CCITT Group 4 (CCITTFaxDecode): siyah-beyaz taranmış metin, arşiv taramalarında kullanılır
- JBIG2 (JBIG2Decode): iki seviyeli görüntüler, OCR'li belgelerde yaygın
Resimler, diğer içerikleri etkilemeden örneklenmiş, yeniden sıkıştırılmış veya değiştirilmiş olabilir.
3. Yazı Tipleri (Fonts)
Tam yazı tipi programları, alt küme (yalnızca kullanılan glifler dahil) olarak yerleştirilir veya adla başvurulur (görüntüleyicinin sisteminde yüklü olmalıdır). Alt küme varsayılandır - dosya boyutunu önemli ölçüde azaltır. Desteklenen yazı tipi biçimleri: Type1, TrueType, OpenType ve CIDFont (CJK için).
Bir yazı tipine başvurulduğunda ancak yerleştirilmediğinde ve görüntüleyicinin sisteminde yüklü olmadığında, görüntüleyici benzer bir yazı tipiyle değiştirir - bu genellikle yanlış görünür. PDF/A, bunun önlenmesi için tüm yazı tiplerinin yerleştirilmesini gerektirir.
4. Açıklamalar (Annotations)
Vurgular, yorumlar, bağlantılar, damgalar, filigranlar ve form alanları hepsi açıklamadır. Sayfa içeriğinin üzerine katmanlanır ve alttaki sayfayı değiştirmeden eklenebilir, düzenlenebilir veya kaldırılabilir.
Form alanları özel bir durumdur: etkileşimli bir widget açıklaması (görünür kısım) artı bir alan sözlüğü (veri kısmı). Bir formu doldurup kaydettiğinizde, yalnızca alan sözlükleri değişir - sayfanın kendisi dokunulmaz.
5. Vektör Grafikleri (Vector Graphics)
PostScript benzeri operatörlerle (moveto, lineto, curveto) çizilen çizgiler, şekiller, eğriler ve yollar. Kalite kaybı olmadan sonsuz ölçeklenir. PDF'lerdeki çoğu CAD dışa aktarma, grafik ve diyagram vektör grafikleridir.
6. Dijital İmzalar (Digital Signatures)
Dosyanın bayt aralıklarına bağlı PKI destekli imzalar. İmza sözlüğü "0 ila 12.547 arasındaki baytlar ve 14.200'den dosya sonuna kadar olan baytlar imzalanmıştır" belirtir - ortadaki küçük bir aralık kendi imza değeri için ayrılmıştır. İmzalanan bayt aralıklarında yapılacak herhangi bir değişiklik, PDF'nin imzalama sonrası kurcalamayı nasıl algıladığını sağlayan imzayı geçersiz kılar.
Bazı PDF'ler, artımlı güncellemeler olarak katmanlanmış birden fazla imzaya sahiptir - her imzalayan, zinciri koruyarak aldığı dosya haliyle dosyayı imzalar.
Meta Veriler: İki Paralel Sistem
PDF'nin genellikle anlaşmazlığa düşen iki meta veri sistemi vardır:
Standart /Info Sözlüğü
Treylerde saklanır. Alanlar: Title, Author, Subject, Keywords, Creator (belgeyi oluşturduğunuz uygulama), Producer (PDF'yi oluşturan uygulama), CreationDate, ModDate. Herhangi bir PDF aracıyla okunması kolay düz metin dizeleri.
XMP Meta Veri Akışı
Daha zengin şemaları destekleyen ayrı bir XML akışı (Adobe XMP, RDF/XML tabanlı): Dublin Core, IPTC, özel alana özgü şemalar (renk profilleri, telif hakkı kayıtları, el yazması sürümleri).
Modern PDF oluşturucular her ikisine de yazar. Eski PDF'lerin yalnızca /Info'su vardır. Bazı PDF'lerin önceki bir sürüme ait güncel olmayan /Info'su ve yakın zamanda yapılan bir düzenlemeden doğru XMP'si vardır - veya tam tersi. PDF'leri uyumluluk veya adli inceleme için denetlerken her ikisini de kontrol edin.
PDF Üzerine İnşa Edilmiş ISO Standartları
Temel PDF spesifikasyonu ISO 32000'dir. Birkaç türetilmiş standart, belirli kullanım durumları için PDF'yi kısıtlar:
| Standart | Kullanım | Kısıtlamalar |
|---|---|---|
| PDF/A | Uzun süreli arşivleme | Tüm yazı tipleri yerleştirilmiş, JavaScript yok, ses/video yok, cihazdan bağımsız renk uzayları. Uyumluluk seviyeleri: PDF/A-1, A-2, A-3 (dosya eklerine izin verir) |
| PDF/X | Baskı üretimi | CMYK renk, yerleştirilmiş yazı tipleri ve renk profilleri, şeffaflık yok (PDF/X-1a) veya kontrollü şeffaflık (PDF/X-4) |
| PDF/UA | Erişilebilirlik | Etiketlenmiş yapı ağacı, dil meta verileri, resimler için alternatif metin, mantıksal okuma sırası |
| PDF/E | Mühendislik | 3D modeller (U3D, PRC formatları), CAD'e özgü meta veriler |
| PDF/VT | Değişken işlemeli baskı | Yüksek hacimli kişiselleştirilmiş posta gönderileri için optimize edilmiştir |
Bir PDF, birden fazla standarda aynı anda uyabilir - PDF/A-2u (Unicode eşlemeli arşivleme) artı PDF/UA (erişilebilirlik), devlet ve hukuk arşivleri için yaygındır.
Lineerleştirilmiş PDF'ler (Web Optimize Edilmiş)
"Lineerleştirilmiş" veya "web optimize edilmiş" bir PDF, gövdeyi yeniden sıralayarak ilk sayfanın nesnelerinin dosyanın erken kısımlarında görünmesini sağlar. Bir web görüntüleyici, tüm dosyayı beklemek yerine yalnızca ilk ~50 KB'yi indirdikten sonra sayfa 1'i işleyebilir. Treyler öne kopyalanır, artı her sayfanın nerede başladığını görüntüleyiciye bildiren bir ipucu tablosu bulunur.
Çoğu modern PDF oluşturucu, "Web için Kaydet" seçeneği olarak lineerleştirmeyi destekler. Format, yavaş bağlantılarda hızlı ilk sayfa işleme karşılığında dosya boyutuna %2-5 ekler.
Şifreleme ve İzinler
PDF'ler bir parola (veya sertifika) ile şifrelenebilir ve ayrıntılı izinler verilebilir: yazdırma, metin kopyalama, değiştirme, form doldurma, erişilebilirlik için çıkarma. Şifreleme, treylerin /Encrypt sözlüğünde saklanır.
Şifreleme güçleri gelişti: RC4 40-bit (erken PDF'ler, bugün kolayca kırılır), RC4 128-bit (hala zayıf), AES-128, AES-256. Orijinal Acrobat 5 RC4 uygulaması 2001'de halka açık olarak kırıldı; modern PDF şifrelemesi (AES-256, PDF 2.0) güçlü parolalarla kullanıldığında sağlamdır.
Not: "İzinler" tavsiyedir. Onlara saygı duyan bir görüntüleyici onları uygular. Onları görmezden gelen bir görüntüleyici (veya şifrelemeyi kaldıran bir araç) uygulamaz.
PDFSub PDF'leri Nasıl Okur
PDFSub, taranmış belgeler için PaddleOCR'ın yanı sıra Rust'ın PDFium bağlayıcısını (Chromium'un PDF görüntüleyicisine güç veren aynı motor) kullanarak PDF'leri işler. Tam mimari ayrıntıları ve bulut tabanlı araçlarla karşılaştırması için Tarayıcı vs Bulut PDF Güvenliği bölümüne bakın.
Yukarıda açıklanan yapıyı koruyarak PDF'leri başka biçimlere dönüştürmek için:
-
PDF'den Excel'e - metin + tabloları çıkarır, koordinatları korur
-
OCR PDF - taranmış PDF'lere aranabilir bir metin katmanı ekler
-
PDF'den Word'e - metni düzenlenebilir paragraflara yeniden akıtır
-
PDF Sıkıştır - resimleri örnekler, yazı tiplerini alt kümelere ayırır
Özellikle arşiv iş akışları için PDF'yi PDF/A'ya Dönüştürme bölümüne bakın.
Daha Fazla Okuma
- ISO 32000-2 (PDF 2.0 spesifikasyonu) - yetkili referans, ücretli
- Adobe PDF Referans Arşivleri - PDF 1.7 için ücretsiz referans
- PDF Association - endüstri çalışma grubu, ücretsiz makaleler ve uyumluluk test dosyaları
PDF'ye özgü konular için: Avukatlar İçin PDF Uyumluluk Kılavuzu, PDF/A Dönüştürme Kılavuzu.