MS Word 문서의 비교는 문서의 두 버전 간의 차이점을 알기 위해 수행됩니다. MS Word는 두 문서의 내용을 비교할 수 있는 기본 제공 옵션을 제공합니다. 그러나 문서의 수가 증가함에 따라 문서 비교를 수동으로 수행하기가 어려워집니다. 이 프로세스를 자동화하기 위해 이 기사에서는 Java를 사용하여 두 개의 MS Word(DOC/DOCX) 문서를 비교하는 방법을 다룹니다.
- Java용 MS Word 문서 비교 API
- Java를 사용하여 MS Word 문서 비교
- MS Word 문서 비교에서 서식 무시
- 비교 차이에 대한 대상 문서 설정
- MS Word 문서를 비교하기 위한 세분성 설정
MS Word 문서를 비교하는 Java API
Aspose.Words for Java는 MS Word 문서를 생성, 읽기, 수정 및 변환할 수 있는 강력한 문서 조작 API입니다. 또한 콘텐츠의 서식을 고려하거나 무시하면서 두 개의 Word 문서를 비교할 수 있습니다. API를 다운로드하거나 Maven 구성을 사용하여 설치할 수 있습니다.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>20.9</version>
<classifier>jdk17</classifier>
</dependency>
Java를 사용하여 MS Word 문서 비교
다음은 Aspose.Words for Java API를 사용하여 간단한 Word 문서 비교를 수행하는 단계입니다.
- Document 클래스를 사용하여 비교할 문서를 로드합니다.
- Document.compare(Document, String, Date) 메서드를 호출하여 인수로 전달된 문서와 문서를 비교합니다.
다음 코드 샘플은 Java를 사용하여 두 MS Word 문서를 비교하는 방법을 보여줍니다.
Document docA = new Document(dataDir + "DocumentA.doc");
Document docB = new Document(dataDir + "DocumentB.doc");
docA.compare(docB, "user", new Date()); // docA now contains changes as revisions
Java Word 문서 비교 - 서식 무시
문서의 내용에 다른 서식이 적용된 경우가 있을 수 있습니다. 이러한 경우 서식, 머리글/바닥글, 각주, 표, 주석 등을 무시하고 텍스트만 비교하는 것이 좋습니다. 다음은 두 MS Word 문서를 비교할 때 문서의 서식을 무시하는 단계입니다.
- Document 클래스를 사용하여 비교할 문서를 로드합니다.
- CompareOptions 클래스의 객체를 생성합니다.
- CompareOptions.setIgnoreFormatting(true)을 설정합니다.
- Document.compare(Document, String, Date, CompareOptions) 메서드를 사용하여 문서를 비교합니다.
다음 코드 샘플은 Java를 사용하여 내용의 서식을 무시하고 MS Word 문서를 비교하는 방법을 보여줍니다.
// 전체 예제 및 데이터 파일을 보려면 https://github.com/aspose-words/Aspose.Words-for-Java로 이동하십시오.
String dataDir = Utils.getDataDir(CompareTwoWordDocumentswithCompareOptions.class);
com.aspose.words.Document docA = new com.aspose.words.Document(dataDir + "DocumentA.doc");
com.aspose.words.Document docB = new com.aspose.words.Document(dataDir + "DocumentB.doc");
com.aspose.words.CompareOptions options = new com.aspose.words.CompareOptions();
options.setIgnoreFormatting(true);
options.setIgnoreHeadersAndFooters(true);
options.setIgnoreCaseChanges(true);
options.setIgnoreTables(true);
options.setIgnoreFields(true);
options.setIgnoreComments(true);
options.setIgnoreTextboxes(true);
options.setIgnoreFootnotes(true);
// 이제 DocA에는 변경 사항이 개정판으로 포함됩니다.
docA.compare(docB, "user", new Date(), options);
if (docA.getRevisions().getCount() == 0)
System.out.println("Documents are equal");
else
System.out.println("Documents are not equal");
비교 차이에 대한 대상 Word 문서 설정
Aspose.Words for Java를 사용하면 비교하는 동안 소스 Word 문서를 지정할 수도 있습니다. 이를 위해 MS Word의 “변경 사항 표시” 옵션과 관련된 CompareOptions.setTarget() 속성을 사용할 수 있습니다. 다음 코드 샘플은 비교에서 대상 문서를 지정하는 방법을 보여줍니다.
Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");
CompareOptions options = new CompareOptions();
options.setIgnoreFormatting(true);
// "문서 비교" 대화 상자의 Microsoft Word "변경 사항 표시" 옵션과 관련됩니다.
options.setTarget(ComparisonTargetType.NEW);
docA.compare(docB, "user", new Date(), options);
Java에서 Word 파일을 비교하도록 세분성 설정
두 MS Word 문서를 비교할 때 변경 사항의 세분성을 설정할 수도 있습니다. 이는 CompareOptions.setGranularity() 속성을 사용하여 수행할 수 있습니다. 다음은 가능한 세분성 옵션입니다.
다음 코드 샘플은 Java를 사용하여 MS Word 문서를 비교할 때 세분성을 설정하는 방법을 보여줍니다.
DocumentBuilder builderA = new DocumentBuilder(new Document());
DocumentBuilder builderB = new DocumentBuilder(new Document());
builderA.writeln("This is A simple word");
builderB.writeln("This is B simple words");
CompareOptions co = new CompareOptions();
co.setGranularity(Granularity.CHAR_LEVEL);
builderA.getDocument().compare(builderB.getDocument(), "author", new Date(), co);
결론
이 기사에서는 Java를 사용하여 다양한 시나리오에서 두 개의 MS Word 문서를 비교하는 방법을 살펴보았습니다. 문서를 사용하여 Aspose.Words for Java에 대해 자세히 알아볼 수 있습니다.
무료로 사용해 보세요
Aspose는 API를 무료로 사용해 볼 수 있는 임시 라이선스를 제공합니다. Java용 Aspose.Words를 평가할 수 있습니다.