כיצד לעבוד עם מאפייני מסמך ב-.NET

כיצד לעבוד עם מאפייני מסמך ב-.NET

איך לעבוד עם מאפייני המסמך ב-.NET

כל מסמך Word מכיל שתי קטגוריות של מטא-דאטה — השדות הסטנדרטיים ש-Word עוקב אחריהם עבור כל קובץ, וכל ערכי היישום שהוגדרו על ידי תוכנה שהוסיפה. מדריך זה מציג כיצד לקרוא ולהגדיר את שניהם באמצעות Aspose.Words FOSS ל-.NET, תוך שימוש ב-Document.BuiltInDocumentProperties וב-Document.CustomDocumentProperties, ששתיהן נבנות בסופו של דבר על אותה ייצוג של DocumentProperty.


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

שלב 1: קריאה והגדרת מאפייני מסמך מובנים

Document.BuiltInDocumentProperties מחזיר אוסף של BuiltInDocumentProperties. מכיוון שמדובר במערך קבוע וידוע של מאפיינים, הערכים נקראים ונכתבים כחברים רגילים במקום לחפש אותם לפי שם — לדוגמה BuiltInDocumentProperties.Author, .Title, .Subject, .Manager, .Company, .Category, .Keywords ו-.Comments עבור שדות תיאוריים, או .CreatedTime, .LastSavedTime, .LastPrinted ו-.LastSavedBy עבור חותמות זמן. סטטיסטיקות כגון .Characters, .CharactersWithSpaces, .Lines ו-.Bytes נחשפות גם הן באופן זה, לצד .Template ו-.HyperlinkBase.


שלב 2: הוספת מאפיין מסמך מותאם אישית

Document.CustomDocumentProperties מחזיר CustomDocumentProperties של אוסף עבור מטא-נתונים המוגדרים על ידי היישום שאינם חלק מהמכלול המובנה של Word. קרא לאחת מהגרסאות העומס של Add(name, value) עם שם וערך טיפוסי — מחרוזת, מספר, בוליאני, או תאריך, בהתאם לאיזה תעמוס תואם לסוג הערך — כדי ליצור מאפיין חדש.


שלב 3: קישור מאפיין מותאם לתוכן המסמך

במקום ערך סטטי, מאפיין מותאם יכול לעקוב אחרי טווח תוכן מסומן בסימנייה כך שערכו נשאר מסונכרן עם אותו תוכן. קרא ל-CustomDocumentProperties.AddLinkToContent(name, linkSource), תוך העברת שם הסימנייה כ-linkSource, במקום לסנכרן ידנית מאפיין סטטי בכל פעם שהתוכן המקושר משתנה.


שלב 4: חיפוש, בדיקה והסרת מאפיינים

BuiltInDocumentProperties ו-CustomDocumentProperties נגזרים מהמחלקה האבסטרקטית DocumentPropertyCollection, ולכן נבדקים באותו האופן: גישה לפי שם (למשל properties[name]) מחזירה מאפיין, Contains(name) בודקת אם הוא קיים, IndexOf(name) מחזירה את המיקום שלו, ו-Count מדווחת כמה מאפיינים האוסף מכיל. קרא ל-Contains(name) לפני גישה לפי שם כאשר ייתכן שמאפיין מותאם אינו קיים, כדי להימנע מטיפול במאפיין חסר כנתיב חריגה. הסר מאפיין באמצעות Remove(name) או RemoveAt(index), או נקה את כל המאפיינים באוסף באמצעות Clear().


שלב 5: קריאת ערך של מאפיין מותאם ללא ידיעת סוגו מראש

DocumentProperty מכיל Name, Value ללא טיפוס, ו-Type — ערך enum של PropertyType: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray או Other. מכיוון ש-Value אינו טיפוסי, השתמש במגיש המתאים עם טיפוס במקום לבצע המרה ישירה: ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() או ToString(). בדוק את IsLinkToContent ו-LinkSource כדי לגלות האם מאפיין מקושר לתוכן המסמך (ראה שלב 3) במקום להחזיק ערך סטטי.


שלב 6: בדיקת מצב ההגנה של המסמך

BuiltInDocumentProperties.Security מדווח על ערך DocumentSecurity המתאר את המטא-נתונים של ההגנה המאוחסנת במסמך: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced או ReadOnlyExceptAnnotations. קרא מאפיין זה לפני שתחליט אם נדרש עיבוד נוסף הקשור להגנה על מסמך טעון.


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

אינדקס של CustomDocumentProperties אוסף לפי שם מחזיר דבר שאינו שמיש. המאפיין אינו קיים במסמך זה. קרא Contains(name) קודם, או להוסיף את המאפיין עם המתאים Add(name, value) overload.

קריאת ערך של מאפיין מותאם אישית מחזירה סוג שגוי. DocumentProperty.Value אינו טיפוסי object; המתקשר הניח טיפוס שאינו תואם Type. השתמש במגיש המוגדר המתאים (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) בהתבסס על DocumentProperty.Type.

ערך של תכונה מותאמת אישית מקושרת נראה מיושן. התכונה מקושרת דרך AddLinkToContent, והתוכן המסומן בסימנייה השתנה. אמת את linkSource הסימנייה עדיין מסמנת את הטווח שצריך להזין לערך של התכונה.

נתוני מילים כגון Characters or Lines אינם תואמים לתוכן הנוכחי בפועל של המסמך. הסטטיסטיקה המובנית משקפת מטא-נתונים מאוחסנים, לא ספירה בזמן אמת. חשב מחדש ועדכן את הערכים הרלוונטיים BuiltInDocumentProperties ערכים אם נדרש ספירה עדכנית.


שאלות נפוצות

איך אני קורא או מגדיר את המחבר והכותרת של המסמך?

השתמש ב-Document.BuiltInDocumentProperties.Author וב-.Title ישירות — הם מאפייני מחרוזת רגילים באוסף BuiltInDocumentProperties שמגיע מ-Document.BuiltInDocumentProperties.

איך אני מוסיף מטא-נתונים ספציפיים ליישום שאינם מאפיין סטנדרטי של Word?

השתמש ב-Document.CustomDocumentProperties.Add(name, value) עם שם המאפיין והערך; ה-overload המתאים של Add נבחר על פי סוג הערך.

מה ההבדל בין BuiltInDocumentProperties ל-CustomDocumentProperties?

BuiltInDocumentProperties הוא קבוצת השדות הסטנדרטיים הקבועה של Word, הנגישה כחברים עם שם. CustomDocumentProperties היא אוסף פתוח בעל שם של ערכי DocumentProperty למטא-נתונים שמוגדרים על ידי היישום, הנגישה לפי שם דרך האינדקסר (למשל properties[name]) ו-Contains.

איך אני גורם למאפיין מותאם אישית לעקוב אחרי חלק מהתוכן של המסמך במקום ערך סטטי?

השתמש ב-CustomDocumentProperties.AddLinkToContent(name, linkSource), כאשר מעביר שם סימנייה כ-linkSource; ערך המאפיין לאחר מכן משקף את התוכן המסומן.

איך אני בודק אם מסמך מוגן בסיסמה?

קרא Document.BuiltInDocumentProperties.Security, ערך DocumentSecurity; PasswordProtected מצביע על כך שהמטא-דאטה השמור של המסמך מצהיר על הגנה בסיסמה.


ראה גם

 עברית