حقول انتقالية
الحقول الانتقالية
هذا الدليل يوضح كيفية العمل مع أنواع الحقول الانتقالية — حقول الباركود القديمة وحقول التوافق — في 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 |