İçeriğe geç

PDF 2.0: neler değişti

Evidence: Standard-backed

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.

Sürüm bildirimi normatiftir. Spec: ISO 32000-2, §7.5.2 uyumlu bir dosya yazan işlemcinin sürümü 2.0 olarak belirtmesi gerektiğini — başlıkta ya da katalog /Version girişi olarak — ve başlığın %PDF-1.n ya da %PDF-2.n olup ardından tek bir satır sonu işareti geldiğini belirtir. Spec: ISO 32000-2, §7.7.2 katalog /Version girişinin daha önceki bir başlık sürümünü geçersiz kıldığını ekler; bu da tam olarak artımlı bir sürüm yükseltmesini mümkün kılan şeydir. Evidence: Standard-backed

2.0’ın yeniden yazım değil, pekiştirme olduğu neleri koruduğundan anlaşılır: çapraz başvuru akışı (/Type /XRef), PDF 1.5 sürümünde tanıtılan ve 2.0 varsayılanı olarak sürdürülen aynı mekanizmadır ( Spec: ISO 32000-2, §7.5.8 ). Dolaylı nesne, trailer ve startxref yapısı, önceki sayfanın açıklamasından değişmemiştir.

Önemli değişiklikler kaldırmalar ve sıkılaştırmalardır. Standart, PDF 1.7 standart yapı ad alanında bulunan altı standart yapı öğesinin PDF 2.0 ad alanının parçası olmadığını kaydeder — Art, BlockQuote, TOC, Reference, BibEntry ve Code ( Spec: ISO 32000-2, Annex L.3 ; ad alanı farkları Spec: ISO 32000-2, §14.8.6 uyarınca tanımlanmıştır). Ayrıca on dört standart Type 1 yazı tipiyle ilgili kuralları da sıkılaştırır: PDF 1.0–1.7 bu yazı tiplerinin sözlüklerinde metrik girişlerinin atlanmasına izin verirken, 2.0 bu izni kaldırır ( Spec: ISO 32000-2, §9.6.2.1 ). Önceden tanımlanmış CJK karakter koleksiyonlarını da gözden geçirir. Örneğin, Adobe-Korea1, 2.0’da kullanımdan kaldırılmıştır. Adobe-KR eklenmiştir. Bunların hiçbiri mevcut bir sayfanın nasıl göründüğünü değiştirmez. Ama hepsi, sayfanın uyumlu olup olmadığını değiştirebilir.

KategoriÖrnekler (2.0 ile 1.7 karşılaştırması)Görünümü değiştirir mi?Neden önemli olduğu
DeğişmemişDolaylı nesneler, trailer, startxref/%%EOF, xref akışları2.0 aynı nesne modelini kullanır; araçların çoğu olduğu gibi kullanılabilir
EklenenDaha zengin ilişkili dosya / belge bölümü yapısı; AES-256-GCM şifrelemesi (ISO/TS 32003)HayırTercihe bağlı yeni yetenek; eski okuyucular tarafından güvenli biçimde yok sayılır
SıkılaştırılanStandart-14 yazı tiplerinin gömülü olması beklenir; metrikler artık atlanamazHayırGeçerli bir 1.7 dosyası, uyumsuz bir 2.0 dosyası olabilir
Kaldırılan1.7 ad alanındaki altı yapı öğesi (Art, BlockQuote, TOC, Reference, BibEntry, Code); kullanımdan kaldırılan CJK koleksiyonları (örneğin, Adobe-Korea1)HayırSessizdir: uyumluluğun yitirildiğini gösteren görünür hiçbir şey yoktur

Önemli PDF 2.0 değişiklikleri büyük ölçüde görünmezdir: isteğe bağlı eklemeler ve işlenmiş tek bir pikseli bile değiştirmeden uyumluluğu değiştiren sıkılaştırmalar ile kaldırmalar.

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.