كيفية العمل مع الروابط والإشارات في .NET
يوضح هذا الدليل كيفية إدراج الارتباطات التشعبية، والإشارات المتبادلة إلى الإشارات المرجعية، والحقول ذات القيم المطالب بها، وحقل الاستشهاد في Aspose.Words FOSS لـ .NET، باستخدام FieldHyperlink, FieldRef, FieldPageRef, FieldCitation، والارتباط والمرجع الآخرين Field الفئات الفرعية في Aspose.Words.Fields مساحة الأسماء. يغطي إدراج ارتباط تشعبي بسيط، وإنشاء إشارات مرجعية والإشارة المتبادلة إليها، وطلب قيم أثناء تحديث الحقل، والاستشهاد بمصادر الببليوغرافيا.
دليل خطوة بخطوة
الخطوة 1: تثبيت الحزمة
Aspose.Words FOSS for .NET لا ينشر بعد حزمة NuGet – قم ببناء المكتبة من المصدر بدلاً من ذلك. استنسخ https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git، ثم ابنِ Aspose.Words.sln في وضعية Release باستخدام مجموعة تطوير .NET SDK وارجع إلى تجميع Aspose.Words الناتج من مشروعك. تستهدف المكتبة .NET Standard 2.0، لذا تعمل على .NET Framework 4.6.2+ و.NET 6/8/10.
الخطوة 2: استيراد الفئات المطلوبة
أضف توجيه using Aspose.Words; لـ Document وDocumentBuilder، وتوجيه using Aspose.Words.Fields; لـ FieldHyperlink، FieldRef، FieldPageRef، FieldNoteRef، FieldStyleRef، FieldSet، FieldAsk، FieldFillIn، FieldCitation، FieldBibliography، وباقي فئات الحقول التي يغطيها هذا الدليل.
الخطوة 3: إدراج ارتباط تشعبي
لإنشاء ارتباط تشعبي بسيط، استدعِ DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark) – مرّر isBookmark: false كهدف URL أو true للربط بعلامة مرجعية في نفس المستند. انتقل إلى إنشاء FieldHyperlink مباشرةً عندما تكون هناك حاجة لخصائص لا يتيحها الاختصار: Address و SubAddress يحملان عنوان URL الهدف أو الموقع داخل المستند، ScreenTip يحدد تلميح التمرير، OpenInNewWindow و IsImageMap هما علامات عرض، وTarget يحدد إطار المتصفح.
الخطوة 4: إنشاء علامة مرجعية للإشارة إليها
استدعِ DocumentBuilder.StartBookmark(bookmarkName) قبل المحتوى الذي يجب أن تغطيه العلامة المرجعية، وDocumentBuilder.EndBookmark(bookmarkName) بعده، باستخدام نفس الاسم في الاستدعائين. DocumentBuilder.MoveToBookmark(bookmarkName) ينقل المؤشر إلى علامة مرجعية موجودة مسبقًا – مفيد للتنقل إلى موقع قبل إدراج حقل إشارة متقاطع بالقرب منه.
الخطوة 5: إدراج إشارة متقاطعة إلى تلك العلامة المرجعية
FieldRef (حقل REF)، FieldPageRef (PAGEREF)، وFieldNoteRef (NOTEREF) كلّها تُحل إلى محتوى في علامة مرجعية مسماة عبر خاصية BookmarkName. اضبط InsertHyperlink لجعل الإشارة قابلة للنقر، وInsertRelativePosition لتقرير موضع نسبي (“أعلى” / “أسفل”) بدلاً من النص المشار إليه نفسه. يدعم FieldRef أيضًا خيارات ترقيم الفقرات — InsertParagraphNumber، InsertParagraphNumberInFullContext، InsertParagraphNumberInRelativeContext، NumberSeparator — وIncludeNoteOrComment. FieldStyleRef (STYLEREF) تُحل إلى أقرب فقرة مُنسقة بنمط StyleName بدلاً من علامة مرجعية، مع SearchFromBottom للبحث للخلف من موضع الحقل. FieldSet (SET) تُعرّف قيمة نصية مُشار إليها — BookmarkName وBookmarkText — يمكن لحقل REF آخر أن يحلّها.
الخطوة 6: طلب قيمة أثناء التحديث
FieldAsk (ASK) و FieldFillIn (FILLIN) يطلب قيمة من أي شخص يقوم بتحديث الحقل: ضبط PromptText إلى النص المعروض للمستخدم، DefaultResponse لقيمة احتياطية، و PromptOnceOnMailMerge للحد من تكرار الطلبات أثناء دمج البريد. FieldAsk بالإضافة إلى ذلك، يخزن إجابته في BookmarkName حتى تتمكن الحقول الأخرى من الإشارة إليه. لتحديث الحقول دون تدخل يدوي، قدم الإجابات برمجيًا بدلاً من طلبها تفاعليًا؛ راجع دليل الحقول لواجهة الاستدعاء التي تقوم بذلك.
الخطوة 7: الإشارة إلى محتوى خارجي أو مرتبط
FieldDde (DDE) و FieldDdeAuto (DDEAUTO) يربطان بالمحتوى في تطبيق آخر عبر ProgId، SourceFullName، و SourceItem، مع InsertAsText، InsertAsHtml، InsertAsPicture، InsertAsRtf، InsertAsUnicode، و InsertAsBitmap لاختيار التمثيل المُدرج، و AutoUpdate / IsLinked تتحكم في سلوك التحديث. FieldLink (LINK) هو ما يعادل OLE-link، مضيفًا FormatUpdateType. FieldImport (IMPORT) و FieldIncludePicture (INCLUDEPICTURE) يجلبان رسمًا بيانيًا خارجيًا عبر SourceFullName و GraphicFilter. FieldInclude (INCLUDE) و FieldIncludeText (INCLUDETEXT) يجلبان محتوى مستند خارجي، مع BookmarkName لتحديد نطاق الإدراج و LockFields لمنع تحديثه؛ FieldIncludeText يدعم أيضًا مصادر XML عبر Encoding، MimeType، NamespaceMappings، XPath، و XslTransformation.
الخطوة 8: الإشارة إلى كتل البناء ومداخل القاموس
FieldAutoText (AUTOTEXT)، FieldAutoTextList (AUTOTEXTLIST)، و FieldGlossary (GLOSSARY) جميعها تشير إلى مدخل كتلة بناء مسمى عبر EntryName؛ FieldAutoTextList يضيف ListStyle و ScreenTip لتقديمه بأسلوب القائمة.
الخطوة 9: إدراج حقول الاستشهاد والببليوغرافيا
FieldCitation (CITATION) و FieldBibliography (BIBLIOGRAPHY) عرض المحتوى المستمد من بيانات ببليوغرافيا المستند. تعيين FieldCitation.SourceTag (أو البديل AnotherSourceTag) لتحديد أي مصدر يتم الاقتباس منه، واستخدام Prefix, Suffix, PageNumber, VolumeNumber، وال Suppress* علامات (SuppressAuthor, SuppressTitle, SuppressYear) للتحكم في طريقة تنسيق الاقتباس. FieldBibliography.SourceTag, FilterLanguageId، و FormatLanguageId تتحكم في المصادر التي تظهر في الببليوغرافيا المُعالجة وبأي لغة. لا يتم عرض هذه الحقول بشكل صحيح إلا بعد وجود Source السجلات المطابقة – انظر دليل الببليوغرافيا لبناء تلك.
المشكلات الشائعة والحلول
حقل REF أو PAGEREF أو NOTEREF يُظهر نتيجة خطأ ال BookmarkName المستهدف غير موجود في المستند. أنشئ الإشارة المرجعية باستخدام DocumentBuilder.StartBookmark() / EndBookmark() قبل تحديث الحقل.
ASK أو FILLIN الحقل يمنع تحديثًا غير مراقب لا يتم تعيين أي callback لتوفير إجابة برمجيًا. عيّن callback تحديث الحقل الموضح في ال دليل الحقول، أو اضبط DefaultResponse على الحقل بحيث يكون له قيمة احتياطية.
حقل CITATION أو BIBLIOGRAPHY يظهر فارغًا ال SourceTag لا يتطابق مع أي Source في بيانات bibliography للمستند. أضف المطابقة Source – انظر إلى دليل الببليوغرافيا.
حقل DDE أو DDEAUTO أو LINK لا يتم تحديثه تشير هذه الحقول إلى مصدر OLE خارجي غير متاح خارج سياق Windows/OLE الأصلي. اعتبر النتيجة المخزنة للحقول كآخر قيمة معروفة في هذه الحالة.
رابط تشعبي تم إدخاله باستخدام InsertHyperlink يفتقر إلى خاصية أحتاجها DocumentBuilder.InsertHyperlink() هو اختصار لا يكشف كل FieldHyperlink خاصية. أنشئ أو استرجع الـ FieldHyperlink مباشرة لتعيين خصائص مثل ScreenTip or IsImageMap.
الأسئلة المتكررة
ما الفرق بين FieldRef و FieldStyleRef؟
FieldRef يُحلّ إلى محتوى في علامة مرجعية مسماة (BookmarkName)؛ بينما FieldStyleRef يُحلّ إلى أقرب فقرة مُنسقة باستخدام StyleName المعطى، مستقلة عن العلامات المرجعية.
كيف يمكنني إدراج ارتباط تشعبي بسيط دون إنشاء حقل يدوياً؟
استدعِ DocumentBuilder.InsertHyperlink(displayText, urlOrBookmark, isBookmark).
هل هذه الفئات الخاصة بالروابط وحقول الإشارة في مساحة أسماء منفصلة عن باقي الحقول؟
لا — FieldHyperlink، FieldRef، FieldCitation وبقية الفئات المذكورة هنا هي فئات فرعية عادية من Field في مساحة الاسم Aspose.Words.Fields، وهي نفس مساحة الاسم المستخدمة لكل نوع حقل آخر.
كيف ترتبط حقول الاستشهاد بنموذج بيانات الببليوغرافيا؟
FieldCitation and FieldBibliography عرض المحتوى عن طريق البحث عن SourceTag ضد Source السجلات الموضحة في دليل الببليوغرافيا – هذه الفئات الحقلية تتعامل مع العرض، بينما Source and Contributor الفئات تحتفظ بالبيانات الأساسية.
كيف أنشئ إشارة مرجعية قبل الإشارة إليها؟
استدعِ DocumentBuilder.StartBookmark(bookmarkName) قبل المحتوى، وDocumentBuilder.EndBookmark(bookmarkName) بعده، باستخدام نفس الاسم في كلا الاستدعائين.