Работа со свойствами документа

Свойства документа позволяют сохранить некоторую полезную информацию о вашем документе. Эти свойства можно разделить на две группы:

  • Системные или встроенные, содержащие такие значения, как название документа, имя автора, статистика документа и другие.
  • Определяемые пользователем или пользовательские, предоставляемые в виде пар имя-значение, где пользователь может определить как имя, так и значение.

Полезно знать, что информация о API и номере версии записывается непосредственно в выходные документы. Например, при преобразовании документа в PDF, Aspose.Words заполняет поле “Приложение” значением “Aspose.Words”, а поле “Производитель PDF” - значением “Aspose.Words для .NET YY.M.N”, где YY.M.N это версия Aspose.Words, используемая для преобразования. Дополнительные сведения см. в разделе Название генератора или производителя, указанное в выходных документах.

Доступ к свойствам документа

Чтобы получить доступ к свойствам документа в Aspose.Words, используйте:

built_in_document_properties и custom_document_properties представляют собой коллекции объектов DocumentProperty. Эти объекты могут быть получены с помощью свойства indexer по имени или по индексу.

built_in_document_properties дополнительно предоставляет доступ к свойствам документа с помощью набора введенных свойств, которые возвращают значения соответствующего типа. custom_document_properties позволяет добавлять или удалять свойства документа из документа.

Класс DocumentProperty позволяет получить имя, значение и тип свойства документа. value возвращает объект, но существует набор методов, позволяющих преобразовать значение свойства в определенный тип. После того, как вы узнаете, к какому типу относится свойство, вы можете использовать один из методов DocumentProperty.to_XXX, таких как DocumentProperty.__str__ и DocumentProperty.to_int, чтобы получить значение соответствующего типа.

В следующем примере кода показано, как перечислить все встроенные и пользовательские свойства в документе:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Properties.docx")
print("1. Document name: 0", doc.original_file_name)
print("2. Built-in Properties")
for prop in doc.built_in_document_properties :
print("0 : 1", prop.name, prop.value)
print("3. Custom Properties")
for prop in doc.custom_document_properties :
print("0 : 1", prop.name, prop.value)

В Microsoft Word вы можете получить доступ к свойствам документа, используя меню “Файл → Свойства”.

work-with-document-properties-1.png

Добавление или удаление свойств документа

Вы не можете добавлять или удалять встроенные свойства документа, используя Aspose.Words. Вы можете только изменять или обновлять их значения.

Чтобы добавить пользовательские свойства документа с помощью Aspose.Words, используйте метод add, передав имя нового свойства и значение соответствующего типа. Метод возвращает только что созданный объект DocumentProperty.

Чтобы удалить пользовательские свойства, используйте метод remove, передав ему имя свойства для удаления, или метод remove_at, чтобы удалить свойство по индексу. Вы также можете удалить все свойства, используя метод clear.

Следующий пример кода проверяет, существует ли в документе пользовательское свойство с заданным именем, и добавляет еще несколько пользовательских свойств документа:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Properties.docx")
customDocumentProperties = doc.custom_document_properties
if (customDocumentProperties.get_by_name("Authorized") != None) :
return
customDocumentProperties.add("Authorized", True)
customDocumentProperties.add("Authorized By", "John Smith")
customDocumentProperties.add("Authorized Date", datetime.today())
customDocumentProperties.add("Authorized Revision", doc.built_in_document_properties.revision_number)
customDocumentProperties.add("Authorized Amount", 123.45)

В следующем примере кода показано, как удалить пользовательское свойство документа:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Properties.docx")
doc.custom_document_properties.remove("Authorized Date")

Обновление встроенных свойств документа

Aspose.Words не обновляет свойства документа автоматически, как это происходит с некоторыми свойствами Microsoft Word, но предоставляет метод для обновления некоторых статистических встроенных свойств документа. Вызовите метод update_word_count для пересчета и обновления следующих свойств:

Создайте новое пользовательское свойство, связанное с контентом

Aspose.Words предоставляет метод add_link_to_content для создания нового пользовательского свойства документа, связанного с содержимым. Это свойство возвращает только что созданный объект свойств или значение null, если значение link_source недопустимо.

В следующем примере кода показано, как настроить ссылку на пользовательское свойство:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
builder.start_bookmark("MyBookmark")
builder.writeln("Text inside a bookmark.")
builder.end_bookmark("MyBookmark")
# Retrieve a list of all custom document properties from the file.
customProperties = doc.custom_document_properties
# Add linked to content property.
customProperty = customProperties.add_link_to_content("Bookmark", "MyBookmark")
customProperty = customProperties.get_by_name("Bookmark")
isLinkedToContent = customProperty.is_link_to_content
linkSource = customProperty.link_source
customPropertyValue = customProperty.value

Получение переменных документа

Вы можете получить набор переменных документа, используя свойство variables. Имена и значения переменных являются строками.

В следующем примере кода показано, как добавлять переменные документа и получать к ним доступ:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Document.docx")
doc.variables.add("test", "test")
variables = ""
for entry in doc.variables :
name = entry.key
value = entry.value
if (variables == "") :
variables = "Name: " + name + "," + "Value: " + value
else :
variables = variables + "Name: " + name + "," + "Value: " + value

Удалить личную информацию из документа

Если вы хотите поделиться документом Word с другими пользователями, вы можете удалить личную информацию, такую как имя автора и компания. Для этого используйте свойство remove_personal_information, чтобы установить флаг, указывающий на то, что Microsoft Word удалит всю пользовательскую информацию из комментариев, правок и свойств документа при сохранении документа.

В следующем примере кода показано, как удалить личную информацию:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET
doc = aw.Document(docs_base.my_dir + "Properties.docx")
doc.remove_personal_information = True
doc.save(docs_base.artifacts_dir + "DocumentPropertiesAndVariables.remove_personal_information.docx")