Microsoft Word надає можливість додавати коментарі до документів Word. Коментарі можуть бути корисними в таких випадках, як пропозиції покращення документів або обмін думками щодо тексту. Можуть виникнути ситуації, коли вам потрібно програмно керувати коментарями. З цією метою ця стаття навчить вас, як працювати з коментарями в документах Word за допомогою C++.

C++ API для роботи з коментарями в документах Word

Aspose.Words for C++ — це рідна бібліотека C++, яка дозволяє створювати, читати, змінювати та конвертувати документи Microsoft Word. Крім того, він також підтримує роботу з коментарями у файлах DOCX і DOC. Ви можете встановити API через NuGet або завантажити його безпосередньо з розділу Завантаження.

PM> Install-Package Aspose.Words.Cpp

Додайте коментарі до документів Word за допомогою C++

API Aspose.Words for C++ надає можливість додавати коментарі з іменем автора, ініціалами та датою/часом. Нижче наведено кроки, щоб додати коментарі до документів Word.

Наведений нижче приклад коду демонструє, як додавати коментарі до документів 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 за допомогою 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 за допомогою 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 за допомогою C++

API Aspose.Words for C++ надає кілька способів видалення коментарів із документів Word. У цьому розділі ви дізнаєтесь, як видалити певний коментар, коментарі автора та всі коментарі за допомогою C++.

Видалити конкретний коментар

Нижче наведено кроки, щоб видалити певний коментар.

У наведеному нижче прикладі коду показано, як видалити певний коментар із документа 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 за допомогою 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++. Зокрема, ви навчилися додавати, читати, редагувати та видаляти коментарі. Крім того, ви бачили, як видалити певний коментар, коментарі автора та всі коментарі за допомогою API Aspose.Words for C++. API надає величезну кількість додаткових функцій для автоматизації завдань, пов’язаних із Word. Ви можете детально вивчити API, відвідавши офіційну документацію. У разі будь-яких запитань зв’яжіться з нами на нашому безкоштовному форумі підтримки.

Дивись також