Po zapoznaniu się z tym artykułem będziemy mogli porównywać pliki tekstowe, pliki Worda, pliki PDF i inne dokumenty w aplikacjach opartych na Javie. Korzystając z tej funkcji możemy porównywać faktury, umowy, prezentacje, projekty AutoCAD, cenniki czy pliki programistyczne. Otrzymamy również przywilej wyróżnienia zidentyfikowanych zmian i możliwość zaakceptowania lub odrzucenia każdej zmiany. Możemy nawet zbudować własne narzędzie do porównywania dokumentów, podobne do tego uruchomionego przez GroupDocs, używając API do porównywania dokumentów dla Javy.

Poniżej omówisz następujące tematy:

Interfejs API porównywania dokumentów Java

Jako warunek wstępny możesz pobrać GroupDocs.Comparison for Java z sekcji pliki do pobrania. Możesz także po prostu dodać następujące elementy w pom.xml w przypadku aplikacji opartych na Maven:

Repozytorium i zależności

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-comparison</artifactId>
        <version>20.4</version> 
</dependency>

Porównaj pliki programu Word i pokaż różnice za pomocą języka Java

Poniższe kroki pokażą, jak porównać dowolne dwa dokumenty Worda w zaledwie kilku wierszach kodu Java. W rezultacie otrzymasz wynikowy dokument, który będzie podkreślał zidentyfikowane zmiany.

  • Zainicjuj obiekt Comparer ze ścieżką dokumentu źródłowego.
  • Dodaj drugi dokument do porównania za pomocą metody add.
  • Wywołaj metodę compare, aby uzyskać wynik porównania. Metoda porównania przyjmuje nazwę dokumentu wyjściowego jako parametr.
// Compare two Word files from the provided location on disk
Comparer comparer = new Comparer("source.docx");
try {
    comparer.add("target.docx");
    comparer.compare("comparison.docx");
}
finally {
    comparer.dispose();
}

Tutaj wyświetlam wynikowy dokument Word wygenerowany przez powyższy kod i zawiera on podświetlone różnice między porównywanymi dwoma dokumentami Word. Usunięta zawartość zostanie zaznaczona na CZERWONO, dodana zawartość zostanie wyświetlona na niebiesko, jednak Zmodyfikowana zawartość będzie oznaczona na zielono.

plik-słów-porównanie-tekstu-i-pokaż-różnicę

Porównaj pliki Word dla tekstu za pomocą strumienia

W podobny sposób możesz przekazać dokument jako strumień do klasy Comparer, aby porównać go z drugim dokumentem. Oto kod Java, który daje jasny obraz:

// Compare two Word file using Stream
Comparer comparer = new Comparer(new FileInputStream("source.docx"));
try {
    comparer.add(new FileInputStream("target.docx"));
    comparer.compare(new FileOutputStream("result.docx"));
} 
finally {
    comparer.dispose();
}

Zaakceptuj lub odrzuć porównane zmiany w pliku Word przy użyciu języka Java

Po pomyślnym podświetleniu zidentyfikowanych różnic masz możliwość zaakceptowania lub odrzucenia dowolnej zmiany. Aby pokazać jako przykład, na przemian akceptuję i odrzucam zmiany. Możesz wyświetlać każdą zmianę jedna po drugiej z podobnym kodem i podejmować decyzje o zaakceptowaniu/odrzuceniu każdej zmiany zgodnie z wymaganiami.

// Accept or Reject the identified changes of Word document in Java
Comparer comparer = new Comparer(source);
try {
    comparer.add(target);
    comparer.compare();
    ChangeInfo[] changes = comparer.getChanges();
    System.out.println("changes.length: " + changes.length + ".");
    // Accept or Reject the changes
    for (int n = 0; n < changes.length; n++) {
    	if (n % 2 == 0) {
    		changes[n].setComparisonAction(ComparisonAction.ACCEPT);
    	}
    	else {
    		changes[n].setComparisonAction(ComparisonAction.REJECT);
    	}
    }
    // Apply your decisions to get the resultant document.
    comparer.applyChanges(outputFileName, new SaveOptions(), new ApplyChangeOptions(changes));
}
finally {
    comparer.dispose();
}

Porównaj pliki tekstowe i pokaż różnice przy użyciu języka Java

Za pomocą klasy Comparer możemy również porównać dowolny plik tekstowy. Poniżej znajduje się podobny kod do porównywania dwóch plików tekstowych w Javie. Kroki są dokładnie takie same, jak przy porównywaniu dwóch innych dokumentów:

  • Zacznij od przekazania pliku tekstowego do klasy Comparer.
  • Dodaj drugi plik za pomocą metody add.
  • Wywołaj metodę porównaj.
// Compare two text files to identify and highlight changes.
Comparer comparer = new Comparer("source.txt");
try {
    comparer.add("target.txt");
    comparer.compare("comparison.txt");
}
finally {
    comparer.dispose();
}

Oto dokument wyjściowy, który pokazuje wynik porównania dopasowania dwóch plików tekstowych przy użyciu powyższego kodu.

Porównaj pliki tekstowe przy użyciu języka Java

Porównaj pliki PDF pod kątem różnicy w tekście za pomocą języka Java

Możemy porównać pliki PDF, używając tego samego powyższego kodu i po prostu zmieniając rozszerzenia plików na „.pdf”. Wystarczy wspomnieć, że poniższy kod porównuje dwa pliki pdf i pokazuje różnice w Javie.

// Compare two PDF file using Stream
Comparer comparer = new Comparer(new FileInputStream("source.pdf"));
comparer.add(new FileInputStream("target.pdf"));
comparer.compare(new FileOutputStream("result.pdf"));

Poniżej znajduje się wynik po porównaniu plików PDF.

Porównanie tekstu pliku PDF

Zobacz też

Wiele innych przykładów open-source jest publicznie dostępnych w GitHub Repository. Możesz pobrać i szybko uruchomić przykłady, korzystając z przewodnika pierwsze kroki. W przypadku jakichkolwiek pytań przejrzyj dokumentację lub skontaktuj się z nami w dowolnym momencie na forum.