İçeriğe geç
getnextpdf.com

PDF 2.0: neler değişti

PDF 2.0, ISO 32000-2 standardıdır. Bu, Adobe yerine tamamen ISO’ya ait olan ilk PDF spesifikasyonudur. Çarpıcı bir yeniden icattan çok, büyük ölçüde 1.7’nin pekiştirilmesi ve düzene sokulmasıdır. Bu sayfa, gerçekte nelerin değiştiğini, bu değişikliklerden hangilerini pratikte hissedeceğinizi ve NextPDF uygulamasının, bir profil gerektirdiğinde eski dosya yapısını yazabilmeyi sürdürürken varsayılan olarak 2.0 temel düzeyini nasıl hedeflediğini ele alır.

“PDF 2.0” ifadesi, bambaşka bir biçim varmış izlenimi verir. Oysa öyle değildir. Bir 2.0 dosyası, 1.7 ile aynı nesne modelini, xref’i ve trailer’ı kullanır; bu yüzden gerçek değişiklikler kolayca küçümsenir. Sorun çıkaran değişiklikler, göz alıcı yeni özellikler değildir. Bunlar sıkılaştırmalardır: 1.7’de isteğe bağlı olan ama artık beklenen kurallar ve sessizce kaldırılan özellikler. Tamamen geçerli bir 1.7 dosyası olan bir belge, görünür tek bir fark olmadan uyumsuz bir 2.0 belgesi olabilir.

Diğer önemli nokta yöndür. NextPDF bir PDF 2.0 motorudur. 2.0’ın ne beklediğini ve 1.7’den nerelerde bilinçli olarak ayrıldığını bildiğinizde, motorun neden bazı şeyleri reddettiğini, yazı tiplerini neden daha katı biçimde gömdüğünü ve neden varsayılan olarak tablo yerine çapraz başvuru akışı kullandığını gerekçelendirebilirsiniz.

  • PDF 2.0 = ISO 32000-2; ISO’ya aittir, 1.7’yi (yerine geçmeden) temel alır.
  • Başlık %PDF-2.0 olur; uyumlu bir üretici, sürümü başlıkta veya katalog /Version girişinde 2.0 olarak belirtir.
  • Dosya yapısının çoğu değişmemiştir — aynı dolaylı nesneler, aynı trailer, aynı startxref/%%EOF düzeni.
  • Çapraz başvuru akışı, doğal 2.0 varsayılanıdır; klasik 20 baytlık tablo geçerliliğini korur ve bazı PDF/A profilleri için hâlâ gereklidir.
  • 2.0 kimi şeyleri ekler (örneğin, daha zengin ilişkili dosya ve belge bölümü yapısı, AES-256-GCM uzantısı aracılığıyla daha güçlü şifreleme) ve kimi şeyleri kaldırır (bazı yapı etiketleri; sıkılaştırılmış yazı tipi gömme beklentileri; kullanımdan kaldırılan CJK karakter koleksiyonları).
  • NextPDF varsayılan olarak 2.0’ı hedefler ve bir uyumluluk profili gerektirdiğinde 1.7/1.4 yapısını seri hâle getirebilir.

Sürüm, tek bir yerde ifade edilen bir karardır: seri hâle getirme stratejisi.

Pdf20StreamStrategy (src/Writer/Pdf20StreamStrategy.php) %PDF-2.0 başlığını yazar, katalog sürümü olarak /2.0 bildirir ve sıkıştırılmış bir çapraz başvuru akışı üretir. Ayrıca 2.0 yazı tipi sıkılaştırmasını doğrudan uygular. 2.0 profili altında, gömülü olmayan standart bir Type 1 yazı tipi için yalnızca uyarı vermek yerine bir kuralı zorunlu kılabilir, çünkü standart artık bu yazı tiplerinin gömülü olmasını bekler. İki tablo stratejisi (Pdf17TableStrategy, Pdf14TableStrategy), tam olarak bazı profiller eski biçime ihtiyaç duyduğu için vardır. PDF/A-2/-3 geleneksel çapraz başvuru tablosunu zorunlu kılar ve PDF/A-1 buna ek olarak nesne ve çapraz başvuru akışlarını yasaklar. Üç stratejinin tümü, tek bir PdfSerializationStrategy arabirimini uygular; bu nedenle yazıcı, bu ayrımın üst katmanlarında aynı kalır. Yalnızca trailer/xref biçimi değişir.

Daha güçlü şifreleme de aynı bilinçli yaklaşımla bağlanmıştır. PdfXrefWriter (src/Writer/PdfXrefWriter.php), bir AES-256-GCM tercihini (2.0 için ISO/TS 32003 uzantısı) şifreleme sözlüğüne aktarır; böylece üretilen işleyici sürümü ve şifre modu girişleri, gerçekte üretilen baytlarla eşleşir. Motor bir şifreyi duyurup başka bir şifre yazmaz.

Genel tasarım şöyledir. 2.0 varsayılandır. Eski yapıya yalnızca bilinçli olarak geçilebilir; kazara geçilemez. 2.0 bir kuralı sıkılaştırdığında, NextPDF bunu sessizce gevşetmek yerine sıkılaştırılmış sınırı koruyabilir.

  1. Step 1 of 3: ISO 32000-1 PDF 1.7 — the Adobe-authored base, adopted by ISO
  2. Step 2 of 3: ISO 32000-2 PDF 2.0 — ISO-owned consolidation, tightening, and additions
  3. Step 3 of 3: ISO/TS 32003 AES-256-GCM (AESV4) — an encryption extension to PDF 2.0
NextPDF uygulamasının üzerine gerekçelendirme yaptığı PDF sürüm soyağacı: PDF 1.7 ISO temeli oldu, ISO 32000-2 PDF 2.0'dır ve ISO/TS 32003, 2.0 sürümünü AES-256-GCM şifrelemesiyle genişletir.

Bir 2.0 dosyası ile bir 1.7 dosyası arasındaki tek görünür fark çoğu zaman iki satırdır — başlık ve katalog sürümü — bunların arkasındaki uyumluluk kuralları önemli ölçüde farklı olsa da.

%PDF-2.0 % was %PDF-1.7
...
1 0 obj
<< /Type /Catalog /Version /2.0 % catalog states 2.0; overrides header if later
/Pages 2 0 R >>
endobj
...
% Cross-reference STREAM is the 2.0 default (was often a 20-byte table)
99 0 obj
<< /Type /XRef /Size 100 /W [1 2 2] /Filter /FlateDecode /Root 1 0 R >>
stream
<binary xref entries>
endstream
endobj
startxref
12345
%%EOF

Bir okuyucu %PDF-2.0 ve /Version /2.0 görür. Görmediği — ama bir uyumluluk denetleyicisinin gördüğü — şey, bu dosyanın artık standart yazı tiplerini gömmek ve 2.0’ın kaldırdığı yapı etiketlerini kullanmamak zorunda olduğudur. Bayt düzeyindeki fark azdır. Kural düzeyindeki fark az değildir.

Tuzak şudur: “PDF 2.0 çıktısı veriyoruz, dolayısıyla öncekinden daha uyumluyuz.” %PDF-2.0 yazmak bir iddiadır, garanti değildir. Bir dosya, 2.0 başlığını taşıyabilir ve yine de 2.0’ı ihlal edebilir — gömülü olmayan standart bir yazı tipine başvurarak ya da 2.0’ın kaldırdığı bir özelliği kullanarak — hem de tam 1.7 altında hoş görülen şekilde. Sürüm işaretçisi, dosyanın ölçüldüğü çıtayı yükseltir. Ancak dosyayı kendi başına bu çıtanın üzerine çıkarmaz. Tersi yöndeki hata ise, başlığı değiştirince bir 1.7 dosyasının 2.0 olarak çalıştığını varsaymaktır: dosya genellikle aynı biçimde işlenir ve uyumluluğu sağlayamaz, çünkü sıkılaştırmalar görünmez olsalar da gerçektir.

2.0 temel düzeyini hedeflemek, NextPDF’in varsayılan olarak 2.0 dosya yapısını kullandığı ve 2.0’ın sıkılaştırılmış kurallarını koruyabildiği anlamına gelir. Bu, her isteğe bağlı 2.0 özelliğinin uygulandığı anlamına gelmez; bir 2.0 başlığı üretmenin de bir belgeyi PDF/A, PDF/UA ya da başka herhangi bir profile karşı onayladığı anlamına gelmez. Bunlar, temel spesifikasyonun üzerine katmanlanmış, her biri kendi doğrulamasına sahip, ayrı ve daha katı uyumluluk hedefleridir.

Bu sayfa, sürüm farklarına yönelik pratik bir rehberdir; ISO 32000-2 ile 32000-1 karşılaştırmasının kapsamlı bir değişiklik günlüğü değildir. Belirli bir 2.0 özelliği ya da kullanımdan kaldırma motor davranışını yönettiğinde, ilgili davranış kendi maddesine bağlanır. Bu sayfa, madde düzeyindeki her farkı tek tek saymak yerine genel görünümü çizer.

PDF 2.0, 1.7 okuyucularıyla geriye dönük uyumlu mudur? Değişmemiş yapı söz konusu olduğunda büyük ölçüde uyumludur. Yeni 2.0 özellikleri genellikle, eski bir okuyucunun anlamadığı şeyi yok sayabileceği biçimde tasarlanmıştır. Ancak yalnızca 2.0’a özgü bir özellik, bir 1.7 okuyucusu tarafından desteklenmez.

Başlık mı yoksa katalog /Version girişi mi üstün gelir? Katalog /Version girişi, başlıktan daha sonraki bir sürümü belirttiğinde önceliğe sahiptir. Bu, artımlı bir güncellemenin başlığı yeniden yazmadan bir dosyanın sürümünü yükseltmesini sağlayan şeydir.

NextPDF neden varsayılan olarak tablo yerine çapraz başvuru akışı kullanır? Çapraz başvuru akışı, doğal PDF 2.0 mekanizmasıdır — derli topludur ve sıkıştırılmış nesneleri dizinleyebilir. 20 baytlık tablo, bir profil (özellikle bazı PDF/A düzeyleri) gerektirdiğinde hâlâ yazılır.

  • Bir PDF gerçekte nedir — PDF 2.0’ın 1.7’den koruduğu nesne modeli ve xref.
  • Standartlar manzarası — ISO 32000-2 standardının NextPDF’in izlediği standartlar arasında nerede durduğu ve bir maddenin nasıl davranışa dönüştüğü.
  • Yazı tipleri: zor olan kısım — yazı tipi gömme sıkılaştırması, pratikte hissedilen 2.0 değişikliklerinden biridir.
  • PDF 2.0 — ISO 32000-2 olarak standartlaştırılan PDF spesifikasyonu; Adobe yerine ISO’ya ait olan ilk sürüm.
  • ISO 32000-1 — Adobe’nin PDF 1.7 sürümünün ISO standartlaştırması; PDF 2.0’ın üzerine inşa edildiği temel.
  • ISO/TS 32003 — PDF 2.0’ı AES-256-GCM (AESV4) şifrelemesiyle genişleten bir teknik spesifikasyon.
  • Katalog /Version — PDF sürümünü belirten belge katalog girişi; daha sonraki bir sürümü belirttiğinde başlığı geçersiz kılar.
  • Çapraz başvuru akışı — PDF 1.5+ / 2.0 çapraz başvuru mekanizması (/Type /XRef); NextPDF’in varsayılanıdır, eski profiller için klasik tablo da kullanılabilir.
  • Sıkılaştırma — 1.7’de isteğe bağlı ya da izin verilen, 2.0’da beklenen ya da gerekli olan ve görünümü değiştirmeden uyumluluğu değiştiren bir kural.