Java σύγκριση αρχείων pdf – master GroupDocs.Comparison API

Σε αυτόν τον οδηγό θα μάθετε πώς να java compare pdf files αποδοτικά με το GroupDocs.Comparison για Java. Είτε δημιουργείτε μια πύλη ελέγχου συμβάσεων, ένα σύστημα ελέγχου εκδόσεων ή έναν ελεγκτή ακαδημαϊκών εργασιών, η δυνατότητα εντοπισμού ακόμη και της μικρότερης αλλαγής σε έγγραφα PDF είναι απαραίτητη. Θα περάσουμε από τη ρύθμιση, τη βασική λογική σύγκρισης, τη δημιουργία προεπισκόπησης, τη διαχείριση κωδικών πρόσβασης, την ενσωμάτωση στο cloud και βέλτιστες πρακτικές βελτιστοποιημένες για απόδοση—ώστε να μπορείτε να παραδώσετε μια αξιόπιστη λύση σε λίγα λεπτά.

Γρήγορες απαντήσεις

  • Τι κάνει το GroupDocs Comparison Java; Συγκρίνει δύο ή περισσότερα έγγραφα, επισημαίνει κάθε αλλαγή και μπορεί να δημιουργήσει οπτικές προεπισκοπήσεις για γρήγορη ανασκόπηση.
  • Ποιοι τύποι αρχείων υποστηρίζονται; Word, PDF, Excel, PowerPoint, εικόνες, HTML και πολλά άλλα.
  • Χρειάζομαι άδεια για παραγωγή; Ναι – μια έγκυρη άδεια GroupDocs αφαιρεί τα υδατογράμματα και ξεκλειδώνει το πλήρες σύνολο λειτουργιών.
  • Μπορώ να διαχειριστώ μεγάλα έγγραφα; Ναι – με σωστή διαχείριση μνήμης και σελιδοποίηση προεπισκοπήσεων μπορείτε να επεξεργαστείτε PDF με εκατοντάδες σελίδες.
  • Πού μπορώ να βρω την πιο πρόσφατη εξάρτηση Maven; Στο αποθετήριο GroupDocs – ελέγξτε την τελευταία έκδοση πριν την προσθέσετε.

Τι είναι η java compare pdf files;

java compare pdf files αναφέρεται στη προγραμματιστική διαδικασία φόρτωσης δύο εκδόσεων PDF, εντοπισμού κειμενικών, μορφολογικών και γραφικών διαφορών, και προαιρετικά δημιουργίας ενός εγγράφου αποτελέσματος που επισημαίνει οπτικά αυτές τις αλλαγές. Το GroupDocs.Comparison υλοποιεί αυτό με μία κλήση API, εξαλείφοντας την ανάγκη για χειροκίνητη λογική diff.

Γιατί να χρησιμοποιήσετε το GroupDocs.Comparison σε έργα Java;

Το GroupDocs.Comparison παρέχει ακριβή ανίχνευση αλλαγών σε πάνω από 50 υποστηριζόμενες μορφές, επεξεργάζεται PDF έως 200 σελίδες σε λιγότερο από 5 δευτερόλεπτα σε μια τυπική JVM 8 GB, και περιλαμβάνει ενσωματωμένη δημιουργία προεπισκοπήσεων. Τα Maven‑ready artifacts του καθιστούν την ενσωμάτωση απλή, και η βιβλιοθήκη κλιμακώνεται οριζόντια όταν ακολουθείτε τα προτεινόμενα πρότυπα διαχείρισης μνήμης.

Προαπαιτούμενα: Τι χρειάζεστε για να ξεκινήσετε

Πριν βυθιστείτε στον κώδικα, βεβαιωθείτε ότι το περιβάλλον σας πληροί αυτές τις απαιτήσεις:

  • Java Development Kit: JDK 8 ή νεότερο· συνιστάται JDK 11 ή νεότερο για καλύτερη απόδοση συλλογής απορριμμάτων.
  • Εργαλείο κατασκευής: Maven ή Gradle για επίλυση εξαρτήσεων.
  • IDE: IntelliJ IDEA, Eclipse ή VS Code – οποιοδήποτε σύγχρονο IDE Java λειτουργεί.
  • Βασικές γνώσεις Java: Θα πρέπει να είστε άνετοι με κλάσεις, μεθόδους και I/O αρχείων.
  • Πρόσβαση δικτύου: Για λήψη του Maven artifact του GroupDocs και, εάν χρησιμοποιείτε αποθήκευση στο cloud, πρόσβαση στο σημείο αποθήκευσης.

Προσθήκη του GroupDocs.Comparison στο έργο σας

Προσθέστε την ακόλουθη εξάρτηση στο pom.xml (αντικαταστήστε το X.Y.Z με την πιο πρόσφατη έκδοση που βρείτε στην ιστοσελίδα GroupDocs):

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-comparison</artifactId>
    <version>X.Y.Z</version>
</dependency>

Συμβουλή: Ελέγξτε τις σημειώσεις έκδοσης του GroupDocs για διορθώσεις σφαλμάτων ανά έκδοση και νέα υποστήριξη μορφών πριν την αναβάθμιση.

Άδεια (μη το παραλείψετε!)

Μια δοκιμαστική άδεια σας επιτρέπει να αξιολογήσετε το API, αλλά οι παραγωγικές εγκαταστάσεις απαιτούν μόνιμη άδεια για την αφαίρεση υδατογραφημάτων και την ενεργοποίηση πλήρους λειτουργικότητας.

  1. Δωρεάν δοκιμή: Κατεβάστε από GroupDocs
  2. Προσωρινή άδεια: Αποκτήστε μια temporary license για εκτεταμένη δοκιμή
  3. Πλήρης άδεια: Αγοράστε από το GroupDocs Store

Αρχική ρύθμιση: προετοιμασία του GroupDocs.Comparison

Βασική αρχικοποίηση

Η κλάση Comparer είναι το σημείο εισόδου για όλες τις λειτουργίες σύγκρισης. Συντονίζει τη φόρτωση εγγράφων, τον υπολογισμό diff και τη δημιουργία αποτελεσμάτων.

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/comparison/java/</url>
   </repository>
</repositories>
<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-comparison</artifactId>
      <version>25.2</version>
   </dependency>
</dependencies>

Τι κάνει το απόσπασμα: Δημιουργεί μια παρουσία Comparer, εφαρμόζει άδεια (αν υπάρχει) και προετοιμάζει τη μηχανή για επόμενες κλήσεις σύγκρισης.

Οδηγός υλοποίησης βήμα‑βήμα

Μέρος 1: ρύθμιση σύγκρισης εγγράφων

Βήμα 1: αρχικοποίηση του comparer

Το αντικείμενο Comparer είναι το βασικό στοιχείο που εκτελεί τον αλγόριθμο diff. Φυλάει ρυθμίσεις όπως επιλογές σύγκρισης και πληροφορίες άδειας.

import com.groupdocs.comparison.Comparer;
import com.groupdocs.comparison.examples.SampleFiles;

// Initialize the comparer with a source document
Comparer comparer = new Comparer(SampleFiles.SOURCE_WORD);

Γιατί είναι σημαντικό: Το έγγραφο πηγής που παρέχετε γίνεται η βάση· κάθε αλλαγή μετριέται σε σχέση με αυτό.

Βήμα 2: προσθήκη αρχείων-στόχων

Μπορείτε να συγκρίνετε την πηγή με ένα ή περισσότερα αρχεία-στόχους. Σε σενάριο διαχείρισης συμβάσεων, η πηγή είναι η αρχική συμφωνία και ο στόχος η αναθεωρημένη έκδοση από τη νομική ομάδα.

// Initialize comparer with the source document
Comparer comparer = new Comparer(SampleFiles.SOURCE_WORD);

Μέρος 2: δημιουργία προεπισκοπήσεων σελίδων

Βήμα 1: ρύθμιση δημιουργίας ροής εξόδου

Το πρότυπο preview delegate σας δίνει πλήρη έλεγχο στο πού αποθηκεύονται οι εικόνες προεπισκόπησης—τοπικός δίσκος, cloud bucket ή βάση δεδομένων.

// Add a target document for comparison
comparer.add(SampleFiles.TARGET1_WORD);

Βήμα 2: διαμόρφωση επιλογών προεπισκόπησης

Δημιουργήστε προεπισκοπήσεις μόνο για τις σελίδες που χρειάζεστε πραγματικά· αυτό μειώνει τη χρήση CPU έως και 60 % για μεγάλα PDF.

import com.groupdocs.comparison.common.delegates.Delegates;
import java.io.FileOutputStream;
import java.io.OutputStream;

Delegates.CreatePageStream createPageStream = new Delegates.CreatePageStream() {
    @Override
    public OutputStream invoke(int pageNumber) {
        String pagePath = "YOUR_OUTPUT_DIRECTORY" + "/result-GetPagePreviewsForTargetDocument_" + pageNumber + ".png";
        try {
            return new FileOutputStream(pagePath);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
};

Βήμα 3: δημιουργία των προεπισκοπήσεων

Το API αποδίδει κάθε ζητούμενη σελίδα ως PNG (χωρίς απώλειες) ή JPEG (μικρότερο μέγεθος). Το PNG συνιστάται για νομικά έγγραφα όπου η ακρίβεια pixel είναι σημαντική.

import com.groupdocs.comparison.options.PreviewOptions;
import com.groupdocs.comparison.options.enums.PreviewFormats;

// Set preview options
PreviewOptions previewOptions = new PreviewOptions.Builder(createPageStream)
    .setPreviewFormat(PreviewFormats.PNG) // High-quality images
    .setPageNumbers(new int[]{1, 2}) // Only generate what you need
    .build();

Υποστηριζόμενες μορφές αρχείων

Το GroupDocs.Comparison λειτουργεί με πάνω από 50 μορφές εισόδου και εξόδου, συμπεριλαμβανομένων:

  • Microsoft Office: DOCX, DOC, XLSX, XLS, PPTX, PPT
  • PDF: Όλες οι εκδόσεις PDF‑1.x, κρυπτογραφημένα PDF και PDF με ενσωματωμένες γραμματοσειρές
  • Κείμενο & σήμανση: TXT, RTF, HTML, MHTML
  • Εικόνες: JPEG, PNG, BMP, GIF
  • OpenDocument: ODT, ODS, ODP

Αυτές οι εκτεταμένες δυνατότητες σας επιτρέπουν να συγκρίνετε ένα συμβόλαιο αποθηκευμένο ως αρχείο Word με μια σαρωμένη έκδοση PDF, όλα μέσα στην ίδια κλήση API.

Συχνά προβλήματα και λύσεις

Πρόβλημα 1: FileNotFoundException κατά τη δημιουργία προεπισκόπησης

Εάν ο φάκελος εξόδου δεν υπάρχει ή η εφαρμογή δεν έχει δικαιώματα εγγραφής, ο preview delegate ρίχνει αυτήν την εξαίρεση.

// Generate page previews
comparer.getTargets().get(0).generatePreview(previewOptions);

Λύση: Επαληθεύστε τη διαδρομή, δημιουργήστε τους ελλείποντες φακέλους προγραμματιστικά και δώστε στη διαδικασία Java τα κατάλληλα δικαιώματα συστήματος αρχείων.

Πρόβλημα 2: Προβλήματα μνήμης με μεγάλα έγγραφα

Η επεξεργασία ενός PDF 300 σελίδων μπορεί να υπερβεί το προεπιλεγμένο heap 512 MB, προκαλώντας OutOfMemoryError.

Delegates.CreatePageStream createPageStream = new Delegates.CreatePageStream() {
    @Override
    public OutputStream invoke(int pageNumber) {
        String outputDir = "previews";
        File directory = new File(outputDir);
        if (!directory.exists()) {
            directory.mkdirs(); // Create directory if it doesn't exist
        }
        
        String pagePath = outputDir + "/preview_page_" + pageNumber + ".png";
        try {
            return new FileOutputStream(pagePath);
        } catch (FileNotFoundException e) {
            System.err.println("Failed to create output file: " + pagePath);
            throw new RuntimeException("Cannot create preview file", e);
        }
    }
};

Λύση: Αυξήστε το heap της JVM (-Xmx2g ή μεγαλύτερο) και επεξεργαστείτε το έγγραφο σε μικρότερες περιοχές σελίδων χρησιμοποιώντας τη δυνατότητα σελιδοποίησης PreviewOptions.

Πρόβλημα 3: Προβλήματα άδειας

Όταν λείπει ή είναι κατεστραμμένο το αρχείο άδειας, το API προσθέτει υδατογράφημα σε κάθε έξοδο και απενεργοποιεί ορισμένες προχωρημένες επιλογές.

// Process fewer pages at a time
PreviewOptions previewOptions = new PreviewOptions.Builder(createPageStream)
    .setPreviewFormat(PreviewFormats.PNG)
    .setPageNumbers(new int[]{1, 2, 3}) // Limit page range
    .build();

// Always dispose of the comparer when done
try (Comparer comparer = new Comparer(sourceDocument)) {
    comparer.add(targetDocument);
    comparer.getTargets().get(0).generatePreview(previewOptions);
} // Automatic cleanup

Λύση: Τοποθετήστε το αρχείο άδειας σε γνωστή θέση και φορτώστε το με License.setLicense("path/to/license.lic") πριν από οποιαδήποτε κλήση σύγκρισης.

Συμβουλές απόδοσης και βέλτιστες πρακτικές (java comparison best practices)

  1. Περιορισμός δημιουργίας προεπισκοπήσεων – ζητήστε μόνο τις σελίδες που χρειάζεστε· χρησιμοποιήστε pageNumbers για παράλειψη άσχετων τμημάτων.
  2. Επιλογή σωστής μορφής εικόνας – PNG για νομικά έγγραφα χωρίς απώλειες, JPEG για μικρογραφίες όπου το μέγεθος μετράει.
  3. Υλοποίηση caching – αποθηκεύστε τα αποτελέσματα σύγκρισης (π.χ., hash του source + target) για να αποφύγετε την επεξεργασία αμετάβλητων αρχείων.
  4. Διαχείριση μνήμης – τυλίξτε τη χρήση του Comparer σε μπλοκ try‑with‑resources και καλέστε close() όταν τελειώσετε.
  5. Αποδέσμευση αντικειμένων comparer – πάντα απελευθερώστε τους εγγενείς πόρους για να διατηρήσετε το αποτύπωμα της JVM χαμηλό.

Κώδικας έτοιμος για παραγωγή

Παρακάτω είναι ο προτεινόμενος κύκλος ζωής για μια εργασία σύγκρισης σε μικροϋπηρεσία.

// Apply license at the start of your application
License license = new License();
license.setLicense("path/to/your/license.lic");

Παραδείγματα υλοποίησης σε πραγματικό κόσμο

Παράδειγμα 1: σύστημα διαχείρισης συμβάσεων

Ένα νομικό τμήμα ανεβάζει το αρχικό συμβόλαιο (source) και την αναθεωρημένη έκδοση (target). Η υπηρεσία επιστρέφει ένα PDF με επισημάνσεις και ένα σύνολο PNG προεπισκοπήσεων σελίδων για γρήγορη οπτική επιθεώρηση.

public class DocumentComparisonService {
    private static final String OUTPUT_DIR = "document-previews/";
    
    public ComparisonResult compareDocuments(String sourcePath, String targetPath) {
        try (Comparer comparer = new Comparer(sourcePath)) {
            comparer.add(targetPath);
            
            // Perform comparison
            String resultPath = OUTPUT_DIR + "comparison-result.docx";
            comparer.compare(resultPath);
            
            // Generate previews if needed
            generatePreviews(comparer, 3); // First 3 pages only
            
            return new ComparisonResult(resultPath, true);
        } catch (Exception e) {
            log.error("Document comparison failed", e);
            return new ComparisonResult(null, false);
        }
    }
    
    private void generatePreviews(Comparer comparer, int maxPages) {
        // Implementation details...
    }
}

Παράδειγμα 2: αξιολόγηση ακαδημαϊκής εργασίας

Οι ερευνητές υποβάλλουν αναθεωρημένα χειρόγραφα. Το σύστημα συγκρίνει το νέο PDF με την προηγούμενη έκδοση, επισημαίνει αλλαγμένες παραπομπές και δημιουργεί εικόνες προεπισκόπησης για τον πίνακα ελέγχου του αξιολογητή.

public class ContractVersionManager {
    public void reviewContractChanges(String originalContract, String revisedContract) {
        try (Comparer comparer = new Comparer(originalContract)) {
            comparer.add(revisedContract);
            
            // Generate comparison document
            String comparisonResult = "contracts/comparison-" + System.currentTimeMillis() + ".docx";
            comparer.compare(comparisonResult);
            
            // Create preview for stakeholder review
            generatePreviewsForReview(comparer);
        }
    }
}

Πώς να java compare pdf files με προστασία κωδικού πρόσβασης

LoadOptions είναι μια κλάση που σας επιτρέπει να καθορίσετε παραμέτρους φόρτωσης όπως κωδικούς πρόσβασης για κρυπτογραφημένα έγγραφα. Για να συγκρίνετε ένα προστατευμένο PDF, δημιουργήστε μια παρουσία LoadOptions με τον κωδικό πρόσβασης, περάστε την στο Comparer κατά τη φόρτωση του εγγράφου και, στη συνέχεια, εκτελέστε τη σύγκριση όπως συνήθως. Η βιβλιοθήκη αποκρυπτογραφεί το αρχείο στη μνήμη, εξασφαλίζοντας ότι κανένα κείμενο δεν γράφεται στο δίσκο, και όλες οι επακόλουθες λειτουργίες—συμπεριλαμβανομένης της δημιουργίας προεπισκοπήσεων και του υπολογισμού diff—λειτουργούν διαφανώς.

public class AcademicDocumentReview {
    public void compareResearchDrafts(String draft1, String draft2) {
        try (Comparer comparer = new Comparer(draft1)) {
            comparer.add(draft2);
            
            // Focus on specific sections (first 10 pages typically contain main content)
            PreviewOptions options = new PreviewOptions.Builder(createPageStream)
                .setPageNumbers(IntStream.rangeClosed(1, 10).toArray())
                .setPreviewFormat(PreviewFormats.PNG)
                .build();
                
            comparer.getTargets().get(0).generatePreview(options);
        }
    }
}

Σύγκριση εγγράφων αποθηκευμένων στο cloud

Εάν η πηγή και ο στόχος σας βρίσκονται σε Amazon S3, Azure Blob ή Google Cloud Storage, απλώς παρέχετε ένα InputStream που λαμβάνεται από το cloud SDK αντί για τοπική διαδρομή αρχείου.

LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("your-password");
Comparer comparer = new Comparer("protected-document.docx", loadOptions);

Συχνές ερωτήσεις

Q: Πώς να διαχειριστώ έγγραφα με προστασία κωδικού πρόσβασης;
A: Χρησιμοποιήστε LoadOptions για να παρέχετε τον κωδικό πρόσβασης κατά τη δημιουργία της παρουσία Comparer, όπως φαίνεται παραπάνω.

Q: Μπορώ να συγκρίνω έγγραφα αποθηκευμένα σε cloud storage;
A: Ναι—απλώς παρέχετε ροές εισόδου από τον πάροχο cloud στο Comparer.

Q: Ποιο είναι το μέγιστο μέγεθος αρχείου που μπορεί να διαχειριστεί το GroupDocs.Comparison;
A: Δεν υπάρχει σκληρό όριο, αλλά για αρχεία μεγαλύτερα από 100 MB θα πρέπει να αυξήσετε το μέγεθος heap της JVM ή να επεξεργαστείτε το έγγραφο σε μικρότερα τμήματα για να αποφύγετε OutOfMemoryError.

Q: Πόσο ακριβής είναι ο αλγόριθμος σύγκρισης;
A: Η βιβλιοθήκη χρησιμοποιεί προχωρημένους αλγόριθμους diff που εντοπίζουν αλλαγές σε κείμενο, μορφοποίηση, εικόνες, πίνακες και ενσωματωμένα αντικείμενα, παρέχοντας σχεδόν pixel‑perfect οπτικά αποτελέσματα diff.

Q: Μπορώ να προσαρμόσω ποιοι τύποι αλλαγών ανιχνεύονται;
A: Απόλυτα. Ορίστε CompareOptions για να ενεργοποιήσετε ή να απενεργοποιήσετε την ανίχνευση κειμένου, μορφοποίησης, εικόνων, πινάκων κ.λπ.

Q: Υποστηρίζει το API τη δημιουργία προεπισκοπήσεων μόνο για επιλεγμένες σελίδες;
A: Ναι—διαμορφώστε το PreviewOptions με έναν συγκεκριμένο πίνακα pageNumbers για να περιορίσετε την έξοδο στις σελίδες που χρειάζεστε.

Συμπέρασμα

Τώρα έχετε έναν πλήρη, έτοιμο για παραγωγή οδηγό για java compare pdf files με το GroupDocs.Comparison. Ακολουθώντας τα βήματα ρύθμισης, εφαρμόζοντας τις προτάσεις απόδοσης και αξιοποιώντας τα αποσπάσματα διαχείρισης κωδικών πρόσβασης και ενσωμάτωσης cloud, μπορείτε να ενσωματώσετε ισχυρές δυνατότητες σύγκρισης εγγράφων σε οποιαδήποτε εφαρμογή Java—είτε πρόκειται για πύλη ελέγχου συμβάσεων, ροή εργασίας ακαδημαϊκών εργασιών ή σύστημα αρχειοθέτησης μεγάλου όγκου εγγράφων.


Last Updated: 2026-11-01
Tested With: GroupDocs.Comparison 25.2
Author: GroupDocs

InputStream sourceStream = getDocumentFromCloud("source-doc-id");
InputStream targetStream = getDocumentFromCloud("target-doc-id");
Comparer comparer = new Comparer(sourceStream);
comparer.add(targetStream);

Σχετικά Μαθήματα