כיצד לעבוד עם שדות מעבר ב-.NET

כיצד לעבוד עם שדות מעבר ב-.NET

כיצד לעבוד עם שדות מעבר ב-.NET

Aspose.Words FOSS עבור .NET מייצג קבוצת סוגי שדות Word ישנים — שדות ברקוד וקבוצה קטנה של שדות תאימות לפני-Open-XML — דרך מחלקות ייעודיות ב- Aspose.Words.Fields מרחב השמות, המכונה באופן בלתי רשמי transitional שדות כאן. מדריך זה מראה כיצד למצוא, לקרוא ולתצורת אותם. כל מחלקת שדה מעבר נגזרת מהבסיס Field סוג, לצד הגנרי Field אובייקט שמוצג על ידי Document.Range.Fields.


מדריך שלב-אחר-שלב

שלב 1: מציאת שדות transitional במסמך

ספירת Document.Range.Fields והשוואת Type של כל שדה (ערך FieldType) אל הקבועים הרלוונטיים — FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef או FieldInfo — ולאחר מכן המרת Field הגנרי למחלקה המתאימה כדי לגשת לתכונות הספציפיות שלו. תמיד יש לבדוק את Type לפני ההמרה: המרה למחלקת שדה שגויה גורמת ל-InvalidCastException.


שלב 2: הגדרת שדה DISPLAYBARCODE או MERGEBARCODE

FieldDisplayBarcode (השדה DISPLAYBARCODE) ו-FieldMergeBarcode (השדה MERGEBARCODE, המיישם גם את IMergeFieldSurrogate למיזוג דואר) חולקים את אותו סט של תכונות קונפיגורציית ברקוד: BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar ו-FixCheckDigit. יש להגדיר אלה על מופע השדה, ואז לקרוא ל-Update() כך ש-Result ישקף את הקונפיגורציה החדשה לפני שמירת המסמך.


שלב 3: קריאת נתוני שדה BARCODE (דואר) מיושן

FieldBarcode מיישם את השדה הישן BARCODE, שהוא ספציפית שדה ברקוד דואר אמריקאי (POSTNET) ולא ברקוד כללי — הוא אינו חולק את תכונות BarcodeType/BarcodeValue משלב 2. במקום זאת הוא חושף את PostalAddress (הכתובת שהברקוד מקודד), FacingIdentificationMark, IsUSPostalAddress ו-IsBookmark. יש לבדוק את Field.Type מול FieldType.FieldBarcode באופן ספציפי לפני קריאת תכונות אלו, מכיוון שהמרת שדה DISPLAYBARCODE או MERGEBARCODE ל-FieldBarcode לא תחשוף את התכונות הצפויות.


שלב 4: יצירת תמונות ברקוד עם מחולל מותאם אישית

גרסה זו של FOSS כוללת נתוני שדה ברקוד אך אינה כוללת מנוע רינדור ברקוד. BarcodeParameters הוא מיכל העברה שמאחד הגדרות משתי משפחות שדות ברקוד — תכונות DISPLAYBARCODE/MERGEBARCODE משלב 2 והתכונות הדואריות משלב 3 — לאובייקט יחיד המועבר למעבד. יש ליישם את IBarcodeGenerator, לחשוף את GetBarcodeImage(parameters) ואת GetOldBarcodeImage(parameters) הישנים, כדי לספק את רינדור התמונה בפועל; ללא יישום מסופק, שדות הברקוד מחזיקים רק נתוני קונפיגורציה.


שלב 5: עבודה עם שדות תאימות מיושנים

ארבעה מחלקות נוספות מכסות קודי שדה ישנים שעדיין נמצאים בקבצי .docx מיושנים. FieldBidiOutline מיישם את השדה BIDIOUTLINE למספרת מתאר מימין לשמאל ואינו חושף תכונות מעבר למשטח המשותף Field. FieldEQ מיישם את השדה המשוואה EQ וכן חושף את AsOfficeMath() כדי להמיר את תוכנו לאובייקט OfficeMath — זה מצליח רק כאשר השדה מקודד משוואה בפועל. FieldFootnoteRef מיישם את השדה FOOTNOTEREF, המקשר הערה שולית או סוף-פסקה, והוא גם אינו חושף תכונות מעבר למשטח המשותף Field. FieldInfo מיישם את השדה INFO, וקורא או כותב תכונת מידע סיכום של המסמך דרך תכונותיו InfoType ו-NewValue.


שלב 6: עדכון או הקפאת ערך של שדה מעבר

כל מחלקת שדה מעבר יורשת GetFieldCode() (טקסט הקוד הבסיסי של השדה), Update() (מחזירה את התוצאה), Unlink() (מחליפה את השדה בתוצאתו המחושבת האחרונה כטקסט סטטי), ו-Remove() (מוחקת את השדה). יש לקרוא ל-Update() לאחר שינוי תצורת כל שדה כך ש-Result משקפת את השינוי, ולהשתמש ב-Unlink() כאשר ערכו הנוכחי של השדה צריך להיות קפוא במקום להישאר ניתן לחישוב מחדש.


בעיות נפוצות ותיקונים

InvalidCastException בעת המרה של Field למחלקת שדה מעבר. הלא נכון FieldType הוערך. בדוק Field.Type בהתאם להתאמה FieldType קבוע לפני ההמרה.

A DISPLAYBARCODE/MERGEBARCODE המאפיינים של השדה חסרים לאחר ההמרה. השדה הומר ל FieldBarcode במקום FieldDisplayBarcode/FieldMergeBarcode (או להפך) — מחלקות אלו מציגות קבוצות מאפיינים שונות למרות שכל שלושן מייצגות נתוני ברקוד. אשר Field.Type לפני המרה.

שדות קוד ברקוד נושאים נתונים אך אין תמונה שמוצגת. לא IBarcodeGenerator היישום סופק. ספק גנרטור מותאם אישית המיישם GetBarcodeImage(parameters) — גרסה זו אינה כוללת מנוע רינדור קוד ברקוד מובנה.

FieldEQ.AsOfficeMath() מחזיר תוצאות בלתי צפויות. השדה אינו מכיל הוראת משוואה תקינה. בדוק את השדה GetFieldCode() פלט לפני ניסיון ההמרה.

FieldInfoהערך של ’s אינו מתעדכן לאחר ההגדרה NewValue. השדה לא עודכן לאחר השינוי. Call Update() על השדה לאחר שינוי NewValue.


שאלות נפוצות

מה משמעות המילה “transitional” עבור סוגי השדות האלה?

זה לא מונח רשמי של Word — הוא מקבץ מחלקות שדה במרחב השמות Aspose.Words.Fields של גרסה זו שמיישמות קודי שדה ישנים (שדות ברקוד ושדות התאימות לפני-Open-XML) דרך המחלקות החזקות-סוג שלהם במקום להיות מטופלות רק דרך האובייקט הכללי Field.

האם FieldBarcode משתמש באותו המאפיינים כמו FieldDisplayBarcode?

לא. FieldBarcode מיישם את השדה הישן BARCODE (postal/POSTNET) ומחשוף את PostalAddress, FacingIdentificationMark, IsUSPostalAddress ו-IsBookmark. FieldDisplayBarcode ו-FieldMergeBarcode חולקים קבוצת מאפיינים שונה — BarcodeType, BarcodeValue, SymbolHeight, והגדרות רינדור קשורות.

האם גרסה זו מייצרת תמונות ברקוד?

לא. FieldBarcode, FieldDisplayBarcode ו-FieldMergeBarcode מחזיקים נתוני תצורת ברקוד ומחשפים את הממשק IBarcodeGenerator, אך אין מנוע רינדור ברקוד שנכלל בגרסה זו — נדרשת מימוש מותאם אישית של IBarcodeGenerator כדי לייצר תמונה.

האם אני יכול להמיר שדה EQ למשוואה של OfficeMath?

כן, דרך FieldEQ.AsOfficeMath(), בתנאי שקוד השדה אכן מקודד משוואה.

איך אני מוצא את כל השדות המעבריים במסמך?

רשום את Document.Range.Fields והשווה כל Field.Type נגד הקבועים הרלוונטיים של FieldType (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


ראה גם

 עברית