Microsoft Word는 Word 문서에 주석을 추가할 수 있는 기능을 제공합니다. 댓글은 문서의 개선 사항을 제안하거나 텍스트에 대한 생각을 공유하는 등의 경우에 도움이 될 수 있습니다. 프로그래밍 방식으로 주석을 관리해야 하는 상황이 있을 수 있습니다. 이를 위해 이 기사에서는 C++를 사용하여 Word 문서에서 주석으로 작업하는 방법을 설명합니다.
- Word 문서에서 주석 작업을 위한 C++ API
- C++를 사용하여 Word 문서에 주석 추가
- Word 문서에서 주석 읽기
- C++를 사용하여 Word 문서에서 주석 수정
- C++를 사용하여 Word 문서에서 주석 삭제
Word 문서에서 주석 작업을 위한 C++ API
Aspose.Words for C++은 Microsoft Word 문서를 생성, 읽기, 수정 및 변환할 수 있는 네이티브 C++ 라이브러리입니다. 또한 DOCX 및 DOC 파일의 주석 작업도 지원합니다. NuGet을 통해 API를 설치하거나 다운로드 섹션에서 직접 다운로드할 수 있습니다.
PM> Install-Package Aspose.Words.Cpp
C++를 사용하여 Word 문서에 주석 추가
Aspose.Words for C++ API는 작성자 이름, 이니셜 및 날짜/시간과 함께 주석을 추가하는 기능을 제공합니다. 다음은 Word 문서에 주석을 추가하는 단계입니다.
- 먼저 Document 클래스를 사용하여 Word 문서를 로드합니다.
- 이전 단계에서 생성한 Document 객체를 전달하여 DocumentBuilder 클래스의 인스턴스를 생성합니다.
- Comment 클래스를 사용하여 주석을 생성합니다.
- DocumentBuilder->getCurrentParagraph()->AppendChild(System::SharedPtr)를 사용하여 문서에 주석을 추가합니다.Aspose::Words::Node newChild) 메서드입니다.
- 마지막으로 Document->Save(System::String fileName) 메서드를 사용하여 문서를 저장합니다.
다음 샘플 코드는 C++를 사용하여 Word 문서에 주석을 추가하는 방법을 보여줍니다.
// 디렉토리 경로.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// 워드 파일 불러오기
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 문서에서 주석을 읽는 단계입니다.
- Document 클래스를 사용하여 Word 문서를 로드합니다.
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep) 메서드를 사용하여 주석을 검색합니다.
- 주석을 반복하고 개별 주석의 정보를 검색합니다.
다음은 C++를 사용하여 Word 문서에서 주석을 읽는 샘플 코드입니다.
// 디렉토리 경로.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// 워드 파일 불러오기
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);
}
C++를 사용하여 Word 문서에서 주석 수정
주석을 수정하려면 NodeCollection->idxget(int32t index) 메서드를 사용하여 주석을 검색하고 필요에 따라 변경합니다. 다음은 Word 문서에서 주석을 수정하는 단계입니다.
- 먼저 Document 클래스를 사용하여 Word 문서를 로드합니다.
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep) 메서드를 사용하여 주석을 검색합니다.
- NodeCollection->idxget(int32t index) 메서드를 사용하여 원하는 주석을 얻고 결과를 Comment로 캐스팅합니다.
- 댓글을 업데이트합니다.
- 마지막으로 Document->Save(System::String fileName) 메서드를 사용하여 문서를 저장합니다.
다음 샘플 코드는 C++를 사용하여 Word 문서에서 주석을 수정하는 방법을 보여줍니다.
// 디렉토리 경로.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// 워드 파일 불러오기
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");
C++를 사용하여 Word 문서에서 주석 삭제
Aspose.Words for C++ API는 Word 문서에서 주석을 삭제하는 여러 방법을 제공합니다. 이 섹션에서는 C++를 사용하여 특정 주석, 작성자별 주석 및 모든 주석을 삭제하는 방법을 배웁니다.
특정 댓글 삭제
다음은 특정 댓글을 삭제하는 단계입니다.
- Document 클래스를 사용하여 Word 문서를 로드합니다.
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep) 메서드를 사용하여 주석을 검색합니다.
- NodeCollection->idxget(int32t index) 메서드를 사용하여 삭제하려는 주석을 가져오고 결과를 Comment으로 캐스팅합니다.
- Comment->Remove() 메소드를 사용하여 주석을 삭제합니다.
- Document->Save(System::String fileName) 메서드를 사용하여 문서를 저장합니다.
다음 샘플 코드는 C++를 사용하여 Word 문서에서 특정 주석을 삭제하는 방법을 보여줍니다.
// 디렉토리 경로.
System::String sourceDataDir = u"D:\\Work\\Aspose\\01_SourceDirectory\\";
System::String outputDataDir = u"D:\\Work\\Aspose\\02_OutputDirectory\\";
// 워드 파일 불러오기
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");
작성자별 댓글 삭제
작성자별 댓글 삭제 방법은 다음과 같습니다.
- 먼저 Document 클래스를 사용하여 Word 문서를 로드합니다.
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep) 메서드를 사용하여 주석을 검색합니다.
- 주석을 반복합니다.
- 루프 내에서 주석을 검색하고 작성자를 비교합니다. 작성자가 일치하면 댓글을 삭제하세요.
- 마지막으로 Document->Save(System::String fileName) 메서드를 사용하여 문서를 저장합니다.
다음은 C++를 사용하여 작성자별 주석을 삭제하는 샘플 코드입니다.
// 디렉토리 경로.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// 워드 파일 불러오기
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 문서에서 모든 주석을 삭제하는 단계입니다.
- Document 클래스를 사용하여 Word 문서를 로드합니다.
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep) 메서드를 사용하여 주석을 검색합니다.
- NodeCollection->Clear() 메서드를 사용하여 모든 주석을 제거합니다.
- 마지막으로 Document->Save(System::String fileName) 메서드를 사용하여 문서를 저장합니다.
다음 샘플 코드는 C++를 사용하여 Word 문서에서 모든 주석을 삭제하는 방법을 보여줍니다.
// 디렉토리 경로.
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";
// 워드 파일 불러오기
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를 사용해 볼 수 있습니다.
결론
이 기사에서는 C++를 사용하여 Word 문서에서 주석으로 작업하는 방법을 배웠습니다. 특히 주석을 추가, 읽기, 편집 및 삭제하는 방법을 배웠습니다. 또한 Aspose.Words for C++ API를 사용하여 특정 주석, 작성자별 주석 및 모든 주석을 삭제하는 방법을 살펴보았습니다. API는 Word 관련 작업을 자동화하기 위한 방대한 추가 기능을 제공합니다. 공식문서에서 API를 자세히 살펴볼 수 있다. 질문이 있는 경우 무료 지원 포럼에서 언제든지 문의하십시오.