حقول انتقالية

حقول انتقالية

الحقول الانتقالية

هذا الدليل يوضح كيفية العمل مع أنواع الحقول الانتقالية — حقول الباركود القديمة وحقول التوافق — في Aspose.Words FOSS لـ .NET.

Aspose.Words FOSS لـ .NET يمثل بعض أنواع حقول Word القديمة عبر مجموعة مخصصة من الفئات في الـ Aspose.Words.Fields namespace، وتُسمى غير رسميًا transitional fields. هذه حقول سابقة للمرادفات اللاحقة لحقول Open XML لكنها لا تزال صالحة داخل .docx المستندات المفتوحة من مصادر قديمة. كل نوع حقل انتقالي له فئته ذات النوع القوي المستمد من Field، إلى جانب العامة Field الكائن المعروض بواسطة Document.Range.Fields.


حقول الباركود

ثلاث فئات حقول تُنشئ أو تعرض بيانات الباركود داخل المستند: FieldBarcode (حقل BARCODE — باركود بريدي قديم له خصائصه الخاصة PostalAddress، IsBookmark، FacingIdentificationMark، وIsUSPostalAddress)، FieldDisplayBarcode (حقل DISPLAYBARCODE)، وFieldMergeBarcode (حقل MERGEBARCODE، الذي يُطبق أيضًا IMergeFieldSurrogate للاستخدام أثناء دمج البريد). FieldDisplayBarcode وFieldMergeBarcode تشتركان في نفس خصائص تكوين الباركود العامة — BarcodeType، BarcodeValue، SymbolHeight، SymbolRotation، ScalingFactor، ForegroundColor، BackgroundColor، PosCodeStyle، CaseCodeStyle، ErrorCorrectionLevel، DisplayText، AddStartStopChar، وFixCheckDigit — وهي خصائص لا يمتلكها FieldBarcode.

فئة BarcodeParameters هي حاوية تمرير تُظهر اتحاد مجموعتي الخصائص (خصائص العنوان البريدي وخصائص تكوين الباركود العامة)، وتُستخدم لنقل الإعدادات إلى مُعالج الباركود، وIBarcodeGenerator هو الواجهة التي يُطبقها مُعالج مخصص، مكشوفًا عن GetBarcodeImage(parameters) والقديمة GetOldBarcodeImage(parameters). قم بتكرار Document.Range.Fields وتحقق من Field.Type مقابل FieldType.FieldBarcode أو FieldType.FieldDisplayBarcode أو FieldType.FieldMergeBarcode لتحديد موقع هذه الحقول، ثم حوِّل إلى فئة الحقل المحددة — BarcodeValue وBarcodeType متوفران فقط بعد التحويل إلى FieldDisplayBarcode أو FieldMergeBarcode، وليس إلى FieldBarcode.


حقول التوافق القديمة

أربع فئات حقول إضافية تغطي شيفرات حقول Word القديمة التي هي أقل شيوعًا في المستندات المكتوبة حديثًا لكنها لا تزال تظهر في ملفات .docx القديمة: FieldBidiOutline (حقل BIDIOUTLINE، لتعداد الفقرات من اليمين إلى اليسار)، FieldEQ (حقل معادلة EQ، والذي يتيح أيضًا AsOfficeMath() لتحويل محتواه إلى كائن OfficeMath)، FieldFootnoteRef (حقل FOOTNOTEREF، الذي يُشير إلى إشارة حاشية سفلية أو حاشية نهائية)، وFieldInfo (حقل INFO، الذي يقرأ أو يكتب خاصية ملخص-معلومات المستند عبر خصائصه InfoType وNewValue).

كل واحدة من هذه الفئات الوراثية تشترك في نفس السطح Field: GetFieldCode() تُعيد نص الكود الأساسي للحقل، Update() تُعيد تقييم نتيجة الحقل، Unlink() تُستبدل الحقل بنتيجته المحسوبة الأخيرة، وRemove() تُحذف الحقل من المستند. يتم تنفيذ IFieldCodeTokenInfoProvider بواسطة FieldBarcode وFieldDisplayBarcode وFieldMergeBarcode وFieldInfo، لأن شيفرات حقولهم تحتوي على مفاتيح مُنظمة تتجاوز سلسلة التعليمات البسيطة.


نصائح وأفضل الممارسات

  • دائمًا تحقق من Field.Type قبل تحويل Field عام إلى إحدى فئات الحقول الانتقالية — التحويل الخاطئ يُطلق استثناء InvalidCastException.
  • استدعِ Update() بعد تغيير خصائص حقل الباركود حتى يعكس Result التكوين الجديد قبل حفظ المستند.
  • يُنجح FieldEQ.AsOfficeMath() فقط عندما يكون حقل EQ فعليًا يشفّر معادلة؛ تحقق من أن Result الخاص بالحقل يبدو كصيغة قبل استدعائه.
  • استخدم Unlink() عندما تريد تجميد القيمة الحالية لحقل كنص ثابت، متخلصًا من إمكانية إعادة حسابه لاحقًا.
  • فئات حقول الباركود تحمل البيانات فقط — هذه النسخة المفتوحة المصدر لا تتضمن محرك عرض الباركود، لذا يعتمد إخراج GetBarcodeImage() على تنفيذ IBarcodeGenerator الذي تزوده.

المشكلات الشائعة

المشكلةالسببإصلاح
InvalidCastException عند تحويل Fieldتم افتراض FieldType غير صحيحتحقق من Field.Type مقابل الثابت المتطابق FieldType أولاً
FieldEQ.AsOfficeMath() يعطي نتائج غير متوقعةالحقل لا يحتوي على تعليمة معادلة صالحةافحص مخرجات GetFieldCode() قبل التحويل
حقل الباركود لا يحتوي على صورة مُعالجةلم يتم توفير تنفيذ IBarcodeGeneratorقدِّم مولدًا مخصصًا يطبق GetBarcodeImage()
قيمة FieldInfo لم يتم تحديثها بعد تغيير NewValueالحقل غير محدثاستدعِ Update() على الحقل بعد تعديل NewValue

FAQ

ماذا يعني مصطلح “الانتقالي” لهذه الأنواع من الحقول؟

ليس مصطلحًا رسميًا في Word — فهو يجمع فئات الحقول في مساحة الاسم Aspose.Words.Fields الخاصة بهذا الإصدار التي تنفّذ أكواد الحقول القديمة (الباركود وحقول التوافق قبل Open-XML) عبر فئاتها ذات الأنواع القوية بدلاً من التعامل معها فقط عبر الكائن العام Field.

هل يقوم هذا الإصدار بإنشاء صور الباركود؟

لا. FieldBarcode وFieldDisplayBarcode وFieldMergeBarcode تحتفظ ببيانات الباركود وتكشف عن واجهة IBarcodeGenerator، لكن لا يوجد محرك مدمج لإنشاء الباركود في هذا الإصدار — عليك توفير تنفيذ IBarcodeGenerator الخاص بك.

هل يمكنني تحويل حقل EQ إلى معادلة OfficeMath؟

نعم، عبر FieldEQ.AsOfficeMath()، بشرط أن يكون رمز الحقل فعليًا يشفّر معادلة.

كيف أجد جميع الحقول الانتقالية في مستند؟

عدّ Document.Range.Fields وقارن كل Field.Type بالثوابت FieldType ذات الصلة (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


ملخص API Reference

صنف / طريقةوصف
FieldBarcodeيُنفّذ الحقل BARCODE
FieldDisplayBarcodeيُنفّذ الحقل DISPLAYBARCODE
FieldMergeBarcodeيُنفّذ حقل دمج البريد بالباركود MERGEBARCODE
BarcodeParametersحاوية لإعدادات الباركود التي تُمرَّر إلى المُولِّد
IBarcodeGeneratorواجهة لمُصمِّم صورة باركود مخصص
FieldBidiOutlineيُنفّذ الحقل BIDIOUTLINE
FieldEQيُنفّذ حقل معادلة EQ; AsOfficeMath() يتحوَّل إلى OfficeMath
FieldFootnoteRefيطبق الحقل FOOTNOTEREF
FieldInfoيطبق حقل خاصية المستند INFO

انظر أيضاً

 العربية