שדות מעבר

שדות מעבריים

מדריך זה מראה כיצד לעבוד עם סוגי שדות מעבריים — שדות ברקוד מורשת ושדות תאימות — ב-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 שאתה מספק.

בעיות נפוצות

IssueCauseתיקון
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

ראה גם

 עברית