Робота з властивостями документа

Робота з властивостями документа

Робота з властивостями документа

Цей посібник показує, як читати та керувати метаданими документа 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 походять від абстрактного DocumentPropertyCollection, який визначає індексатор за назвою, GetEnumerator(), Contains(name), IndexOf(name) і Count — тому обидві колекції переглядаються однаково, хоча вбудовані властивості фіксовані, а користувацькі властивості відкриті. Окремо, DocumentProperty має Name, нетипізований Value і Type (значення переліку 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Використовуйте відповідний типізований accessor (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Перечислення, що описує тип значення DocumentProperty
DocumentSecurityПерелічення, що описує стан захисту документа, через BuiltInDocumentProperties.Security

Дивіться також

 Українська