소개
계약서, 내부 정책, 기술 사양서, 마케팅 카피 등 어떤 문서를 다루든 패턴은 동일합니다. 여러 .docx 버전이 금방 쌓이게 되고 어느 시점에는 그 사이에 정확히 무엇이 변했는지 확인해야 합니다. Word에 내장된 Compare 대화상자는 가끔 수동으로 확인하기에는 괜찮지만, 비교가 정규 프로세스의 일부가 되거나 서버 측에서 자동화되어야 할 때는 크게 도움이 되지 않습니다.
GroupDocs.Comparison for .NET를 사용하면 코드에서 비교를 수행하고 검토자가 선호하는 형식으로 결과를 생성할 수 있습니다. 이 라이브러리는 Word 문서에 대해 두 가지 출력 비교 모드를 지원합니다:
- Revision mode — 차이점이 Word 수정(변경 추적) 마크업으로 기록됩니다. 검토자는 파일을 열어 익숙한 Review → Accept / Reject 제어를 확인하고 변경 사항을 하나씩 검토합니다.
- Highlight mode — 삽입, 삭제, 수정된 텍스트가 문서 본문에 색상 하이라이트로 직접 표시되어, 최종 텍스트를 읽는 동안 차이점을 한눈에 확인할 수 있습니다.
이 글에서는 두 접근 방식을 실제 C# 예제와 함께 살펴보고, WordCompareOptions 클래스와 그 속성을 탐색하며, 각 모드가 언제 더 적합한지 논의합니다.
사전 요구 사항
시작하기 전에:
- .NET 6.0 이상.
- GroupDocs.Comparison for .NET — NuGet로 설치하세요:
dotnet add package GroupDocs.Comparison
- 라이선스 파일(
GroupDocs.Comparison.lic). 없을 경우 라이브러리는 워터마크와 페이지 제한이 있는 평가 모드로 동작합니다. 테스트용으로 temporary license를 요청할 수 있습니다. - 비교할 두 개의 Word 파일 — 여기서는
source.docx와target.docx라고 부르겠습니다. 예시 내용:
source.docx |
target.docx |
|---|
방법 1: Revision‑Track 비교
사용 시점: 검토자가 Microsoft Word에서 내장된 Review → Accept / Reject 도구를 사용해 각 변경을 개별적으로 수락하거나 거부해야 할 때 — 예를 들어 계약 협상이나 정책 승인 과정에서.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
var options = new WordCompareOptions
{
DetectStyleChanges = true,
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
};
comparer.Compare("result_revision.docx", options);
}
revision (track changes) mode에서 생성된 문서:
내부 동작:
ComparisonDisplayMode.Revisions는 엔진에게 기본 Word 트랙 체인지 마크업을 생성하도록 지시합니다.DetectStyleChanges = true는 텍스트 수정 외에도 서식 차이(굵게, 글꼴 크기, 색상)를 감지하도록 합니다.- 출력 파일을 Microsoft Word에서 열면 Review 패널이 표시되고, 모든 삽입, 삭제, 스타일 변경이 목록화되어 수락하거나 거부할 수 있습니다.
Revision 모드는 문서 내용을 다시 렌더링할 필요가 없고 단순히 수정 메타데이터를 첨부하기 때문에 두 모드 중 일반적으로 더 빠릅니다.
방법 2: Highlight‑Mode 비교
사용 시점: 이해관계자가 변경된 내용이 명확히 표시된 깔끔한 문서를 원하지만 모든 개별 수정 과정을 거치고 싶지는 않을 때. 일반적인 시나리오는 관리자가 최신 버전을 Word에서 열어 하이라이트된 삽입 및 삭제를 빠르게 살펴 업데이트 영향도를 파악하는 경우입니다.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
var options = new WordCompareOptions
{
DetectStyleChanges = true,
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Highlight
};
comparer.Compare("result_highlighted.docx", options);
}
highlight mode에서 생성된 문서:
내부 동작:
ComparisonDisplayMode.Highlight는 차이를 인라인 색상 하이라이트로 표시합니다 — 삭제는 빨간색, 삽입은 초록색, 스타일 변경은 파란색(기본 색상은WordCompareOptions/CompareOptions와 관련된StyleSettings를 통해 조정 가능).- 문서는 별도의 단계 없이 바로 읽거나 인쇄할 수 있습니다.
- 파일에 트랙 체인지 메타데이터가 추가되지 않습니다.
Highlight 모드는 실제 문서 내용을 수정하고 서식을 적용해야 하기 때문에 내부 작업량이 더 많습니다. 큰 파일의 경우 revision 모드에 비해 성능 차이가 크게 느껴질 수 있습니다.
WordCompareOptions 살펴보기
위의 두 예제 모두 WordCompareOptions를 사용합니다 — 이 클래스는 CompareOptions의 공통 설정을 상속하고 Word 문서에 특화된 속성을 추가합니다. 이 타입을 통해 표시 모드(DisplayMode), 스타일 변경 추적 여부(DetectStyleChanges), 수정에 표시될 저자 이름(RevisionAuthorName), 줄 바꿈, 책갈피 등을 제어합니다.
게다가 기본 CompareOptions는 삽입, 삭제, 변경된 항목에 대한 스타일(InsertedItemStyle, DeletedItemStyle, ChangedItemStyle)을 제공하므로 필요에 따라 하이라이트 색상과 서식을 세밀하게 조정할 수 있습니다.
다음은 revision 모드에서 텍스트만 검사하도록 옵션을 구성하는 간단한 예시입니다:
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
DetectStyleChanges = false,
RevisionAuthorName = "QA Bot",
CompareBookmarks = true
};
프로그래밍 방식으로 변경 사항 가져오기
출력 모드( revision이든 highlight이든)와 관계없이, 공통 Comparer.GetChanges API를 통해 감지된 차이의 구조화된 목록을 언제든지 얻을 수 있습니다. 이 메서드는 Word뿐 아니라 지원되는 모든 형식에서 작동합니다.
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
comparer.Compare("result_revision.docx");
var changes = comparer.GetChanges(); // returns ChangeInfo[]
}
이는 자체 워크플로우에서 변경 사항을 후처리해야 할 때 유용합니다 — 예를 들어, 맞춤형 HTML 보고서를 만들거나, 차이를 검토 시스템에 전달하거나, 편집 통계를 집계하는 경우입니다. 자세한 내용은 공식 API 레퍼런스를 확인하세요: Comparer.GetChanges.
비밀번호로 보호된 문서 작업하기
문서가 비밀번호로 보호되어 있어도 비교할 수 있습니다: Comparer를 생성할 때 LoadOptions에 비밀번호를 전달하면 됩니다. 이 방법은 Word, PDF 및 기타 지원 형식에서도 동일하게 동작합니다.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source_protected.docx",
new LoadOptions { Password = "secret" }))
{
comparer.Add("target_protected.docx");
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
};
comparer.Compare("result_protected.docx", options);
}
무료 체험 받기
official releases page에서 GroupDocs.Comparison for .NET을 다운로드받을 수 있습니다. 제한 없는 테스트를 위해서는 temporary license를 요청하세요 — 신용카드가 필요 없습니다.
자주 묻는 질문
Q: 서버에 Microsoft Word 또는 Office를 설치해야 하나요?
A: 아닙니다. GroupDocs.Comparison은 독립형 .NET 라이브러리로, 자체적으로 DOCX 파일을 읽고 씁니다.
Q: Word 외 다른 형식의 문서도 비교할 수 있나요?
A: 예 — 라이브러리는 PDF, Excel 스프레드시트, 프레젠테이션, 텍스트 파일 등 다양한 형식을 지원합니다. 전체 목록은 documentation에 있습니다.
Q: 라이선스를 설정하지 않으면 어떻게 되나요?
A: 라이브러리는 평가 모드로 동작합니다. 출력 문서에 워터마크가 삽입되고 처음 몇 페이지만 처리됩니다. temporary license를 사용하면 테스트용 제한이 해제됩니다.
Q: 하이라이트 색상을 커스터마이즈할 수 있나요?
A: 기본 색상이 대부분의 경우에 적합합니다. 고급 스타일 제어가 필요하면 CompareOptions의 StyleSettings 속성을 확인하세요.
결론
GroupDocs.Comparison for .NET은 코드에서 Word 문서를 비교할 수 있는 두 가지 깔끔한 방법을 제공합니다. Revision 모드는 팀이 이미 사용하는 검토 워크플로에 바로 연결되고, highlight 모드는 변경 사항만 빠르게 파악하고자 하는 사용자에게 즉각적인 시각 요약을 제공합니다. WordCompareOptions 클래스를 통해 스타일 감지, 저자 표시, 책갈피 및 문서 속성 비교 등 출력 결과를 세밀하게 조정할 수 있습니다.
시나리오에 맞는 모드를 선택하거나, 두 모드를 모두 생성해 각 사용자에게 원하는 뷰를 선택하게 할 수 있습니다.