Робота з властивостями документа
Властивості документа дозволяють зберегти деяку корисну інформацію про ваш документ. Ці властивості можна розділити на дві групи:
- Системні або вбудовані, що містять такі значення, як назва документа, ім’я автора, статистика документа та інші.
- Визначені користувачем або призначені для користувача, що надаються у вигляді пар ім’я-значення, де користувач може визначити як ім’я, так і значення.
Корисно знати, що інформація про API та номер версії записується безпосередньо у вихідні документи. Наприклад, при перетворенні документа в PDF, Aspose.Words заповнює поле “додаток” значенням “Aspose.Words”, а поле “виробник PDF” - значенням “Aspose.Words для C++ YY.M. N”, де YY.M.N - це версія Aspose.Words, яка використовується для перетворення. Додаткові відомості див. в розділі Назва генератора або виробника, зазначена у вихідних документах.
Доступ до властивостей документа
Щоб отримати доступ до властивостей документа в Aspose.Words, використовуйте:
-
BuiltInDocumentProperties для отримання вбудованих властивостей.
-
CustomDocumentProperties для отримання користувацьких властивостей.
BuiltInDocumentProperties
BuiltInDocumentProperties
Клас DocumentProperty дозволяє отримати ім’я, значення і тип властивості документа. Value повертає об’єкт, але існує набір методів, які дозволяють перетворити значення властивості на певний тип. Після того, як ви дізнаєтесь, до якого типу належить властивість, ви можете скористатися одним із методів DocumentProperty.ToXXX, таких як DocumentProperty.ToString та DocumentProperty.ToInt, щоб отримати значення відповідного типу.
Наступний приклад коду показує, як перерахувати всі вбудовані та користувацькі властивості в документі:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::String fileName = inputDataDir + u"Properties.doc"; | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(fileName); | |
std::cout << "1. Document name: " << fileName.ToUtf8String() << std::endl; | |
std::cout << "2. Built-in Properties" << std::endl; | |
for (System::SharedPtr<DocumentProperty> prop : System::IterateOver(doc->get_BuiltInDocumentProperties())) | |
{ | |
std::cout << prop->get_Name().ToUtf8String() << " : " << prop->get_Value()->ToString().ToUtf8String() << std::endl; | |
} | |
std::cout << "3. Custom Properties" << std::endl; | |
for (System::SharedPtr<DocumentProperty> prop : System::IterateOver(doc->get_CustomDocumentProperties())) | |
{ | |
std::cout << prop->get_Name().ToUtf8String() << " : " << prop->get_Value()->ToString().ToUtf8String() << std::endl; | |
} |
У Microsoft Word ви можете отримати доступ до властивостей документа за допомогою меню “Файл → Властивості”.

Додавання або видалення властивостей документа
Ви не можете додавати або видаляти вбудовані властивості документа за допомогою Aspose.Words. Ви можете лише змінювати або оновлювати їх значення.
Щоб додати власні властивості документа за допомогою Aspose.Words, використовуйте метод Add, передавши назву нової властивості та значення відповідного типу. Метод повертає щойно створений об’єкт DocumentProperty.
Щоб видалити власні властивості, використовуйте метод Remove, передавши йому ім’я властивості для видалення, або метод RemoveAt, щоб видалити властивість за індексом. Ви також можете видалити всі властивості, використовуючи метод Clear.
Наступний приклад коду перевіряє, чи існує в документі властивість користувача із заданим іменем, і додає ще кілька властивостей користувача документа:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Properties.doc"); | |
System::SharedPtr<CustomDocumentProperties> props = doc->get_CustomDocumentProperties(); | |
if (props->idx_get(u"Authorized") == nullptr) | |
{ | |
props->Add(u"Authorized", true); | |
props->Add(u"Authorized By", System::String(u"John Smith")); | |
props->Add(u"Authorized Date", System::DateTime::get_Today()); | |
props->Add(u"Authorized Revision", doc->get_BuiltInDocumentProperties()->get_RevisionNumber()); | |
props->Add(u"Authorized Amount", 123.45); | |
} |
Наступний приклад коду показує, як видалити властивість користувача документа:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Properties.doc"); | |
doc->get_CustomDocumentProperties()->Remove(u"Authorized Date"); |
Оновлення вбудованих властивостей документа
Aspose.Words не оновлює властивості документа автоматично, як це відбувається з деякими властивостями Microsoft Word, але надає метод оновлення деяких статистичних вбудованих властивостей документа. Викличте метод UpdateWordCount для перерахунку та оновлення наступних властивостей:
Створіть нову властивість користувача, пов’язану з вмістом
Aspose.Words надає метод AddLinkToContent для створення нового користувацького властивості документа, пов’язаного з вмістом. Ця властивість повертає щойно створений об’єкт властивостей або значення null, якщо значення LinkSource недійсне.
Наступний приклад коду показує, як налаштувати посилання на властивість користувача:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"test.docx"); | |
// Retrieve a list of all custom document properties from the file. | |
System::SharedPtr<CustomDocumentProperties> customProperties = doc->get_CustomDocumentProperties(); | |
// Add linked to content property. | |
System::SharedPtr<DocumentProperty> customProperty = customProperties->AddLinkToContent(u"PropertyName", u"BookmarkName"); | |
// Also, accessing the custom document property can be performed by using the property name. | |
customProperty = customProperties->idx_get(u"PropertyName"); | |
// Check whether the property is linked to content. | |
bool isLinkedToContent = customProperty->get_IsLinkToContent(); | |
// Get the source of the property. | |
System::String source = customProperty->get_LinkSource(); | |
// Get the value of the property. | |
System::String value = customProperty->get_Value()->ToString(); |
Отримання змінних документа
Ви можете отримати набір змінних документа, використовуючи властивість Variables. Імена та значення змінних є рядками.
Наступний приклад коду показує, як перераховувати змінні документа:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
// The path to the documents directory. | |
System::String inputDataDir = GetInputDataDir_WorkingWithDocument(); | |
// Load the template document. | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"TestFile.doc"); | |
System::String variables = u""; | |
for (System::Collections::Generic::KeyValuePair<System::String, System::String> entry : System::IterateOver(doc->get_Variables())) | |
{ | |
System::String name = entry.get_Key(); | |
System::String value = entry.get_Value(); | |
if (variables == u"") | |
{ | |
// Do something useful. | |
variables = System::String(u"Name: ") + name + u"," + u"Value: " + value; | |
} | |
else | |
{ | |
variables = variables + u"Name: " + name + u"," + u"Value: " + value; | |
} | |
} |
Видалити особисту інформацію з документа
Якщо ви хочете поділитися документом Word з іншими користувачами, Ви можете видалити особисту інформацію, таку як ім’я автора та компанія. Для цього використовуйте властивість RemovePersonalInformation, щоб встановити прапор, який вказує на те, що Microsoft Word видалить всю інформацію Користувача з коментарів, редагувань та властивостей документа під час збереження документа.
Наступний приклад коду показує, як видалити особисту інформацію:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"Properties.doc"); | |
doc->set_RemovePersonalInformation(true); | |
System::String outputPath = outputDataDir + u"DocProperties.RemovePersonalInformation.docx"; | |
doc->Save(outputPath); |