فهم بيانات التعريف (Metadata) وعلامات التبويب (Bookmarks) في ملفات PDF: دليل فني.

الموضوعات الرئيسية التي يتم تناولها.
📍 الوجهات (Destinations).
علامات تحديد المواقع الدقيقة التي تحدد مواقع معينة داخل مستندات PDF. تتيح هذه العلامات التنقل الدقيق لعلامات التبويب والروابط التشعبية، بينما توفر مخططات المستندات وظائف جدول المحتويات الهرمي.
📄 بيانات وصفية XML.
تدفقات XML منظمة توفر بيانات وصفية شاملة للمستندات باستخدام تنسيقات XMP القياسية، وتتجاوز خصائص المستند الأساسية لتشمل معلومات وصفية غنية.
📎 مرفقات الملفات.
إمكانية تضمين الملفات الكاملة التي تقوم بتعبئة الموارد الخارجية مباشرة داخل مستندات PDF، مما يخلق حزم مستندات متكاملة تشبه مرفقات البريد الإلكتروني.
📝 تعليقات.
عناصر تراكب تفاعلية تضيف نصًا ورسومات ووظائف قابلة للنقر إلى صفحات PDF دون تعديل المحتوى الأساسي. تتضمن روابط تشعبية للتنقل السلس في المستندات وأدوات ترميز متنوعة لتعزيز تفاعل القارئ.
علامات مرجعية ووجهات.

يعتمد التنقل في المستند على هياكل علامات مرجعية هرمية، والمعروفة تقنيًا باسم. مخطط المستند.هذا النظام المنظم على شكل شجرة يعرض إدخالات قابلة للنقر - غالبًا ما تكون عناوين الفصول وعناوين الأقسام وأسماء الأقسام الفرعية - والتي تتيح للقراء الانتقال بسرعة إلى أجزاء معينة من المستند. يجمع كل إدخال في قائمة الإشارات المرجعية بين النص المعروض ومعلومات الوجهة التي تحدد بالضبط المكان الذي يجب أن ينتقل إليه الرابط.
فهم الوجهات.
تعمل وجهات PDF كعلامات مواقع دقيقة داخل المستند، مما يحدد الصفحة التي سيتم عرضها، والمكان الذي سيتم وضع العرض فيه، ومستوى التكبير الذي سيتم تطبيقه. يمكنك إنشاء وجهات بطريقتين: تحديدها مباشرة (وهو ما سنستخدمه في أمثلتنا من أجل الوضوح) أو الرجوع إليها بالاسم من خلال نظام تسمية شامل للمستند. تعرض معظم برامج قراءة PDF علامات التبويب في لوحة تنقل بجانب محتوى المستند الرئيسي.
تستخدم كل وجهة هيكل مصفوفة حيث تختلف العناصر المحددة بناءً على سلوك العرض الذي تريد تحقيقه. فيما يلي الأنماط الرئيسية للوجهات المتاحة:
جدول أنواع الوجهات.
ملاحظة: "page" تمثل مرجعًا غير مباشر لكائن الصفحة. بشكل افتراضي، تعمل هذه الوجهات مع حدود مربع الاقتصاص للصفحة، وتعود إلى مربع الوسائط عندما لا يتم تعريف مربع اقتصاص.
| Array | Description |
|---|---|
| [page /Fit] | Scales the page to fit completely within the viewer window, adjusting both width and height proportionally. |
| [page /FitH top] | Positions the specified top coordinate at the window’s top edge while scaling horizontally to fit the full page width. |
| [page /FitV left] | Aligns the specified left coordinate with the window’s left edge while scaling vertically to fit the full page height. |
| [page /XYZ left top zoom] | Positions the coordinates (left, top) at the window’s upper-left corner and applies the specified zoom factor. Null values preserve current settings for those parameters. |
| [page /FitR left bottom right top] | Zooms and positions the view to display the rectangular area defined by the left, bottom, right, and top coordinates. |
| [page /FitB] | Similar to /Fit, but scales based on the actual content boundaries instead of the defined crop box area. |
| [page /FitBH top] | Functions like /FitH but uses the content bounding box instead of the crop box for horizontal scaling calculations. |
| [page /FitBV left] | Operates like /FitV but calculates vertical scaling based on the content bounding box rather than the crop box boundaries. |
هيكل مخطط المستند.
تحدد المستندات الهيكلية بنية تنقل هرمية تعمل كجدول محتويات تفاعلي لمشغلات ملفات PDF. تساعد هذه التنظيم الشبيه بالشجرة المستخدمين على التنقل بسرعة في المستندات المعقدة من خلال توفير نظرة عامة هيكلية واضحة. يعتمد النظام على نوعين أساسيين من الكائنات:
- قاموس الهيكل. – الجذر في تسلسل الهيكل.
- قواميس عناصر الهيكل. – إدخالات فردية في الهيكل.
هيكل جدول قاموس الهيكل.
| Key | Value Type | Value |
|---|---|---|
| /Type | name | If present, must be /Outlines. |
| /First | indirect reference to dictionary | References the initial top-level outline entry in the document hierarchy. This field is mandatory when outline entries exist. |
| /Last | indirect reference to dictionary | References the final top-level outline entry in the document hierarchy. This field is mandatory when outline entries exist. |
| /Count | integer | Specifies how many outline entries are currently expanded across the entire outline tree. Can be omitted when no entries are in an open state. |
تنفيذ عنصر الهيكل.
يتكون كل عنصر هيكل من قاموس يحدد عنوان العرض والوجهة المستهدفة والعلاقات مع العناصر الأخرى في التسلسل الهرمي.
دعنا نستكشف كيف يتم تنظيم مخطط بسيط للمستند في صيغة PDF:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
8 0 obj <</Type/Outlines/Count 4/First 9 0 R/Last 9 0 R>> endobj 9 0 obj <</Title(Chapter 1: Experiment A)/Count 3/Parent 8 0 R/First 12 0 R/Last 18 0 R>> endobj 12 0 obj <</Title(1: Introduction)/Count 0/Parent 9 0 R/Next 15 0 R>> endobj 15 0 obj <</Title(2: Methodology)/Count 0/Parent 9 0 R/Prev 12 0 R/Next 18 0 R>> endobj 18 0 obj <</Title(3: Result verification)/Count 0/Parent 9 0 R/Prev 15 0 R/>> endobj |
هيكل جدول قاموس عناصر المخطط.
* يشير إلى إدخال مطلوب
| Key | Value Type | Value |
|---|---|---|
| /Title* | text string | Text to be displayed for this entry. |
| /Parent* | indirect reference to dictionary | References this item’s parent within the outline hierarchy, which can be either another outline item or the root outline dictionary. |
| /Prev | indirect reference to dictionary | References the preceding sibling item at the same hierarchical level, when applicable. |
| /Next | indirect reference to dictionary | References the following sibling item at the same hierarchical level, when applicable. |
| /First | indirect reference to dictionary | References the initial child item under this entry, when child items exist. |
| /Last | indirect reference to dictionary | References the final child item under this entry, when child items exist. |
| /Count | integer | When the entry is expanded, indicates the count of visible descendant entries. When collapsed, stores a negative value representing the total number of hidden descendants that would become visible upon expansion. |
| /Dest | name, string or array | The destination. Arrays are destinations, names are references to entries in the /Dests entry in the document catalog, strings are references to entries in the /Dests entry in the document’s name dictionary. |
بيانات وصفية XML.

يمكن للمستندات الحديثة بصيغة PDF دمج تدفقات بيانات وصفية متطورة تعتمد على XML، والتي توفر معلومات أكثر تفصيلاً وهيكلية من خصائص المستند التقليدية. تستخدم هذه الأنظمة المتقدمة للبيانات الوصفية مواصفات Adobe XMP (Extensible Metadata Platform) لتوفير أوصاف موحدة وقابلة للقراءة آليًا للمستندات، مما يعزز إمكانية البحث والتنظيم وقدرات المعالجة الآلية.
هيكل البيانات الوصفية XMP.
يتم تغليف البيانات الوصفية XMP كوثيقة XML تستخدم صيغة RDF (Resource Description Framework) لتنظيم ووصف خصائص المستند بتنسيق موحد. يتم تضمين هذا المحتوى الوصفي داخل كائن تدفق مخصص يتضمن تحديدًا مناسبًا للنوع لمعالجات PDF:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
6 0 obj <</Length 1235/Type/Metadata/Subtype/XML>>stream <?xpacket begin="锘xBF" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26" ><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ><rdf:Description rdf:about="" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" ><pdf:Producer>losLab PDF Library</pdf:Producer> <dc:creator>losLab.com</dc:creator> <dc:title>Delphi PDF SDKs</dc:title> <xmp:CreateDate>2025-06-29T10:46:27+08:00</xmp:CreateDate> <xmp:ModifyDate>2025-06-29T10:58:57+08:00</xmp:ModifyDate> <xmp:MetadataDate>2025-06-29T10:46:27+08:00</xmp:MetadataDate> <dc:description>Delphi Development Library for PDF creation & editing</dc:description> <xmp:CreatorTool>HotPDF Component</xmp:CreatorTool> <dc:subject>PDF Developer Library for RAD Studio></dc:subject> <pdf:Keywords>Delphi, PDF SDK, PDF Component</pdf:Keywords> </rdf:Description>Robust Delphi PDF development library</rdf:RDF> </x:xmpmeta> <?xpacket end="w"?> endstream endobj |
مخططات البيانات الوصفية القياسية.
إطار عمل XMP ينظم البيانات الوصفية من خلال مساحات أسماء مخططات مُعرفة جيدًا، حيث يخدم كل منها فئات معلومات محددة.
📋 Dublin Core (dc:)
معلومات ببليوغرافية أساسية.
- dc:title – عنوان المستند.
- dc:creator – مؤلف(و) المستند.
- dc:subject – موضوع/كلمات مفتاحية المستند.
- dc:description – وصف المستند.
- dc:format – نوع MIME.
🏷️ XMP Basic (xmp:)
الخصائص الأساسية لـ XMP
- xmp:CreateDate – تاريخ الإنشاء
- xmp:ModifyDate – تاريخ التعديل
- xmp:CreatorTool – التطبيق المستخدم في الإنشاء
- xmp:MetadataDate – تاريخ تعديل البيانات الوصفية
📄 PDF Schema (pdf:)
الخصائص الخاصة بـ PDF
- pdf:Producer – مُنتج ملف PDF.
- pdf:Keywords – الكلمات المفتاحية للمستند.
- pdf:PDFVersion – إصدار ملف PDF.
التكامل مع فهرس المستندات.
يتم الإشارة إلى تدفق البيانات الوصفية XML من فهرس المستندات:
|
1 2 3 |
1 0 obj < < Type Catalog Pages 2 0 R Metadata 10 0 R Outlines 1 0 R>> endobj |
🎯 أفضل الممارسات للبيانات الوصفية XML.
- قم دائمًا بتضمين كل من قاموس معلومات المستند والبيانات الوصفية XMP لتحقيق أقصى قدر من التوافق.
- تأكد من أن قيم البيانات الوصفية متسقة بين كلا الموقعين.
- استخدم ترميز XML المناسب (UTF-8) للأحرف الدولية.
- قم بتضمين تواريخ الإنشاء والتعديل بتنسيق ISO 8601.
- تحقق من صحة هيكل XML لمنع أخطاء التحليل.
المرفقات.

توفر مرفقات ملفات PDF طريقة ملائمة لتضمين الملفات الخارجية مباشرة داخل مستند PDF، مما يخلق حزمًا متكاملة تتضمن جميع الموارد الضرورية. يمكن ربط هذه المرفقات بالمستند بأكمله أو بربطها بصفحات معينة، حسب احتياجاتك. تعرض معظم برامج عرض PDF الحديثة هذه الملفات المضمنة في لوحة مرفقات مخصصة، مما يسهل على المستخدمين الوصول إلى المحتوى المضمن وعرضه أو حفظه. هذه الميزة ذات قيمة خاصة لإنشاء حزم مستندات شاملة، مثل العروض التقديمية التي تتضمن موارد إضافية أو التقارير التي تتضمن ملفات بيانات مصاحبة.
هيكل الملف المضمن.
في جوهرها، يتكون الملف المضمن من كائن تدفق يحتوي على بيانات الملف الفعلية، بالإضافة إلى إدخال قاموس التدفق الذي يحدد. /Type /EmbeddedFileيتيح هذا النهج البسيط تخزين أي نوع من الملفات داخل ملف PDF. إليك كيف يبدو هيكل الملف المضمن الأساسي:
|
1 2 3 4 5 6 |
8 0 obj < < Type EmbeddedFile Length 35>> stream This is a text file attachment... endstream endobj |
يدعم تنسيق PDF طريقتين متميزتين للإشارة إلى الملفات المضمنة، حيث تخدم كل طريقة حالات استخدام مختلفة: المرفقات الخاصة بالمستند والتي يمكن الوصول إليها عالميًا، والمرفقات الخاصة بالصفحة والتي تظهر كعناصر تفاعلية على صفحات معينة.
المرفقات الخاصة بالمستند
بالنسبة للمرفقات التي تنطبق على المستند بأكمله، يجب عليك إضافة /EmbeddedFiles إدخال إلى قاموس الأسماء، والذي يتم الوصول إليه من خلال /Names الإدخال في كتالوج المستند. تجعل هذه الطريقة المرفق متاحًا عالميًا في جميع أنحاء ملف PDF، بغض النظر عن الصفحة التي يشاهدها المستخدم حاليًا:
|
1 2 3 4 5 6 |
9 0 obj < < Names << EmbeddedFiles << Names [ (attachment.txt) << EF << F 8 0 R>> /F (attachment.txt) /Type /Filespec >> ] >> >> /Pages 1 0 R /Type /Catalog >> endobj |
شرح هيكل الكود
- /Names – يحتوي على قاموس الأسماء للمستند.
- /EmbeddedFiles - يتعامل بشكل خاص مع أسماء الملفات المضمنة.
- (attachment.txt) - اسم الملف كما يظهر للمستخدمين.
- /EF - قاموس الملفات المضمنة الذي يحتوي على مرجع الملف الفعلي.
- /F 8 0 R - مرجع لكائن تدفق الملف المضمن.
- /Type /Filespec – يحدد هذا بأنه قاموس مواصفات ملف.
المرفقات على مستوى الصفحة.
تتطلب المرفقات الخاصة بالصفحة نهجًا مختلفًا باستخدام تعليقات مرفقات الملف. تتم إضافتها إلى /Annots المصفوفة في قاموس الصفحة المستهدفة، مما ينشئ رمز مرفق مرئي يمكن للمستخدمين التفاعل معه مباشرة على الصفحة:
|
1 2 3 4 5 6 7 8 |
9 0 obj < < Type Page (Other dictionary entries as usual) Annots [ << FS << EF << F 8 0 R>> /F (attachment.txt) /Type /Filespec >> /Subtype /FileAttachment /Contents (attachment.txt) /Rect [ 18 796.88976378 45 823.88976378 ] >> ] >> endobj |
خصائص مرفقات الصفحة.
- /FS – قاموس مواصفات الملف (نفس /EF أعلاه).
- /Subtype /FileAttachment – يحدد هذا التعليق بأنه مرفق ملف.
- /Contents – نص تلميح الأدوات الذي يظهر عند تحريك المؤشر فوق رمز المرفق.
- /Rect – مستطيل يحدد موضع وحجم رمز المرفق في الصفحة.
حالات استخدام المرفقات
📊 ملفات البيانات
قم بتضمين جداول البيانات وقواعد البيانات أو ملفات البيانات الخام مع التقارير والتحليلات.
🎨 ملفات المصدر.
قم بتضمين ملفات التصميم الأصلية أو رسومات CAD أو القوالب القابلة للتحرير.
📹 موارد الوسائط.
قم بإرفاق عروض الفيديو أو التسجيلات الصوتية أو المحتوى التفاعلي.
📋 المستندات الداعمة.
قم بتجميع ملفات PDF ذات الصلة أو العقود أو المواد المرجعية.
ملاحظات.

توفر تعليقات PDF طريقة قوية لإضافة عناصر تفاعلية وعلامات مرئية إلى المستندات دون تغيير محتوى الصفحة الأصلي. تعزز هذه العناصر المضافة تجربة القراءة من خلال السماح للمستخدمين بتحديد النص، وإضافة التعليقات، أو إنشاء روابط قابلة للنقر. من بين أنواع التعليقات الأكثر فائدة، توجد الروابط التشعبية، التي تتيح التنقل السلس بين أقسام مختلفة من المستند أو إلى موارد خارجية.
هيكل التعليقات
على الرغم من أن أنواع التعليقات المختلفة تخدم أغراضًا متنوعة، إلا أنها تتبع جميعها هيكلًا أساسيًا متسقًا مع إضافة خصائص خاصة بالنوع حسب الحاجة. يمكن أن تحتوي صفحات PDF على تعليقات متعددة، والتي يتم تنظيمها في مصفوفة يتم الإشارة إليها بواسطة الإدخال /Annots في قاموس كل صفحة. يتم تنفيذ كل تعليق ككائن قاموس خاص به مع خصائص محددة.
جدول هيكل قاموس التعليق
* يشير إلى إدخال مطلوب
| Key | Value Type | Value |
|---|---|---|
| /Type | name | When specified, this value must be set to /Annot to properly identify the dictionary type. |
| /Subtype* | name | Specifies the specific annotation category (e.g., Link, Text, Highlight). |
| /Rect* | rectangle | Defines the annotation’s position and dimensions using standard PDF coordinate units. |
| /Contents | text string | Contains the annotation’s text content or provides an alternative descriptive label for accessibility purposes. |
مثال على القاموس الأساسي للتعليق:
|
1 2 3 |
12 0 obj < < Type Annot Subtype Link Rect [100 200 300 250] Border [0 0 1] C [0.0 0.0 1.0] Dest [5 0 R XYZ null null null]>> endobj |
أنواع التعليقات الشائعة
🔗 تعليقات الروابط التشعبية
قم بإنشاء مناطق قابلة للنقر للانتقال إلى وجهات داخل المستند أو موارد خارجية.
- /Subtype /Link – يحدد بأنه تعليق ارتباط.
- /Dest – مصفوفة الوجهة أو الوجهة المسماة.
- /A – قاموس الإجراءات لسلوكيات أكثر تعقيدًا.
📝 تعليقات نصية.
عرض ملاحظات وتعليقات منبثقة تظهر عند النقر.
- /Subtype /Text – يحدد بأنه تعليق نصي.
- /Contents – محتوى النص للتعليق.
- /Open – ما إذا كان التعليق مفتوحًا في البداية.
🖍️ Markup Annotations
قم بتظليل أو تسطير أو شطب النص.
- /Subtype /Highlight – تظليل النص
- /Subtype /Underline – تسطير النص
- /Subtype /StrikeOut – شطب النص
إجراءات متقدمة للارتباطات.
يمكن لعلامات الارتباط تنفيذ إجراءات متنوعة تتجاوز التنقل البسيط.
|
1 2 3 |
13 0 obj < < Type Annot Subtype Link Rect [50 50 200 100] A << Type Action S URI URI (https: www.example.com)>> >> endobj |
أنواع الإجراءات.
- /S /GoTo – للانتقال إلى وجهة داخل المستند.
- /S /GoToR – للانتقال إلى وجهة في مستند آخر.
- /S /URI – لفتح عنوان URL للموقع الإلكتروني.
- /S /Launch – تشغيل تطبيق خارجي.
- /S /JavaScript – تنفيذ كود JavaScript.
مظهر التعليقات التوضيحية.
يتم تحقيق التخصيص المرئي للتعليقات التوضيحية من خلال مسارات المظهر، مما يتيح تحكمًا دقيقًا في كيفية عرض التعليقات التوضيحية للمستخدمين:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
14 0 obj < < Type Annot Subtype Square Rect [100 100 200 150] C [1.0 0.0 0.0] BS << W 2 S S>> /AP < < N 15 0 R>> >> endobj 15 0 obj < < Type XObject Subtype Form BBox [0 0 100 50] Length 85>> stream q 1.0 0.0 0.0 RG 2 w 10 10 80 30 re S Q endstream endobj |
إرشادات التطبيق العملي.
تكامل هيكل المستند.
يتطلب التنفيذ الناجح فهم كيفية عمل هذه العناصر معًا داخل بنية مستند PDF الأوسع.
|
1 2 3 4 |
1 0 obj < < Type Catalog Pages 2 0 R Outlines 3 0 R Names << EmbeddedFiles 4 0 R>> /Metadata 5 0 R >> endobj |
✅ قائمة التحقق من التنفيذ
- إعداد فهرس المستند – تأكد من وجود مراجع صحيحة للمخططات والأسماء والبيانات الوصفية.
- ترقيم الكائنات – حافظ على ترقيم الكائنات الموحد والمراجع المتقاطعة.
- ترميز التدفق – قم بتطبيق المرشحات والترميز المناسبة للتدفقات.
- التحقق من الصحة. - التحقق من هيكل ملف PDF باستخدام أدوات التحقق.
- اختبار التوافق. - الاختبار عبر عارضات ملفات PDF المختلفة والإصدارات.
المشكلات الشائعة والحلول.
❌ لا يتم عرض الإشارات المرجعية.
الحل: تحقق من أن الدليل الوثائقي يتضمن /Outlines إدخالًا وأن التسلسل الهرمي للمخطط مُنظم بشكل صحيح مع علاقات صحيحة بين العناصر الأب والابن.
❌ البيانات الوصفية غير معترف بها.
الحل: تأكد من أن تدفق بيانات التعريف XML مُنسق بشكل صحيح، ويستخدم مساحات الأسماء الصحيحة، ويتم الإشارة إليه في فهرس المستند. /Type /Metadata و /Subtype /XML.
❌ لا يمكن الوصول إلى المرفقات.
الحل: تحقق من أن الملفات المضمنة مُرجعة بشكل صحيح في إما قاموس أسماء مستوى المستند أو قاموس التعليقات التوضيحية على مستوى الصفحة، وأن قواميس مواصفات الملفات مُنظمة بشكل صحيح.
الخلاصة.
إن إتقان بيانات التعريف وعلامات التصفح في ملفات PDF أمر بالغ الأهمية لتطوير مستندات احترافية توفر تجربة مستخدم ووظائف فائقة. توفر هذه الميزات القوية:
- تجربة تصفح محسنة. – من خلال علامات تصفح ووجهات مُنظمة جيدًا.
- بيانات تعريف غنية. – مما يتيح إدارة أفضل وقابلية بحث أعلى للمستندات.
- تكامل الملفات. – تجميع الموارد ذات الصلة داخل المستندات.
- عناصر تفاعلية. – إنشاء تجارب مستخدم جذابة باستخدام التعليقات التوضيحية.
من خلال تنفيذ هذه الميزات بشكل صحيح، يمكنك إنشاء مستندات PDF تتجاوز مجرد النصوص والرسومات لتصبح موارد شاملة وتفاعلية تخدم القراء البشريين والأنظمة الآلية بفعالية.
🚀 الخطوات التالية.
- تدرب على تطبيق هذه الهياكل في سير عمل إنشاء ملفات PDF الخاص بك.
- جرب أنواعًا مختلفة من التعليقات التوضيحية وهياكل الإشارات المرجعية.
- اختبر تطبيقاتك على مشغلات PDF متعددة.
- استكشف ميزات PDF المتقدمة بناءً على هذه الأساسيات.