PDF sürümüne göre kaydetme uyumluluğu
Sürüm 3.23.0, seçilen PDF kaydetme sürümünü tam kaydetmeler için sıkı bir çıktı sözleşmesi olarak ele alır. Bir uygulama SetInformation(0, "1.2"), "1.3", "1.4", "1.5", "1.6" veya "1.7" çağırdığında SaveToFile, SaveToString ve SaveToStream seçilen hedefle eşleşen çıktıyı yazar ya da çıktı yazmadan önce başarısız olur
Tam kaydetmeler Catalog /Version geçersiz kılmalarını kaldırır; böylece yüklenmiş bir belge etkin sürümü seçilen başlığın üstüne sessizce çıkaramaz. Daha düşük sürüm hedefleri desteklenmeyen Catalog /Extensions girişlerini de kaldırır, PDF 1.3 hedefleri ise belge bilgi sözlüğünü korurken Catalog /Metadata ve XMP Metadata stream'lerini atlar
Kaydetme ön denetimi, karma sürümlü bir dosya üretmek yerine bilinen sonraki sürüm özelliklerini reddeder. Denetlenen sınırlar PDF 1.3 sayfa kutularını, gömülü dosya stream'lerini, JavaScript eylemlerini, ICCBased ve DeviceN renk uzaylarını ve ToUnicode CMaps öğelerini; PDF 1.4 saydamlığını, Tagged PDF yapılarını, output intents öğelerini ve açıklama anahtarlarını; PDF 1.5 object stream'lerini, isteğe bağlı içeriği, XFA, page tabs, imza alanı append-only bayraklarını ve gelişmiş form alanı bayraklarını; PDF 1.6 UserUnit, OpenType font programlarını, 3D sözlüklerini, NChannel renk uzaylarını ve viewport verilerini; ayrıca PDF 1.7 RichMedia, Projection, Redaction, gelişmiş açıklamaları ve ETSI imza alt filtrelerini kapsar; Aynı kural kümesi annotation /CA opaklığını, JBIG2Decode, Metadata stream'lerini, belge düzeyindeki EmbeddedFiles name tree öğesini, JPXDecode, xref streams, Crypt filters, AESV2 crypt filters ve PDF 1.7 Requirements öğelerini de kapsar
PDF 1.7 Adobe extension-level gereksinimleri PDF 1.7 başlığından ayrı denetlenir. AESV3, AES-256, RichMedia, Projection, jeo-uzamsal sözlükler ve ETSI imza alt filtreleri, seçilen kaydetme hedefi kabul edilmeden önce yeterli bir Catalog /Extensions /ADBE /ExtensionLevel bildirimi taşımalıdır. Bu extension-level özellikleri üreten writer giriş noktaları, seçilen kaydetme hedefi PDF 1.7'ye yükseltilebildiğinde eşleşen extension bildirimini otomatik olarak ekler
v3.67.0'dan beri yükleyici tarafındaki içerik özellik algılaması lazy çalışır. Yüklenmiş belge hemen taranmaz; algılama, etkin sürüm veya yükleme zamanı özellik tanıları GetInformation(0/101/103), GetPDFUADiagnostics, SaveToFile, SaveToString, SaveToStream ya da ilişkili append-save yolları üzerinden ilk kez kullanıldığında çalışır. Bu tanıları hiç sorgulamayan ve hiç kaydetmeyen salt-okuma iş akışları taramayı tamamen atlayabilir
v3.67.1'den beri algılama taraması stream nesnelerini yüzeysel ayrıştırır. Nesne sözlüklerini ve stream sınıflandırmasını incelerken büyük stream gövdelerini atlar; böylece filtrelerin, alt türlerin, renk uzaylarının ve sürüm sınırlayan anahtarların algılanması eşdeğer kalır, büyük görüntü stream'leri ise taramaya artık baskın olmaz. Normal nesne okumaları ve her kaydetme yolu, çıktı gerektirdiğinde stream gövdesinin tamamını okumaya devam eder
v3.67.2'den beri açık kaydetme sürümü seçimleri lazy algılamaya göre önceliğini korur. Yüklenmiş bir belgede SetInformation(0, ...) ve LockSaveVersion, istenen sürümü uygulamadan önce bekleyen algılama snapshot'ını çalıştırır; bu nedenle daha sonraki bir kaydetme veya tanı sorgusu, seçilen hedefi çağıranın arkasından yükseltemez. Yeni oluşturulan belgeler yükleyici tarafı algılama için armed edilmez; bu da önceki yalnızca writer taraflı sürüm denetimi davranışıyla aynıdır
Seçilen hedef sürüm, belgede hâlâ bulunan bir özellikten düşük olduğunda TPDFlib çağıranları LastErrorCode 602 alır. Kaydetmeden önce daha yeni bir hedef sürüm seçin veya uyumsuz özelliği kaldırın