العمل مع جدول المحتويات

غالبا ما ستعمل مع المستندات التي تحتوي على جدول محتويات (TOC). باستخدام Aspose.Words يمكنك إدراج جدول المحتويات الخاص بك أو إعادة بناء جدول المحتويات الحالي بالكامل في المستند باستخدام بضعة أسطر فقط من التعليمات البرمجية.

توضح هذه المقالة كيفية العمل مع حقل جدول المحتويات وتوضح:

  • كيفية إدراج العلامة التجارية الجديدة TOC.
  • تحديث جديد أو موجود TOCs في المستند.
  • حدد مفاتيح للتحكم في التنسيق والهيكل العام لـ TOC.
  • كيفية تعديل أنماط ومظهر جدول المحتويات.
  • كيفية إزالة حقل TOC بالكامل مع جميع الإدخالات من المستند.

إدراج جدول المحتويات برمجيا

يمكنك إدراج حقل TOC (جدول المحتويات) في المستند في الموضع الحالي عن طريق استدعاء طريقة InsertTableOfContents.

يمكن إنشاء جدول محتويات في مستند ورد بعدة طرق وتنسيقه باستخدام مجموعة متنوعة من الخيارات. تتحكم مفاتيح الحقل التي تمررها إلى الطريقة في طريقة إنشاء الجدول وعرضه في المستند.

المحولات الافتراضية المستخدمة في TOC المدرجة في Microsoft Word هي "\o “1-3 \h \z \u”. يمكن العثور على أوصاف هذه المفاتيح بالإضافة إلى قائمة المفاتيح المدعومة لاحقا في المقالة. يمكنك إما استخدام هذا الدليل للحصول على مفاتيح التبديل الصحيحة أو إذا كان لديك بالفعل مستند يحتوي على TOC المماثل الذي تريده، يمكنك إظهار رموز الحقول (ALT+F9) ونسخ المفاتيح مباشرة من الحقل.

يوضح مثال التعليمات البرمجية التالية كيفية إدراج حقل جدول محتويات في مستند:

يوضح مثال التعليمات البرمجية التالية كيفية إدراج جدول محتويات (TOC) في مستند باستخدام أنماط العنوان كإدخالات:

يوضح رمز يتم إدراج جدول المحتويات الجديد في مستند فارغ. ثم يتم استخدام فئة DocumentBuilder لإدراج بعض نماذج تنسيق المحتوى باستخدام أنماط العناوين المناسبة التي يتم استخدامها لتمييز المحتوى المراد تضمينه في TOC. ثم تقوم الأسطر التالية بملء TOC عن طريق تحديث الحقول وتخطيط صفحة المستند.

insert-table-of-contents-field-aspose-words-java

تحديث جدول المحتويات

Aspose.Words يسمح لك لتحديث تماما TOC مع بضعة أسطر فقط من التعليمات البرمجية. يمكن القيام بذلك لملء TOC مدرج حديثا أو لتحديث TOC موجود بعد إجراء تغييرات على المستند.

يجب استخدام الطريقتين التاليتين لتحديث الحقول TOC في المستند:

  1. Document.updateFields()
  2. Document.updatePageLayout()

يرجى ملاحظة أن هذه الأساليب التحديث اثنين مطلوبة ليتم استدعاؤها في هذا النظام. إذا عكس جدول المحتويات سيتم ملؤها ولكن سيتم عرض أي أرقام الصفحات. يمكن تحديث أي عدد من TOCs مختلفة. ستعمل هذه الطرق تلقائيا على تحديث الكل TOCs الموجود في المستند.

يوضح مثال التعليمات البرمجية التالية كيفية إعادة إنشاء حقول TOC بالكامل في المستند عن طريق استدعاء تحديثات الحقول:

الدعوة الأولى إلى Document.updateFields() وبناء TOC، يتم تعبئة كافة إدخالات النص و TOC يظهر كاملة تقريبا. الشيء الوحيد المفقود هو أرقام الصفحات التي يتم عرضها الآن مع “?”.

المكالمة الثانية إلى Document.updatePageLayout() ستبني تخطيط المستند في الذاكرة. هذا يجب القيام به لجمع أرقام الصفحات من الإدخالات. ثم يتم إدراج أرقام الصفحات الصحيحة المحسوبة من هذه المكالمة في TOC.

استخدم المفاتيح للتحكم في سلوك جدول المحتويات

كما هو الحال مع أي حقل آخر، يمكن للحقل TOC قبول المحولات المحددة داخل رمز الحقل الذي يتحكم في كيفية إنشاء جدول المحتويات. يتم استخدام مفاتيح معينة للتحكم في الإدخالات المضمنة وعلى أي مستوى بينما يتم استخدام مفاتيح أخرى للتحكم في مظهر TOC. يمكن دمج المفاتيح معا للسماح بإنتاج جدول محتويات معقد.

ccontrol-table-of-contents-field-aspose-words-java

بشكل افتراضي، يتم تضمين هذه المفاتيح أعلاه عند إدراج افتراضي TOC في المستند. سيتضمن TOC بدون مفاتيح محتوى من أنماط العناوين المضمنة (كما لو تم تعيين مفتاح \O).

مفاتيح TOC المتاحة التي يدعمها Aspose.Words مدرجة أدناه ويتم وصف استخداماتها بالتفصيل. يمكن تقسيمها إلى أقسام منفصلة بناء على نوعها. تحدد المفاتيح في القسم الأول المحتوى الذي يجب تضمينه في TOC وتتحكم المفاتيح في القسم الثاني في مظهر TOC.

إذا لم يكن مفتاح التبديل مدرجا هنا، فهو غير مدعوم حاليا. سيتم دعم جميع المفاتيح في الإصدارات المستقبلية. نحن نضيف المزيد من الدعم لكل إصدار.

دخول بمناسبة مفاتيح

التبديل الوصف
Heading Styles
* (\O التبديل)*

يحدد مفتاح التبديل هذا أنه يجب إنشاء TOC من أنماط العناوين المضمنة. في Microsoft Word، يتم تعريفها بواسطة Heading 1 - Heading 9. في Aspose.Words يتم تمثيل هذه الأنماط بالتعداد StyleIdentifier المقابل. يمثل هذا التعداد معرفا مستقلا عن اللغة لنمط، على سبيل المثال، StyleIdentifier.Heading1 يمثل نمط Heading 1. باستخدام هذا، يمكن استرداد تنسيق وخصائص النمط من مجموعة أنماط المستند. يمكن استرداد فئة النمط المقابلة من مجموعة Document.Styles باستخدام الخاصية المفهرسة من النوع StyleIdentifier.

style-table-of-contents-field-aspose-words-java



يتم تضمين أي محتوى منسق بهذه الأنماط في جدول المحتويات. سيحدد مستوى العنوان المستوى الهرمي المقابل للإدخال في TOC. على سبيل المثال، سيتم التعامل مع الفقرة ذات النمط Heading 1 على أنها المستوى الأول في TOC بينما سيتم التعامل مع الفقرة ذات Heading 2 على أنها المستوى التالي في التسلسل الهرمي وما إلى ذلك.

Outline Levels
* (\U التبديل)*

يمكن لكل فقرة تحديد مستوى مخطط تفصيلي ضمن خيارات الفقرة.

modify-table-of-contents-field-aspose-words-java



يحدد هذا الإعداد المستوى الذي يجب التعامل مع هذه الفقرة في التسلسل الهرمي للمستند. هذه ممارسة شائعة الاستخدام تستخدم لهيكلة تخطيط المستند بسهولة. يمكن عرض هذا التسلسل الهرمي عن طريق التغيير إلى عرض المخطط التفصيلي في Microsoft Word. على غرار أنماط العناوين، يمكن أن يكون هناك 1-9 مستويات مخطط تفصيلي بالإضافة إلى مستوى “النص الأساسي”. ستظهر مستويات المخطط التفصيلي من 1 إلى 9 في TOC في المستوى المقابل من التسلسل الهرمي
يتم تضمين أي محتوى بمستوى مخطط تفصيلي إما في نمط الفقرة أو مباشرة على الفقرة نفسها في TOC. في Aspose.Words يتم تمثيل مستوى المخطط التفصيلي بخاصية ParagraphFormat.OutlineLevel لعقدة الفقرة. يتم تمثيل مستوى المخطط التفصيلي لنمط الفقرة بنفس الطريقة بواسطة Style.ParagraphFormat خاصية.

Custom Styles
* (\T التبديل)*

سيسمح مفتاح التبديل هذا باستخدام الأنماط المخصصة عند جمع الإدخالات لاستخدامها في TOC. غالبا ما يتم استخدام هذا بالاقتران مع مفتاح \O لتضمين الأنماط المخصصة جنبا إلى جنب مع أنماط العناوين المضمنة في TOC.
يجب وضع معلمات المفتاح داخل علامات الكلام. يمكن تضمين العديد من الأنماط المخصصة، لكل نمط، يجب تحديد الاسم متبوعا بفاصلة متبوعة بالمستوى الذي يجب أن يظهر النمط في TOC باسم. يتم أيضا فصل الأنماط الأخرى بفاصلة أيضا.
على سبيل المثال

{ TOC \o "1-3" \t "CustomHeading1, 1,   CustomHeading2, 2"}

سيستخدم المحتوى المصمم مع CustomHeading1 كمحتوى المستوى 1 في TOC و CustomHeading2 كمستوى 2.

استخدم TC الحقول
* (\F و \L مفاتيح)*

في الإصدارات القديمة من Microsoft Word، كانت الطريقة الوحيدة لإنشاء TOC هي استخدام TC الحقول. يتم إدراج هذه الحقول مخفية في المستند حتى عند عرض رموز الحقول. وهي تتضمن النص الذي يجب عرضه في الإدخال ويتم إنشاء TOC منها. لا يتم استخدام هذه الوظيفة الآن كثيرا ولكنها قد تظل مفيدة في بعض المناسبات لتضمين الإدخالات في TOC التي لم يتم وضع مسافة بادئة لها لتكون مرئية في المستند.
عند إدراجها، تظهر هذه الحقول مخفية حتى عند عرض رموز الحقول. لا يمكن رؤيتها دون إظهار محتوى مخفي. لرؤية هذه الحقول تظهر يجب تحديد تنسيق الفقرة.

setup-table-of-contents-field-aspose-words-java

يمكن إدراج هذه الحقول في مستند في أي موضع مثل أي حقل آخر ويتم تمثيلها بواسطة FieldType.FieldTOCEntry تعداد.
يتم استخدام مفتاح \F في TOC لتحديد أنه يجب استخدام حقول TC كإدخالات. يعني المفتاح من تلقاء نفسه دون أي معرف إضافي أنه سيتم تضمين أي حقل TC في المستند. أي معلمة إضافية، غالبا ما تكون حرفا واحدا، ستعين أن الحقول TC فقط التي تحتوي على مفتاح \f مطابق سيتم تضمينها في TOC. على سبيل المثال

{ TOC \f t }

سوف تشمل فقط TC حقول مثل

{ TC \f t }

يحتوي حقل TOC أيضا على مفتاح ذي صلة، ويحدد مفتاح “\L " أنه يتم تضمين حقل TC فقط بمستويات ضمن النطاق المحدد.

table-of-contents-field-aspose-words-java



يمكن أن تحتوي الحقول TC نفسها أيضا على {several, multiple, a few, many, numerous} مفاتيح تعيين. هذه هي:

- \F - موضح أعلاه.

- \L - يحدد أي مستوى في TOC سيظهر هذا الحقل TC فيه. سيتضمن TOC الذي يستخدم نفس مفتاح التبديل هذا الحقل TC فقط إذا كان ضمن النطاق المحدد.

- _\N - لا يتم عرض ترقيم الصفحات لهذا الإدخال TOC. يمكن العثور على نموذج التعليمات البرمجية لكيفية إدراج TC الحقول في القسم التالي.

مفاتيح ذات صلة بالمظهر

التبديل الوصف
Omit Page Numbers
* (\N التبديل)*

يستخدم مفتاح التبديل هذا لإخفاء أرقام الصفحات لمستويات معينة من TOC. على سبيل المثال، يمكنك تحديد

{TOC \o "1-4" \n "3-4" }

وسيتم إخفاء أرقام الصفحات في إدخالات المستويين 3 وأربعة مع نقاط القائد (إن وجدت). لتحديد مستوى واحد فقط، يجب الاستمرار في استخدام النطاق، على سبيل المثال، “1-1” سيستبعد أرقام الصفحات للمستوى الأول فقط.
لن يؤدي توفير أي نطاق مستوى إلى حذف أرقام الصفحات لجميع المستويات في TOC. هذا مفيد لتعيين عند تصدير مستند إلى HTML أو تنسيق مماثل. هذا لأن التنسيقات المستندة إلى HTML لا تحتوي على أي مفهوم للصفحة وبالتالي لا تحتاج إلى أي ترقيم للصفحات.

table-of-contents-aspose-words-java

إدراج ارتباطات تشعبية
* (\H التبديل)*

يحدد مفتاح التبديل هذا أن الإدخالات TOC يتم إدراجها كروابط تشعبية. عند عرض مستند في Microsoft Word ستظل هذه الإدخالات تظهر كنص عادي داخل TOC ولكنها مرتبطة ارتباطا تشعبيا وبالتالي يمكن استخدامها للانتقال إلى موضع الإدخال الأصلي في المستند باستخدام Ctrl + Left Click في Microsoft Word. عندما يتم تضمين هذا التبديل ثم يتم الاحتفاظ هذه الروابط أيضا في أشكال أخرى. على سبيل المثال، في التنسيقات القائمة على HTML بما في ذلك EPUB والتنسيقات المقدمة مثل PDF و XPS، سيتم تصديرها كروابط عمل.
بدون مجموعة التبديل هذه، سيتم تصدير TOC في كل هذه المخرجات كنص عادي ولن يظهر هذا السلوك. إذا تم فتح مستند بكلمة MS، فلن يكون نص الإدخالات قابلا للنقر بهذه الطريقة ولكن لا يزال من الممكن استخدام أرقام الصفحات للانتقال إلى الإدخال الأصلي.

tree-table-of-contents-field-aspose-words-java

Set Separator Character
* (\P التبديل)*

يسمح مفتاح التبديل هذا بتغيير المحتوى الذي يفصل عنوان الإدخال وترقيم الصفحات بسهولة في TOC. يجب تحديد الفاصل المراد استخدامه بعد هذا المفتاح وإرفاقه بعلامات الكلام.
على عكس ما هو موثق في وثائق المكتب، يمكن استخدام حرف واحد فقط بدلا من خمسة أحرف. وهذا ينطبق على كل من MS كلمة و Aspose.Words.
لا ينصح باستخدام مفتاح التبديل هذا لأنه لا يسمح بتحكم كبير في ما استخدمه لفصل الإدخالات وأرقام الصفحات في TOC. بدلا من ذلك، يوصى بتحرير النمط TOC المناسب مثل StyleIdentifier.TOC1 ومن هناك قم بتحرير نمط القائد مع الوصول إلى أعضاء خط معينين وما إلى ذلك. يمكن العثور على مزيد من التفاصيل حول كيفية القيام بذلك لاحقا في المقالة.

list-table-of-contents-field-aspose-words-java

Preserve Tab Entries
* (\W التبديل)*

سيؤدي استخدام مفتاح التبديل هذا إلى تحديد أي إدخالات تحتوي على حرف علامة تبويب، على سبيل المثال، عنوان يحتوي على علامة تبويب في نهاية السطر، سيتم الاحتفاظ به كحرف علامة تبويب مناسب عند ملء TOC. هذا يعني أن وظيفة حرف علامة التبويب ستكون موجودة في TOC ويمكن استخدامها لتنسيق الإدخال. على سبيل المثال، قد تستخدم بعض الإدخالات نقاط توقف علامات التبويب وأحرف علامات التبويب لمساحة النص بالتساوي. طالما أن مستوى TOC المقابل يحدد توقف علامة التبويب المكافئة، فستظهر الإدخالات التي تم إنشاؤها TOC بمسافات مماثلة.

في نفس الموقف إذا لم يتم تعريف مفتاح التبديل هذا، فسيتم تحويل أحرف علامة التبويب إلى مكافئ للمسافة البيضاء كعلامات تبويب غير عاملة. ثم لن يظهر الإخراج كما هو متوقع.

tab-table-of-contents-field-aspose-words-java

Preserve New Line Entries
* (\X التبديل)*

على غرار المفتاح أعلاه، يحدد هذا المفتاح أنه سيتم الاحتفاظ بالعناوين الممتدة عبر أسطر متعددة (باستخدام أحرف السطر الجديد، وليس الفقرات المنفصلة) كما هي في TOC الذي تم إنشاؤه. على سبيل المثال، يمكن للعنوان الذي ينتشر عبر أسطر متعددة استخدام حرف السطر الجديد (كترل + إنتر أو ControlChar.LineBreak) لفصل المحتوى عبر أسطر مختلفة. مع تحديد مفتاح التبديل هذا، سيحافظ الإدخال في TOC على أحرف الأسطر الجديدة هذه كما هو موضح أدناه.

في هذه الحالة، إذا لم يتم تعريف المفتاح، فسيتم تحويل أحرف السطر الجديدة إلى مسافة بيضاء واحدة.

tab-space-table-of-contents-field-aspose-words-java

أدخل TC الحقول

يمكنك إدراج حقل TC جديد في الموضع الحالي لـ DocumentBuilder عن طريق استدعاء طريقة DocumentBuilder.InsertField وتحديد اسم الحقل على أنه “TC” مع أي مفاتيح مطلوبة.

يوضح مثال الكود التالي كيفية إدراج حقل TC في المستند باستخدام DocumentBuilder.

غالبا ما يتم تعيين سطر معين من النص لـ TOC ويتم تمييزه بحقل TC. الطريقة السهلة للقيام بذلك في MS كلمة هي تسليط الضوء على النص واضغط ALT+SHIFT+O. يؤدي هذا تلقائيا إلى إنشاء حقل TC باستخدام النص المحدد. يمكن تحقيق نفس الأسلوب من خلال الكود. سيجد الرمز أدناه نصا مطابقا للإدخال وإدراج حقل TC في نفس موضع النص. يعتمد الرمز على نفس التقنية المستخدمة في المقالة. يوضح مثال الكود التالي كيفية العثور على حقل TC وإدراجه في النص في مستند.

تعديل جدول المحتويات

تغيير تنسيق الأنماط

لا يستخدم تنسيق الإدخالات في TOC الأنماط الأصلية للإدخالات المحددة، وبدلا من ذلك، يتم تنسيق كل مستوى باستخدام نمط TOC مكافئ. على سبيل المثال، يتم تنسيق المستوى الأول في TOC مع نمط TOC1، والمستوى الثاني تنسيق مع نمط TOC2 وهلم جرا. هذا يعني أنه لتغيير مظهر TOC يجب تعديل هذه الأنماط. في Aspose.Words يتم تمثيل هذه الأنماط من خلال StyleIdentifier.TOC1 المستقل عن اللغة إلى StyleIdentifier.TOC9 ويمكن استرجاعها من مجموعة Document.Styles باستخدام هذه المعرفات.

بمجرد استرداد النمط المناسب للمستند، يمكن تعديل تنسيق هذا النمط. ستنعكس أي تغييرات على هذه الأنماط تلقائيا في TOCs في المستند.

يغير مثال التعليمات البرمجية التالية خاصية تنسيق المستخدمة في النمط TOC المستوى الأول.

من المفيد أيضا ملاحظة أن أي تنسيق مباشر لفقرة (محددة في الفقرة نفسها وليس في النمط) تم وضع علامة عليها ليتم تضمينها في TOC سيتم نسخها في الإدخال في TOC. على سبيل المثال، إذا تم استخدام نمط Heading 1 لتمييز محتوى TOC وكان هذا النمط يحتوي على تنسيق غامق بينما تحتوي الفقرة أيضا على تنسيق مائل مطبق عليه مباشرة. لن يكون الإدخال TOC الناتج غامقا لأن هذا جزء من تنسيق النمط ولكنه سيكون مائلا حيث يتم تنسيق هذا مباشرة في الفقرة.

يمكنك أيضا التحكم في تنسيق الفواصل المستخدمة بين كل إدخال ورقم الصفحة. بشكل افتراضي، هذا خط منقط ينتشر عبر ترقيم الصفحات باستخدام حرف علامة تبويب وتوقف علامة تبويب يمين مصطف بالقرب من الهامش الأيمن.

باستخدام فئة Style التي تم استردادها لمستوى TOC المحدد الذي تريد تعديله، يمكنك أيضا تعديل كيفية ظهورها في المستند.

لتغيير كيفية ظهور هذا أولا، يجب استدعاء Style.ParagraphFormat لاسترداد تنسيق الفقرة للنمط. من هذا، يمكن استرداد علامات التبويب توقف عن طريق الاتصال ParagraphFormat.TabStops وتعديل علامة التبويب المناسبة. باستخدام هذه التقنية نفسها، يمكن نقل علامة التبويب نفسها أو إزالتها تماما.

يوضح مثال الكود التالي كيفية تعديل موضع علامة التبويب اليمنى توقف في TOC الفقرات ذات الصلة.

إزالة جدول محتويات من المستند

يمكن إزالة جدول المحتويات من المستند عن طريق إزالة جميع العقد الموجودة بين عقدة FieldStart و FieldEnd في حقل TOC.

يوضح الرمز أدناه هذا. إزالة الحقل TOC أبسط من الحقل العادي لأننا لا نتتبع الحقول المتداخلة. بدلا من ذلك، نتحقق من أن العقدة FieldEnd من النوع FieldType.FieldTOC مما يعني أننا واجهنا نهاية TOC الحالي. يمكن استخدام هذه التقنية في هذه الحالة دون القلق بشأن أي حقول متداخلة حيث يمكننا أن نفترض أن أي مستند تم تكوينه بشكل صحيح لن يحتوي على حقل TOC متداخل بالكامل داخل حقل TOC آخر.

أولا FieldStart يتم جمع العقد من كل TOC وتخزينها. ثم يتم تعداد TOC المحدد بحيث تتم زيارة جميع العقد داخل الحقل وتخزينها. ثم تتم إزالة العقد من المستند. يوضح مثال التعليمات البرمجية التالية كيفية إزالة TOC محدد من مستند.

استخراج جدول المحتويات

إذا كنت تريد استخراج جدول محتويات من أي مستند ورد، فيمكن استخدام نموذج التعليمات البرمجية التالي.