עבודה עם תכונות המסמך
עבודה עם מאפייני מסמך
מדריך זה מראה כיצד לקרוא ולנהל את המטא-דאטה של מסמך 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() | מתודות גישה טיפוסיות לערך של מאפיין |
PropertyType | Enum המתאר את סוג ערך של DocumentProperty |
DocumentSecurity | Enum המתאר את מצב ההגנה של המסמך, דרך BuiltInDocumentProperties.Security |