שדות מעבר
שדות מעבריים
מדריך זה מראה כיצד לעבוד עם סוגי שדות מעבריים — שדות ברקוד מורשת ושדות תאימות — ב-Aspose.Words FOSS עבור .NET.
Aspose.Words FOSS עבור .NET מייצג סוגים מסוימים של שדות Word ישנים דרך סט ייעודי של מחלקות ב- Aspose.Words.Fields מרחב השמות, המכונה בצורה בלתי פורמלית transitional שדות. אלו שדות שקודמים למקבילים של שדות Open XML מאוחרים יותר אך נשארים תקפים בתוך .docx מסמכים שנפתחים ממקורות מדור קודם. לכל סוג שדה מעבר יש מחלקה בעלת טיפוס חזק המורשת מ- Field, לצד ה-generic 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שאתה מספק.
בעיות נפוצות
| Issue | Cause | תיקון |
|---|---|---|
InvalidCastException בעת המרה של Field | הוערך FieldType שגוי | בדוק Field.Type כנגד הקבוע המתאים FieldType תחילה |
FieldEQ.AsOfficeMath() מחזיר תוצאות בלתי צפויות | השדה אינו מכיל הנחיית משוואה תקינה | בדוק את פלט GetFieldCode() לפני ההמרה |
| שדה הברקוד אינו מציג תמונה | לא סופק יישום של IBarcodeGenerator | ספק מחולל מותאם אישית שמיישם את GetBarcodeImage() |
הערך של FieldInfo לא עודכן לאחר שינוי NewValue | השדה לא עודכן | הפעל Update() על השדה לאחר שינוי NewValue |
FAQ
מה משמעות המילה “transitional” עבור סוגי השדות האלה?
זה אינו מונח רשמי של 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 |