PDF 2.0: ما الذي تغيّر؟
ISO 32000-2 Evidence: Standard-backed
لمحة سريعة
قسم بعنوان «لمحة سريعة»PDF 2.0 هو ISO 32000-2. وهو أول مواصفة PDF تملكها ISO بالكامل بدلًا من Adobe. وفي معظمه هو توحيد وتنقية للإصدار 1.7، لا إعادة اختراع جذرية. تتناول هذه الصفحة ما تغيّر فعلًا، وأيُّ هذه التغييرات ستلمسه عمليًا، وكيف يستهدف NextPDF خطَّ الأساس للإصدار 2.0 افتراضيًا، مع بقائه قادرًا على كتابة بنية ملفات أقدم عندما يتطلب ذلك ملفُّ تعريفٍ ما.
لماذا يهمّ هذا
قسم بعنوان «لماذا يهمّ هذا»قد يوحي اسم “PDF 2.0” بأنه تنسيق مختلف. لكنه ليس كذلك. يستخدم ملف الإصدار 2.0 نموذج الكائنات نفسه، والمرجع المتقاطع (xref)، والذيل (trailer) كما في الإصدار 1.7، ما يجعل التقليل من شأن التغييرات الحقيقية أمرًا سهلًا. التغييرات التي تسبّب المشكلات ليست الميزات البارزة، بل التشديدات: قواعد كانت اختيارية في الإصدار 1.7 وصارت الآن متوقَّعة، وميزات أُزيلت بهدوء. قد يصبح المستند الذي كان ملفًا صحيحًا تمامًا في 1.7 ملفَّ 2.0 غير مطابق، دون أي فرق مرئي واحد.
السبب الآخر لأهمية هذا هو التوجّه. NextPDF محرّك PDF 2.0. بمجرد أن تعرف ما يتوقّعه الإصدار 2.0، وأين يختلف عمدًا عن الإصدار 1.7، يمكنك أن تفهم لماذا يرفض المحرّك بعض الأشياء، ويُضمّن الخطوط بصرامة أكبر، ويستخدم دفق مرجع متقاطع بدلًا من جدول افتراضيًا.
النسخة المختصرة
قسم بعنوان «النسخة المختصرة»- PDF 2.0 = ISO 32000-2، مملوك لـ ISO، ويُبنى على الإصدار 1.7 (لا يستبدله).
- تصبح الترويسة
%PDF-2.0؛ ويذكر الكاتب المطابق الإصدار بوصفه 2.0 في الترويسة أو في فهرس/Version. - معظم بنية الملف بلا تغيير — الكائنات غير المباشرة نفسها، والذيل نفسه، والانضباط نفسه في
startxref/%%EOF. - دفق المرجع المتقاطع هو الافتراضي الطبيعي للإصدار 2.0؛ ويبقى الجدول الكلاسيكي ذو الـ 20 بايت قانونيًا، ولا تزال بعض ملفات تعريف PDF/A تتطلبه.
- يُضيف الإصدار 2.0 أشياء (مثل بنية أغنى للملفات المرتبطة وأجزاء المستند، وتشفير أقوى عبر امتداد AES-256-GCM) ويُزيل أشياء (بعض وسوم البنية؛ وتوقعات أكثر تشدّدًا لتضمين الخطوط؛ ومجموعات أحرف CJK مهملة).
- يستهدف NextPDF الإصدار 2.0 افتراضيًا، ويمكنه إجراء التسلسل لبنية 1.7/1.4 عندما يتطلب ذلك ملفُّ تعريف مطابقةٍ ما.
كيف يتعامل NextPDF مع ذلك
قسم بعنوان «كيف يتعامل NextPDF مع ذلك»الإصدار قرار، ويُعبَّر عنه في مكان واحد: استراتيجية التسلسل.
Pdf20StreamStrategy (src/Writer/Pdf20StreamStrategy.php) تكتب ترويسة %PDF-2.0، وتذكر /2.0 بوصفه إصدار الفهرس، وتُخرج دفق مرجع متقاطع مضغوطًا. كما تحمل تشديد الخطوط الخاص بالإصدار 2.0 مباشرةً. في إطار ملف تعريف الإصدار 2.0 يمكنها أن تفرض رفض خط Type 1 قياسي غير مُضمَّن، بدلًا من مجرد التحذير منه، لأن المواصفة تتوقّع الآن تضمين تلك الخطوط. توجد استراتيجيتا الجدول (Pdf17TableStrategy، Pdf14TableStrategy) لسبب محدد، وهو أن بعض ملفات التعريف تحتاج إلى الشكل الأقدم. يفرض PDF/A-2/-3 جدول المرجع المتقاطع التقليدي، ويحظر PDF/A-1 إضافةً إلى ذلك دفوق الكائنات والمرجع المتقاطع. تنفّذ الاستراتيجيات الثلاث جميعها واجهة PdfSerializationStrategy الواحدة، لذا يبقى الكاتب متطابقًا فوق نقطة الفصل. لا يتغيّر إلا شكل trailer/xref.
يُوصَّل التشفير الأقوى بالطريقة المتعمَّدة نفسها. PdfXrefWriter (src/Writer/PdfXrefWriter.php) يُمرّر خيار تفعيل AES-256-GCM (امتداد ISO/TS 32003 للإصدار 2.0) إلى قاموس التشفير بحيث تطابق قيمتا إصدار المعالج ووضع الشيفرة الصادرتان البايتات المُنتَجة فعلًا. لا يعلن المحرّك شيفرةً ويكتب أخرى.
التصميم العام هو الآتي. الإصدار 2.0 هو الافتراضي. البنية الأقدم متاحة عن قصد، لا بالمصادفة أبدًا. وحيثما يشدّد الإصدار 2.0 قاعدةً، يمكن لـ NextPDF أن يلتزم بالخط المشدَّد بدلًا من تخفيفه بهدوء.
- Step 1 of 3: ISO 32000-1 PDF 1.7 — the Adobe-authored base, adopted by ISO
- Step 2 of 3: ISO 32000-2 PDF 2.0 — ISO-owned consolidation, tightening, and additions
- Step 3 of 3: ISO/TS 32003 AES-256-GCM (AESV4) — an encryption extension to PDF 2.0
ماذا تقول الأدلة
قسم بعنوان «ماذا تقول الأدلة»بيان الإصدار إلزامي. Spec: ISO 32000-2, §7.5.2 ISO 32000-2 §7.5.2 ينص على أن المعالج الذي يكتب ملفًا مطابقًا يجب أن يحدّد الإصدار — إما في الترويسة أو بوصفه مدخل الفهرس /Version — على أنه 2.0، وأن الترويسة هي %PDF-1.n أو %PDF-2.n متبوعةً بعلامة نهاية سطر واحدة.
Spec: ISO 32000-2, §7.7.2 ISO 32000-2 §7.7.2 يضيف أن الفهرس
/Version يتجاوز إصدار ترويسة سابقًا، وهو بالضبط ما يجعل
رفع الإصدار التدريجي ممكنًا. Evidence: Standard-backed
كون الإصدار 2.0 توحيدًا لا إعادة كتابة يتضح فيما يبقيه: دفق المرجع المتقاطع (/Type /XRef) هو الآلية نفسها التي أُدخلت في PDF 1.5 وحُملت إلى الأمام بوصفها افتراضي الإصدار 2.0 ( Spec: ISO 32000-2, §7.5.8 ISO 32000-2 §7.5.8 ). بنية الكائن غير المباشر والذيل وstartxref باقية بلا تغيير عمّا ورد في وصف الصفحة السابقة.
التغييرات التي تهمّ هي الإزالات والتشديدات. تسجّل المواصفة أن ستة عناصر بنية قياسية موجودة في فضاء أسماء البنية القياسية لـ PDF 1.7 ليست جزءًا من فضاء أسماء PDF 2.0 — Art، BlockQuote، TOC، Reference، BibEntry، وCode ( Spec: ISO 32000-2, Annex L.3 ISO 32000-2 Annex L.3 ، مع تعريف فروق فضاء الأسماء وفق Spec: ISO 32000-2, §14.8.6 ISO 32000-2 §14.8.6 ). كما تشدّد على خطوط Type 1 القياسية الأربعة عشر: فبينما كان الإصدار 1.0–1.7 يسمح لقواميسها بإغفال مدخلات القياسات، يغلق الإصدار 2.0 هذا الباب ( Spec: ISO 32000-2, §9.6.2.1 ISO 32000-2 §9.6.2.1 ). كما ينقّح مجموعات أحرف CJK المعرَّفة مسبقًا. على سبيل المثال، Adobe-Korea1 مهمل في الإصدار 2.0. وأُضيف Adobe-KR. لا يغيّر أيٌّ من ذلك كيف تبدو صفحة موجودة. لكنه كله قد يغيّر ما إذا كانت مطابِقة.
| الفئة | أمثلة (2.0 مقابل 1.7) | هل يغيّر المظهر؟ | لماذا يهمّ |
|---|---|---|---|
| بلا تغيير | الكائنات غير المباشرة، الذيل، startxref/%%EOF، دفوق xref | — | الإصدار 2.0 يستخدم نموذج الكائنات نفسه؛ ومعظم الأدوات تنتقل كما هي |
| مُضاف | بنية أغنى للملفات المرتبطة / أجزاء المستند؛ تشفير AES-256-GCM (ISO/TS 32003) | لا | قدرة جديدة تختار تفعيلها؛ تتجاهلها القارئات الأقدم بأمان |
| مُشدَّد | يُتوقَّع تضمين خطوط Standard-14؛ ولم يعد بالإمكان إغفال القياسات | لا | قد يكون ملف 1.7 صحيحًا ملفَّ 2.0 غير مطابق |
| مُزال | ستة عناصر بنية من فضاء أسماء 1.7 (Art، BlockQuote، TOC، Reference، BibEntry، Code)؛ مجموعات CJK مهملة (على سبيل المثال، Adobe-Korea1) | لا | صامت: لا شيء مرئي يشير إلى المطابقة المفقودة |
تغييرات PDF 2.0 التي تهمّ غير مرئية في معظمها الساحق: إضافات تختار تفعيلها، وtightenings/removals تغيّر المطابقة دون تغيير بكسل واحد معروض.
مثال عملي
قسم بعنوان «مثال عملي»الفرق المرئي الوحيد بين ملف 2.0 وملف 1.7 هو غالبًا سطران — الترويسة وإصدار الفهرس — مع أن قواعد المطابقة وراءهما تختلف اختلافًا جوهريًا.
%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>endstreamendobjstartxref12345%%EOFيرى القارئ %PDF-2.0 و/Version /2.0. ما لا يراه — وما يراه مدقّق المطابقة — هو أن هذا الملف بات يُتوقَّع منه أن يُضمّن خطوطه القياسية، ويجب ألا يستخدم وسوم البنية التي أزالها الإصدار 2.0. البايتات المختلفة قليلة. أما القواعد المختلفة فليست كذلك.
مفهوم خاطئ شائع
قسم بعنوان «مفهوم خاطئ شائع»الفخ هو: “نحن نُخرج PDF 2.0، لذا فنحن أكثر مطابقةً من ذي قبل.” كتابة %PDF-2.0 ادّعاء، لا ضمان. قد يحمل الملف ترويسة الإصدار 2.0 ومع ذلك ينتهك الإصدار 2.0 — بالإحالة إلى خط قياسي غير مُضمَّن، أو باستخدام ميزة أزالها الإصدار 2.0 — بالطريقة نفسها تمامًا التي كانت مقبولةً في إطار الإصدار 1.7. يرفع مؤشّر الإصدار المعيار الذي يُقاس الملف عليه. لكنه لا يرفع الملف فوقه. والخطأ المعاكس هو افتراض أن ملف 1.7 يعمل بوصفه 2.0 بمجرد تغيير الترويسة: فهو عادةً يُعرَض بشكل متطابق ويفشل في المطابقة، لأن التشديدات حقيقية وإن كانت غير مرئية.
الحدود والقيود
قسم بعنوان «الحدود والقيود»استهداف خطّ الأساس للإصدار 2.0 يعني أن NextPDF يستخدم بنية ملفات الإصدار 2.0 افتراضيًا، ويمكنه الالتزام بالقواعد المشدَّدة للإصدار 2.0. وهذا لا يعني أن كل ميزة اختيارية في الإصدار 2.0 منفَّذة، ولا أن إصدار ترويسة 2.0 يصادق على مستند وفق PDF/A أو PDF/UA أو أي ملف تعريف آخر. تلك أهداف مطابقة منفصلة وأكثر صرامة، ومُركَّبة فوق المواصفة الأساسية، ولكلٍّ منها التحقق الخاص به.
هذه الصفحة توجيه عملي لفروق الإصدارات، لا سجلُّ تغييرات شاملًا لـ ISO 32000-2 مقابل 32000-1. وحيثما تحكم ميزة محددة أو إهمال محدد في الإصدار 2.0 سلوكَ المحرّك، يكون ذلك السلوك مستندًا إلى بنده الخاص. ترسم هذه الصفحة المشهد العام بدلًا من تعداد كل فرق على مستوى البنود.
أسئلة شائعة موجزة
قسم بعنوان «أسئلة شائعة موجزة»هل PDF 2.0 متوافق رجعيًا مع قارئات 1.7؟ إلى حد كبير، فيما يخص البنية التي لم تتغيّر. ميزات الإصدار 2.0 الجديدة مصمَّمة عمومًا بحيث يستطيع القارئ الأقدم تجاهل ما لا يفهمه. لكن ميزةً خاصةً بالإصدار 2.0 فقط لن يحترمها قارئ 1.7.
أيُّهما يفوز، الترويسة أم /Version في الفهرس؟ يأخذ /Version في الفهرس الأسبقية عندما يسمّي إصدارًا أحدث من الترويسة. هذا ما يتيح لتحديث تدريجي رفع إصدار ملف دون إعادة كتابة الترويسة.
لماذا يستخدم NextPDF دفق مرجع متقاطع افتراضيًا، لا جدولًا؟ دفق المرجع المتقاطع هو الآلية الطبيعية لـ PDF 2.0 — مدمج وقادر على فهرسة الكائنات المضغوطة. ولا يزال الجدول ذو الـ 20 بايت يُكتب عندما يتطلبه ملف تعريف (لا سيما بعض مستويات PDF/A).
مستندات ذات صلة
قسم بعنوان «مستندات ذات صلة»- ما هو ملف PDF فعلًا — نموذج الكائنات وxref الذي يبقيه PDF 2.0 من 1.7.
- مشهد المعايير — أين يقع ISO 32000-2 بين المعايير التي يتتبّعها NextPDF وكيف يصبح البند سلوكًا.
- الخطوط: الجزء الصعب — تشديد تضمين الخطوط هو أحد تغييرات الإصدار 2.0 التي تلمسها فعلًا.
مسرد المصطلحات
قسم بعنوان «مسرد المصطلحات»- PDF 2.0 — مواصفة PDF المقننة بوصفها ISO 32000-2، أول إصدار تملكه ISO بدلًا من Adobe.
- ISO 32000-1 — تقنين ISO لـ PDF 1.7 من Adobe؛ الأساس الذي يبني عليه PDF 2.0.
- ISO/TS 32003 — مواصفة تقنية توسّع PDF 2.0 بتشفير AES-256-GCM (AESV4).
/Versionفي الفهرس — مدخل فهرس المستند الذي يذكر إصدار PDF؛ يتجاوز الترويسة عندما يسمّي إصدارًا أحدث.- دفق المرجع المتقاطع — آلية المرجع المتقاطع في PDF 1.5+ / 2.0 (
/Type /XRef)؛ الافتراضي لـ NextPDF، مع بقاء الجدول الكلاسيكي متاحًا لملفات التعريف الأقدم. - التشديد — قاعدة كانت اختيارية أو مسموحًا بها في 1.7 وصارت متوقَّعة أو مطلوبة في 2.0، تغيّر المطابقة دون تغيير المظهر.