Microsoft Word предоставляет вам возможность добавлять комментарии к документам Word. Комментарии могут быть полезны в таких случаях, как предложения по улучшению документов или обмен мыслями по тексту. Могут быть ситуации, когда вам нужно программно управлять комментариями. С этой целью эта статья научит вас работать с комментариями в документах Word с помощью C++.
- C++ API для работы с комментариями в документах Word
- Добавление комментариев к документам Word с помощью C++
- Чтение комментариев из документа Word
- Изменить комментарии в документе Word с помощью C++
- Удалить комментарии из документа Word с помощью С++
C++ API для работы с комментариями в документах Word
Aspose.Words for C++ — это собственная библиотека C++, позволяющая создавать, читать, изменять и преобразовывать документы Microsoft Word. Кроме того, он также поддерживает работу с комментариями в файлах DOCX и DOC. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.
PM> Install-Package Aspose.Words.Cpp
Добавление комментариев к документам Word с помощью C++
Aspose.Words for C++ API предоставляет возможность добавлять комментарии с именем автора, инициалами и датой/временем. Ниже приведены шаги для добавления комментариев к документам Word.
- Во-первых, загрузите документ Word, используя класс Document.
- Создайте экземпляр класса DocumentBuilder, передав объект Document, созданный на предыдущем шаге.
- Создайте комментарий, используя класс Comment.
- Добавьте комментарий к документу с помощью DocumentBuilder->getCurrentParagraph()->AppendChild(System::SharedPtrAspose::Words::Node метод newChild).
- Наконец, сохраните документ с помощью метода Document->Save(System::String fileName).
В следующем примере кода показано, как добавлять комментарии к документам Word с помощью C++.
// Пути каталогов.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// Загрузите файл Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"Sample 1.docx");
// Создайте экземпляр класса DocumentBuilder
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Добавить комментарий
System::SharedPtr<Comment> comment = System::MakeObject<Comment>(doc, u"Aspose", u"AFFA", System::DateTime::get_Today());
builder->get_CurrentParagraph()->AppendChild(comment);
comment->get_Paragraphs()->Add(System::MakeObject<Paragraph>(doc));
comment->get_FirstParagraph()->get_Runs()->Add(System::MakeObject<Run>(doc, u"Comment text."));
// Сохраните документ.
doc->Save(outputDataDir + u"AddCommentsToExistingDoc.docx");
Ниже приведено изображение вывода, сгенерированного примером кода.
Чтение комментариев из документа Word
Ниже приведены шаги для чтения комментариев из документов Word.
- Загрузите документ Word, используя класс Document.
- Получите комментарии с помощью метода Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Просмотрите комментарии и извлеките информацию об отдельных комментариях.
Ниже приведен пример кода для чтения комментариев из документа Word с помощью C++.
// Пути каталогов.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// Загрузите файл Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");
// Получить комментарии
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);
// Перебрать все комментарии
for (System::SharedPtr<Comment> comment : System::IterateOver<System::SharedPtr<Comment>>(comments))
{
// Распечатать информацию о комментарии
std::cout << comment->get_Author() + u" " + comment->get_DateTime() + u" " + System::StaticCast<Node>(comment)->ToString(SaveFormat::Text);
}
Изменить комментарии в документе Word с помощью C++
Чтобы изменить комментарий, получите его с помощью метода NodeCollection->idxget(int32t index) и измените его в соответствии с вашими потребностями. Ниже приведены шаги по изменению комментариев в документе Word.
- Во-первых, загрузите документ Word, используя класс Document.
- Получите комментарии с помощью метода Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Получите нужный комментарий, используя метод NodeCollection->idxget(int32t index) и приведя результат к Comment.
- Обновите комментарий.
- Наконец, сохраните документ, используя метод Document->Save(System::String fileName).
В следующем примере кода показано, как изменить комментарии в документе Word с помощью C++.
// Пути каталогов.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// Загрузите файл Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");
// Получить комментарии
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);
// Получить комментарий
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(0));
// Обновить текст комментария
comment->SetText(u"Updated Text");
// Сохраните документ.
doc->Save(outputDataDir + u"UpdatedComment.docx");
Удалить комментарии из документа Word с помощью С++
Aspose.Words for C++ API предоставляет несколько способов удаления комментариев из документов Word. В этом разделе вы узнаете, как удалить конкретный комментарий, комментарии автора и все комментарии с помощью C++.
Удалить конкретный комментарий
Ниже приведены шаги для удаления определенного комментария.
- Загрузите документ Word, используя класс Document.
- Получите комментарии с помощью метода Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Получите комментарий, который хотите удалить, с помощью метода NodeCollection->idxget(int32t index) и приведите результат к Comment.
- Удалите комментарий методом Comment->Remove().
- Сохраните документ методом Документ->Сохранить(System::String fileName).
В следующем примере кода показано, как удалить определенный комментарий из документа Word с помощью C++.
// Пути каталогов.
System::String sourceDataDir = u"D:\\Work\\Aspose\\01_SourceDirectory\\";
System::String outputDataDir = u"D:\\Work\\Aspose\\02_OutputDirectory\\";
// Загрузите файл Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");
// Получить комментарии
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);
// Получить комментарий
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(2));
// Удалить комментарий
comment->Remove();
// Сохраните документ.
doc->Save(outputDataDir + u"DeleteSpecificComments.docx");
Удаление комментариев по автору
Ниже приведены шаги для удаления комментариев автора.
- Во-первых, загрузите документ Word, используя класс Document.
- Получите комментарии с помощью метода Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Пролистайте комментарии.
- В цикле извлеките комментарий и сравните его автора. Если автор совпадает, удалите комментарий.
- Наконец, сохраните документ, используя метод Document->Save(System::String fileName).
Ниже приведен пример кода для удаления комментариев автора с помощью C++.
// Пути каталогов.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// Загрузите файл Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");
// Получить комментарии
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);
// Прокрутите все комментарии и удалите те, которые написаны автором "Aspose".
for (int32_t i = comments->get_Count() - 1; i >= 0; i--)
{
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(i));
if (comment->get_Author() == u"Aspose")
{
comment->Remove();
}
}
// Сохраните документ.
doc->Save(outputDataDir + u"DeleteCommentsByAuthor.docx");
Удалить все комментарии
Вместо того, чтобы удалять отдельные комментарии, вы можете удалить все комментарии сразу, используя метод NodeCollection->Clear(). Ниже приведены шаги для удаления всех комментариев из документа Word.
- Загрузите документ Word, используя класс Document.
- Получите комментарии с помощью метода Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep).
- Удалите все комментарии с помощью метода NodeCollection->Clear().
- Наконец, сохраните документ, используя метод Document->Save(System::String fileName).
В следующем примере кода показано, как удалить все комментарии из документа Word с помощью C++.
// Пути каталогов.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// Загрузите файл Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");
// Получить комментарии
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);
// Удалить все комментарии.
comments->Clear();
// Сохраните документ.
doc->Save(outputDataDir + u"DeleteAllComments.docx");
Получить бесплатную лицензию
Вы можете попробовать API без ограничений по ознакомительной версии, запросив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как работать с комментариями в документах Word с помощью C++. В частности, вы узнали, как добавлять, читать, редактировать и удалять комментарии. Кроме того, вы увидели, как удалить конкретный комментарий, комментарии автора и все комментарии с помощью Aspose.Words for C++ API. API предоставляет множество дополнительных функций для автоматизации задач, связанных с Word. Вы можете подробно изучить API, посетив официальную документацию. Если у вас возникнут вопросы, свяжитесь с нами на нашем бесплатном форуме поддержки.