עבודה עם תכונות המסמך

עבודה עם תכונות המסמך

עבודה עם מאפייני מסמך

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


מאפייני מסמך מובנים

Document.BuiltInDocumentProperties מחזיר אוסף BuiltInDocumentProperties הכולל את המטא-דאטה הסטנדרטי שה-Word עוקב אחריו עבור כל מסמך: שדות תיאוריים כגון Title, Subject, Author, Manager, Company, Category, Keywords ו-Comments; חותמות זמן כגון CreatedTime, LastSavedTime, ו-LastPrinted, יחד עם LastSavedBy ו-RevisionNumber; וסטטיסטיקות כגון Words, Characters, CharactersWithSpaces, Lines, Paragraphs ו-Pages. Security מדווח על מצב ההגנה של המסמך כערך DocumentSecurity, ו-Template, NameOfApplication ו-TotalEditingTime מתארים את סביבת הכתיבה. מכיוון ש-BuiltInDocumentProperties היא קבוצה קבועה וידועה של מאפיינים, ערכים בודדים נקראים ונכתבים כמאפיינים רגילים (BuiltInDocumentProperties.Author = "...") במקום להיחשף לפי שם.

מאפייני מסמך מותאמים אישית

Document.CustomDocumentProperties מחזיר אוסף CustomDocumentProperties עבור מטא-דאטה שהוגדר על-ידי היישום שאינו חלק מהמגוון המובנה של Word. מספר עומסים של Add(name, value) יוצרים מאפיין חדש משם וערך מסוג (מחרוזת, מספר, בוליאני או תאריך, בהתאם לעומס), ו-AddLinkToContent(name, linkSource) יוצר מאפיין שערכו מקושר ועוקב אחרי טווח תוכן מסומן במועדון במסמך במקום להחזיק ערך סטטי. אינדקס לפי שם (למשל properties[name]) ו-Contains(name) מחפשים מאפיין, IndexOf(name) מחזיר את המיקום שלו, ו-Remove(name)/RemoveAt(index) מוחקים אחד.

אובייקט DocumentProperty ובסיס האוסף המשותף

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

אבטחת מסמך

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


טיפים ושיטות מומלצות

  • השתמשו בגישות המוטבעות (ToInt(), ToDouble(), ToDateTime(), ToBool()) על DocumentProperty.Value במקום להמרה ישירה של ערך object ללא טיפוס, מכיוון שסוג האחסון הבסיסי יכול להשתנות לפי PropertyType.
  • בדקו את Contains(name) לפני גישה למאגר המאפיינים לפי שם (למשל properties[name]) כאשר ייתכן שהמאפיין אינו קיים, כדי למנוע טיפול במצב של מאפיין חסר כנתיב חריגה.
  • השתמשו ב-CustomDocumentProperties.AddLinkToContent(name, linkSource) כאשר ערך של מאפיין מותאם אישית צריך תמיד לשקף חלק מסומן במסמך, במקום לסנכרן ידנית מאפיין מותאם אישית סטטי בכל שינוי של תוכן זה.
  • התייחסו לסטטיסטיקות BuiltInDocumentProperties (Words, Characters, Pages וכדומה) כערכים השמורים במטא-נתוני הקובץ במקום לספור תמיד בזמן אמת — רעננו אותם במפורש אם המסמך השתנה מאז שנכתבו בפעם האחרונה.
  • קרא את BuiltInDocumentProperties.Security כדי לבדוק את מצב ההגנה המוצהר של המסמך לפני החלטה האם נדרש עיבוד נוסף הקשור להגנה.

בעיות נפוצות

בעיהסיבהפתרון
אינדוקס של אוסף CustomDocumentProperties לפי שם מחזיר דבר שאינו שמישהמאפיין אינו קיים במסמך זהקרא ל-Contains(name) תחילה, או הוסף את המאפיין עם עומס Add(name, value) המתאים
קריאת ערך של מאפיין מותאם אישית מחזירה סוג שגויDocumentProperty.Value הוא object ללא טיפוס; המתקשר הניח טיפוס שאינו תואם Typeהשתמש במקבל המוגדר המתאים (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) על פי DocumentProperty.Type
ערך של מאפיין מותאם אישית מקושר נראה מיושןהמאפיין מקושר דרך AddLinkToContent, והתוכן המקושר השתנה ללא עדכון מתאים של המסמךאשר שהטווח המסומן linkSource עדיין משקף את התוכן המתוכנן
הסטטיסטיקות של המילים (Words, Pages, וכן הלאה) אינן תואמות לתוכן האמיתי והמעודכן של המסמךהסטטיסטיקות המובנות משקפות מטה-נתונים שמורים, ולא ספירה בזמן אמתחשב מחדש ועדכן את ערכי BuiltInDocumentProperties הרלוונטיים אם נדרשת ספירה עדכנית

FAQ

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

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

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

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

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

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

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

קבל את DocumentProperty על-ידי אינדוקס האוסף (למשל properties[name]), בדוק את Type שלו (ערך PropertyType), והשתמש במגיש המוגדר המתאים כגון ToInt(), ToDouble(), ToDateTime() או ToBool() על Value שלו.

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

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


API Reference סיכום

מחלקה/מתודהתיאור
Document.BuiltInDocumentPropertiesשדות המטא-נתונים הסטנדרטיים של Word (מחבר, כותרת, סטטיסטיקות, אבטחה, וכן הלאה)
Document.CustomDocumentPropertiesתכונות מטא-נתונים בשם המוגדרות על-ידי היישום
CustomDocumentProperties.Add(name, value)הוסף תכונה מותאמת אישית משם וערך עם טיפוס
CustomDocumentProperties.AddLinkToContent(name, linkSource)הוסף תכונה מותאמת אישית המקושרת לתוכן המסמך המסומן
DocumentPropertyCollectionבסיס מופשט משותף לשתי אוספי המאפיינים
DocumentPropertyשם של מאפיין יחיד, ערך ללא טיפוס, ו-PropertyType
DocumentProperty.ToInt() / ToDouble() / ToDateTime() / ToBool()מתודות גישה טיפוסיות לערך של מאפיין
PropertyTypeEnum המתאר את סוג ערך של DocumentProperty
DocumentSecurityEnum המתאר את מצב ההגנה של המסמך, דרך BuiltInDocumentProperties.Security

ראה גם

 עברית