توافق الحفظ حسب إصدار PDF

يتعامل الإصدار 3.23.0 مع إصدار حفظ PDF المحدد كعقد إخراج صارم لعمليات الحفظ الكاملة. عندما يستدعي التطبيق SetInformation(0, "1.2") أو "1.3" أو "1.4" أو "1.5" أو "1.6" أو "1.7"، تكتب SaveToFile و SaveToString و SaveToStream إخراجًا يطابق الهدف المحدد، أو تفشل قبل كتابة الإخراج

تزيل عمليات الحفظ الكاملة تجاوزات Catalog /Version حتى لا يستطيع المستند المحمّل رفع الإصدار الفعلي بصمت فوق الترويسة المحددة. كما تزيل أهداف الإصدارات الأدنى إدخالات Catalog /Extensions غير المدعومة، وتتجاوز أهداف PDF 1.3 عناصر Catalog /Metadata وتدفقات XMP Metadata مع الحفاظ على قاموس معلومات المستند

يرفض فحص ما قبل الحفظ الميزات المعروفة من الإصدارات اللاحقة بدلاً من إنتاج ملف مختلط الإصدارات. تشمل الحدود المفحوصة مربعات صفحات PDF 1.3، وتدفقات الملفات المضمنة، وإجراءات JavaScript، ومساحات ألوان ICCBased و DeviceN، و ToUnicode CMaps؛ وشفافية PDF 1.4، وبنى Tagged PDF، و output intents، ومفاتيح التعليقات؛ و object streams في PDF 1.5، والمحتوى الاختياري، و XFA، و page tabs، وأعلام append-only لحقول التوقيع، وأعلام حقول النماذج المتقدمة؛ و UserUnit في PDF 1.6، وبرامج خطوط OpenType، وقواميس 3D، ومساحات ألوان NChannel، وبيانات viewport؛ إضافة إلى RichMedia و Projection و Redaction في PDF 1.7، والتعليقات المتقدمة، والمرشحات الفرعية لتوقيع ETSI; تغطي مجموعة القواعد نفسها أيضًا عتامة annotation /CA، و JBIG2Decode، وتدفقات Metadata، وشجرة أسماء EmbeddedFiles على مستوى المستند، و JPXDecode، و xref streams، و Crypt filters، و AESV2 crypt filters، و PDF 1.7 Requirements

تُفحص متطلبات Adobe extension-level في PDF 1.7 بصورة منفصلة عن ترويسة PDF 1.7. يجب أن تحمل AESV3 و AES-256 و RichMedia و Projection والقواميس الجغرافية المكانية والمرشحات الفرعية لتوقيع ETSI تصريح Catalog /Extensions /ADBE /ExtensionLevel كافيًا قبل قبول هدف الحفظ المحدد. تضيف نقاط إدخال writer التي تنتج ميزات extension-level هذه تصريح الامتداد المطابق تلقائيًا عندما يمكن رفع هدف الحفظ المحدد إلى PDF 1.7

منذ v3.67.0، أصبح اكتشاف ميزات المحتوى في جانب المحمّل كسولًا. لا يُفحص المستند المحمّل فورًا؛ يعمل الاكتشاف عند أول استخدام للإصدار الفعلي أو تشخيصات ميزات وقت التحميل عبر GetInformation(0/101/103) أو GetPDFUADiagnostics أو SaveToFile أو SaveToString أو SaveToStream أو مسارات append-save المرتبطة. يمكن لمسارات العمل للقراءة فقط التي لا تستعلم عن هذه التشخيصات ولا تحفظ أبدًا أن تتجاوز الفحص بالكامل

منذ v3.67.1، يفك فحص الاكتشاف كائنات stream بصورة سطحية. فهو يفحص قواميس الكائنات وتصنيف stream مع تجاوز أجسام stream الكبيرة، لذلك يبقى اكتشاف المرشحات والأنواع الفرعية ومساحات الألوان والمفاتيح المقيدة بالإصدار مكافئًا، بينما لا تعود تدفقات الصور الكبيرة تهيمن على الفحص. ما زالت قراءات الكائنات العادية وكل مسارات الحفظ تقرأ جسم stream الكامل عندما يتطلب الإخراج ذلك

منذ v3.67.2، تحتفظ اختيارات إصدار الحفظ الصريحة بالأولوية على الاكتشاف الكسول. في المستند المحمّل، يشغّل SetInformation(0, ...) و LockSaveVersion لقطة الاكتشاف المعلّقة قبل تطبيق الإصدار المطلوب، لذلك لا يستطيع حفظ لاحق أو استعلام تشخيصي لاحق رفع الهدف المحدد خلف ظهر المستدعي. لا تُفعّل المستندات المنشأة حديثًا لاكتشاف جانب المحمّل، بما يطابق سلوك التحكم بالإصدار السابق المعتمد على writer فقط

يتلقى مستدعو TPDFlib القيمة LastErrorCode 602 عندما يكون إصدار الهدف المحدد أدنى من ميزة ما زالت موجودة في المستند. اختر إصدار هدف أحدث أو أزل الميزة غير المتوافقة قبل الحفظ