Як працювати з властивостями документа у .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 — значення перерахування PropertyType: Boolean, DateTime, Double, Number, String, StringArray, ObjectArray, ByteArray або Other. Оскільки Value нетипізований, використовуйте відповідний типізований accessor замість прямого приведення типу: ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray() або ToString(). Перевірте IsLinkToContent та LinkSource, щоб дізнатись, чи властивість пов’язана з вмістом документа (див. Крок 3), а не містить статичне значення.


Крок 6: Перевірка стану захисту документа

BuiltInDocumentProperties.Security повідомляє про DocumentSecurity значення, що описує збережені метадані захисту документа: None, PasswordProtected, ReadOnlyRecommended, ReadOnlyEnforced або ReadOnlyExceptAnnotations. Прочитайте цю властивість перед тим, як вирішувати, чи потрібна подальша обробка, пов’язана із захистом, для завантаженого документа.


Поширені проблеми та виправлення

Індексація CustomDocumentProperties колекція за назвою повертає нічого придатного. Властивість не існує в цьому документі. Викличте Contains(name) спочатку, або додайте властивість з відповідним Add(name, value) перевантаженням.

Читання значення користувацької властивості повертає неправильний тип. DocumentProperty.Value не типізовано object; викликальник передбачив тип, який не відповідає Type. Використовуйте відповідний typed accessor (ToInt(), ToDouble(), ToDateTime(), ToBool(), ToByteArray()) на основі DocumentProperty.Type.

Значення пов’язаної custom property виглядає застарілим. property пов’язана via AddLinkToContent, і bookmarked content змінився. Підтвердіть linkSource bookmark все ще позначає діапазон, який має подавати значення property.

Word statistics, такі як Characters or Lines не відповідає document’s actual current content. Вбудована статистика відображає збережені метадані, а не живий підрахунок. Перераховуйте та оновлюйте відповідні BuiltInDocumentProperties значення, якщо потрібен актуальний підрахунок.


Поширені запитання

Як прочитати або встановити автора та назву документа?

Використовуйте Document.BuiltInDocumentProperties.Author і .Title безпосередньо — це звичайні рядкові властивості в колекції BuiltInDocumentProperties, до якої можна дістатися через Document.BuiltInDocumentProperties.

Як додати метадані, специфічні для застосунку, які не є стандартною властивістю Word?

Використовуйте Document.CustomDocumentProperties.Add(name, value) з назвою та значенням властивості; відповідне перевантаження Add вибирається залежно від типу значення.

У чому різниця між BuiltInDocumentProperties і CustomDocumentProperties?

BuiltInDocumentProperties — це фіксований набір стандартних полів метаданих Word, доступних як іменовані члени. CustomDocumentProperties — це відкритий, іменований збір DocumentProperty значень для метаданих, визначених застосунком, доступних за ім’ям через індексатор (наприклад, properties[name]) і Contains.

Як зробити так, щоб користувацька властивість відстежувала частину вмісту документа замість статичного значення?

Використовуйте CustomDocumentProperties.AddLinkToContent(name, linkSource), передаючи назву закладки як linkSource; тоді значення властивості відображатиме вміст цієї закладки.

Як перевірити, чи захищений документ паролем?

Прочитайте Document.BuiltInDocumentProperties.Security, значення DocumentSecurity; PasswordProtected вказує, що збережені метадані документа оголошують захист паролем.


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

 Українська