O Microsoft Word oferece a capacidade de adicionar comentários a documentos do Word. Os comentários podem ser úteis em casos como sugerir melhorias em documentos ou compartilhar ideias sobre o texto. Pode haver situações em que você precise gerenciar comentários programaticamente. Para isso, este artigo ensinará como trabalhar com comentários em documentos do Word usando C++.

API C++ para trabalhar com comentários em documentos do Word

Aspose.Words for C++ é uma biblioteca nativa de C++ que permite criar, ler, modificar e converter documentos do Microsoft Word. Além disso, também suporta trabalhar com comentários em arquivos DOCX e DOC. Você pode instalar a API por meio do NuGet ou baixá-la diretamente da seção Downloads.

PM> Install-Package Aspose.Words.Cpp

Adicionar comentários a documentos do Word usando C++

Aspose.Words for C++ API fornece a capacidade de adicionar comentários com o nome do autor, iniciais e data/hora. A seguir estão as etapas para adicionar comentários a documentos do Word.

O código de exemplo a seguir demonstra como adicionar comentários a documentos do Word usando C++.

// Caminhos de diretório.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Carregar o arquivo do Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"Sample 1.docx");

// Crie uma instância da classe DocumentBuilder
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// Adicionar comentário
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."));

// Salve o documento.
doc->Save(outputDataDir + u"AddCommentsToExistingDoc.docx");

Veja a seguir a imagem da saída gerada pelo código de exemplo.

Imagem da saída gerada pelo código de amostra

Ler comentários de um documento do Word

A seguir estão as etapas para ler comentários de documentos do Word.

Veja a seguir o código de exemplo para ler comentários de um documento do Word usando C++.

// Caminhos de diretório.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Carregar o arquivo do Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentários
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Percorrer todos os comentários
for (System::SharedPtr<Comment> comment : System::IterateOver<System::SharedPtr<Comment>>(comments))
{
	// Imprimir informações do comentário
	std::cout << comment->get_Author() + u" " + comment->get_DateTime() + u" " + System::StaticCast<Node>(comment)->ToString(SaveFormat::Text);
}

Modificar comentários em um documento do Word usando C++

Para modificar um comentário, recupere-o usando o método NodeCollection->idxget(int32t index) e altere-o de acordo com suas necessidades. A seguir estão as etapas para modificar comentários em um documento do Word.

O código de exemplo a seguir mostra como modificar comentários em um documento do Word usando C++.

// Caminhos de diretório.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Carregar o arquivo do Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentários
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Obter comentário
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(0));

// Atualizar texto do comentário
comment->SetText(u"Updated Text");

// Salve o documento.
doc->Save(outputDataDir + u"UpdatedComment.docx");

Excluir comentários de um documento do Word usando C++

A API Aspose.Words para C++ fornece várias maneiras de excluir comentários de documentos do Word. Nesta seção, você aprenderá como excluir um comentário específico, comentários por autor e todos os comentários usando C++.

Excluir um comentário específico

A seguir estão as etapas para excluir um comentário específico.

O código de exemplo a seguir mostra como excluir um comentário específico de um documento do Word usando C++.

// Caminhos de diretório.
System::String sourceDataDir = u"D:\\Work\\Aspose\\01_SourceDirectory\\";
System::String outputDataDir = u"D:\\Work\\Aspose\\02_OutputDirectory\\";

// Carregar o arquivo do Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentários
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Obter comentário
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(2));

// Remover comentário
comment->Remove();

// Salve o documento.
doc->Save(outputDataDir + u"DeleteSpecificComments.docx");

Excluindo comentários do autor

A seguir estão as etapas para excluir comentários por autor.

Veja a seguir o código de exemplo para excluir comentários por autor usando C++.

// Caminhos de diretório.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Carregar o arquivo do Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentários
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Percorra todos os comentários e remova aqueles escritos pelo autor de "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();
	}
}

// Salve o documento.
doc->Save(outputDataDir + u"DeleteCommentsByAuthor.docx");

Excluir todos os comentários

Em vez de deletar comentários individuais, você pode deletar todos os comentários de uma vez usando o método NodeCollection->Clear(). A seguir estão as etapas para excluir todos os comentários de um documento do Word.

O código de exemplo a seguir demonstra como excluir todos os comentários de um documento do Word usando C++.

// Caminhos de diretório.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Carregar o arquivo do Word
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// Recuperar comentários
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// Remova todos os comentários.
comments->Clear();

// Salve o documento.
doc->Save(outputDataDir + u"DeleteAllComments.docx");

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como trabalhar com comentários em documentos do Word usando C++. Especificamente, você aprendeu como adicionar, ler, editar e excluir comentários. Além disso, você viu como excluir um comentário específico, comentários por autor e todos os comentários usando Aspose.Words for C++ API. A API fornece um grande número de recursos adicionais para automatizar suas tarefas relacionadas ao Word. Você pode explorar a API em detalhes visitando a documentação oficial. Em caso de dúvidas, sinta-se à vontade para entrar em contato conosco em nosso fórum de suporte gratuito.

Veja também