Java pdf dosyalarını karşılaştırma – master GroupDocs.Comparison API
Bu rehberde, GroupDocs.Comparison for Java ile java compare pdf files işlemini verimli bir şekilde nasıl yapacağınızı öğreneceksiniz. İster bir sözleşme‑inceleme portalı, ister bir sürüm‑kontrol sistemi, ister akademik‑makale denetleyicisi oluşturuyor olun, PDF belgeleri arasında en küçük değişikliği bile tespit edebilme yeteneği çok önemlidir. Kurulum, temel karşılaştırma mantığı, önizleme oluşturma, şifre yönetimi, bulut entegrasyonu ve performans‑odaklı en iyi uygulamaları adım adım inceleyeceğiz—böylece dakikalar içinde güvenilir bir çözüm sunabilirsiniz.
Hızlı cevaplar
- GroupDocs Comparison Java ne yapar? İki veya daha fazla belgeyi karşılaştırır, her değişikliği vurgular ve hızlı inceleme için görsel önizlemeler oluşturabilir.
- Hangi dosya formatları destekleniyor? Word, PDF, Excel, PowerPoint, görüntüler, HTML ve daha fazlası.
- Üretim için lisansa ihtiyacım var mı? Evet – geçerli bir GroupDocs lisansı filigranları kaldırır ve tam özellik setini açar.
- Büyük belgeleri işleyebilir miyim? Evet – uygun bellek yönetimi ve önizleme sayfalama ile çok sayfalı PDF’leri işleyebilirsiniz.
- En son Maven bağımlılığını nerede bulabilirim? GroupDocs deposunda – eklemeden önce en son sürümü kontrol edin.
java compare pdf files nedir?
java compare pdf files, iki PDF sürümünü yükleme, metin, biçimlendirme ve grafiksel farkları tespit etme ve isteğe bağlı olarak bu değişiklikleri görsel olarak işaretleyen bir sonuç belgesi üretme sürecine denir. GroupDocs.Comparison bunu tek bir API çağrısı ile uygular, manuel diff mantığına ihtiyaç duymaz.
Java projelerinde GroupDocs.Comparison neden kullanılmalı?
GroupDocs.Comparison, 50+ desteklenen formatta doğru değişiklik tespiti sağlar, standart 8 GB JVM üzerinde 200 sayfaya kadar PDF’yi 5 saniyenin altında işler ve yerleşik önizleme oluşturma özelliği içerir. Maven‑hazır artefaktları entegrasyonu sorunsuz hâle getirir ve önerilen bellek‑yönetimi desenlerini izlediğinizde kütüphane yatay olarak ölçeklenir.
Önkoşullar: Başlamak için neler gerekir
Koda başlamadan önce ortamınızın bu gereksinimleri karşıladığını doğrulayın:
- Java Development Kit: JDK 8 veya daha yeni; daha iyi çöp toplama performansı için JDK 11 veya üzeri önerilir.
- Derleme aracı: Bağımlılık çözümü için Maven veya Gradle.
- IDE: IntelliJ IDEA, Eclipse veya VS Code – modern bir Java IDE’si yeterlidir.
- Temel Java bilgisi: Sınıflar, metodlar ve dosya I/O konusunda rahat olmalısınız.
- Ağ erişimi: GroupDocs Maven artefaktını indirmek ve bulut depolama kullanıyorsanız depolama uç noktanıza erişim için.
Projenize GroupDocs.Comparison ekleme
pom.xml dosyanıza aşağıdaki bağımlılığı ekleyin (X.Y.Z yerine GroupDocs sitesinde bulduğunuz en yeni sürümü koyun):
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-comparison</artifactId>
<version>X.Y.Z</version>
</dependency>
Pro ipucu: Güncellemeden önce sürüm‑spesifik hata düzeltmeleri ve yeni format desteği için GroupDocs sürüm notlarını kontrol edin.
Lisanslama (bunu atlamayın!)
Deneme lisansı API’yi değerlendirmenizi sağlar, ancak üretim dağıtımları filigranları kaldırmak ve tam işlevselliği etkinleştirmek için kalıcı bir lisans gerektirir.
- Ücretsiz deneme: GroupDocs adresinden indirin
- Geçici lisans: Uzun süreli test için bir geçici lisans alın
- Tam lisans: GroupDocs Store üzerinden satın alın
İlk kurulum: GroupDocs.Comparison’ı hazırlama
Temel başlatma
Comparer sınıfı tüm karşılaştırma işlemleri için giriş noktasıdır. Belge yükleme, fark hesaplama ve sonuç üretimini yönetir.
<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>
Kod parçacığının yaptığı: Bir Comparer örneği oluşturur, bir lisans uygular (eğer varsa) ve motoru sonraki karşılaştırma çağrıları için hazırlar.
Adım‑adım uygulama rehberi
Bölüm 1: belge karşılaştırmasını ayarlama
Adım 1: comparer’ınızı başlatın
Comparer nesnesi fark algoritmasını yürüten temel bileşendir. Karşılaştırma seçenekleri ve lisans bilgileri gibi yapılandırmaları tutar.
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);
Neden önemli: Sağladığınız kaynak belge temel (baseline) olur; her değişiklik ona göre ölçülür.
Adım 2: hedef belgeleri ekleyin
Kaynağı bir veya daha fazla hedef dosyayla karşılaştırabilirsiniz. Bir sözleşme yönetimi senaryosunda, kaynak orijinal anlaşma, hedef ise hukuk ekibinden gelen revize edilmiş versiyondur.
// Initialize comparer with the source document
Comparer comparer = new Comparer(SampleFiles.SOURCE_WORD);
Bölüm 2: sayfa önizlemeleri oluşturma
Adım 1: çıktı akışı oluşturmayı ayarlayın
Önizleme delege deseni, önizleme görüntülerinin nerede saklanacağını—yerel disk, bulut kovası veya veritabanı—tam kontrol etmenizi sağlar.
// Add a target document for comparison
comparer.add(SampleFiles.TARGET1_WORD);
Adım 2: önizleme seçeneklerini yapılandırın
Sadece gerçekten ihtiyaç duyduğunuz sayfalar için önizleme oluşturun; bu, büyük PDF’lerde CPU kullanımını %60’a kadar azaltır.
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);
}
}
};
Adım 3: önizlemeleri oluşturun
API, istenen her sayfayı PNG (kayıpsız) veya JPEG (daha küçük boyut) olarak render eder. Piksel‑tam doğruluğun önemli olduğu yasal belgeler için PNG önerilir.
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();
Desteklenen dosya formatları
GroupDocs.Comparison, 50’den fazla giriş ve çıkış formatı ile çalışır, şunlar dahil:
- Microsoft Office: DOCX, DOC, XLSX, XLS, PPTX, PPT
- PDF: Tüm PDF‑1.x sürümleri, şifreli PDF’ler ve gömülü fontlu PDF’ler
- Metin & işaretleme: TXT, RTF, HTML, MHTML
- Görüntüler: JPEG, PNG, BMP, GIF
- OpenDocument: ODT, ODS, ODP
Bu geniş yetenekler, bir Word dosyası olarak saklanan bir sözleşmeyi taranmış bir PDF sürümüyle aynı API çağrısı içinde karşılaştırmanıza olanak tanır.
Yaygın sorunlar ve çözümler
Sorun 1: Önizleme oluşturma sırasında FileNotFoundException
Çıktı dizini mevcut değilse veya uygulamanın yazma izni yoksa, önizleme delege bu istisnaı fırlatır.
// Generate page previews
comparer.getTargets().get(0).generatePreview(previewOptions);
Çözüm: Yolu doğrulayın, eksik klasörleri programlı olarak oluşturun ve Java sürecine uygun dosya sistemi izinleri verin.
Sorun 2: Büyük belgelerde bellek sorunları
300 sayfalık bir PDF işlemek, varsayılan 512 MB yığını aşabilir ve OutOfMemoryError hatasına yol açar.
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);
}
}
};
Çözüm: JVM yığınını artırın (-Xmx2g veya daha yüksek) ve PreviewOptions sayfalama özelliğini kullanarak belgeyi daha küçük sayfa aralıklarında işleyin.
Sorun 3: Lisans sorunları
Lisans dosyası eksik veya hatalı olduğunda, API her çıktıya bir filigran ekler ve bazı gelişmiş seçenekleri devre dışı bırakır.
// 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
Çözüm: Lisans dosyasını bilinen bir konuma koyun ve herhangi bir karşılaştırma çağrısından önce License.setLicense("path/to/license.lic") ile yükleyin.
Performans ipuçları ve en iyi uygulamalar (java comparison best practices)
- Önizleme oluşturmayı sınırlayın – sadece ihtiyacınız olan sayfaları isteyin; alakasız bölümleri atlamak için
pageNumberskullanın. - Doğru görüntü formatını seçin – kayıpsız yasal belgeler için PNG, boyutun önemli olduğu küçük resimler için JPEG.
- Önbellekleme uygulayın – karşılaştırma sonuçlarını (ör. kaynak + hedef hash’i) saklayarak değişmemiş dosyaların yeniden işlenmesini önleyin.
- Belleği yönetin –
Comparerkullanımını try‑with‑resources bloğu içinde sarın ve iş bitinceclose()çağırın. - Comparer nesnelerini serbest bırakın – JVM ayak izini düşük tutmak için her zaman yerel kaynakları serbest bırakın.
Üretim‑hazır kod deseni
Aşağıda bir mikroserviste karşılaştırma görevi için önerilen yaşam döngüsü yer almaktadır.
// Apply license at the start of your application
License license = new License();
license.setLicense("path/to/your/license.lic");
Gerçek‑dünya uygulama örnekleri
Örnek 1: sözleşme yönetim sistemi
Bir hukuk departmanı orijinal sözleşmeyi (kaynak) ve revize edilmiş versiyonu (hedef) yükler. Servis, vurgulanmış bir PDF ve hızlı görsel inceleme için sayfa‑önizleme PNG’leri seti döndürür.
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...
}
}
Örnek 2: akademik makale incelemesi
Araştırmacılar revize edilmiş elyazmalarını gönderir. Sistem yeni PDF’yi önceki sürümle karşılaştırır, değişen atıfları işaretler ve inceleyici panosu için önizleme görüntüleri oluşturur.
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);
}
}
}
Şifre korumalı pdf dosyalarını java compare pdf files nasıl yapılır
LoadOptions sınıfı, şifreli belgeler için şifre gibi yükleme parametrelerini belirtmenizi sağlar. Korunan bir PDF’yi karşılaştırmak için şifreyle bir LoadOptions örneği oluşturun, belgeyi yüklerken Comparer‘a geçirin ve ardından karşılaştırmayı normal şekilde çalıştırın. Kütüphane dosyayı bellek içinde çözer, diske düz metin yazılmasını engeller ve tüm sonraki işlemler—önizleme oluşturma ve fark hesaplama dahil—şeffaf bir şekilde çalışır.
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);
}
}
}
Bulutta depolanan belgeleri karşılaştırma
Kaynak ve hedefiniz Amazon S3, Azure Blob veya Google Cloud Storage’da bulunuyorsa, yerel dosya yolu yerine bulut SDK’sından elde edilen bir InputStream sağlayın.
LoadOptions loadOptions = new LoadOptions();
loadOptions.setPassword("your-password");
Comparer comparer = new Comparer("protected-document.docx", loadOptions);
Sıkça sorulan sorular
S: Şifre‑korumalı belgeleri nasıl yönetirim?
C: Yukarıda gösterildiği gibi Comparer örneği oluştururken şifreyi sağlamak için LoadOptions kullanın.
S: Bulut depolamada saklanan belgeleri karşılaştırabilir miyim?
C: Evet—bulut sağlayıcınızdan gelen giriş akışlarını Comparer‘a sağlayın.
S: GroupDocs.Comparison’ın işleyebileceği maksimum dosya boyutu nedir?
C: Katı bir limit yok, ancak 100 MB’den büyük dosyalar için JVM yığın boyutunu artırmalı veya OutOfMemoryError almamak için belgeyi daha küçük parçalar halinde işlemelisiniz.
S: Karşılaştırma algoritması ne kadar doğru?
C: Kütüphane, metin, biçimlendirme, görüntüler, tablolar ve gömülü nesnelerdeki değişiklikleri tespit eden gelişmiş diff algoritmaları kullanır ve neredeyse piksel‑tam görsel diff sonuçları sunar.
S: Hangi değişiklik türlerinin tespit edileceğini özelleştirebilir miyim?
C: Kesinlikle. CompareOptions ayarını yaparak metin, biçimlendirme, görüntüler, tablolar ve daha fazlasının tespit edilmesini açıp kapatabilirsiniz.
S: API yalnızca seçili sayfalar için önizleme oluşturmayı destekliyor mu?
C: Evet—gerekli sayfalara sınırlamak için PreviewOptions içinde belirli bir pageNumbers dizisi yapılandırın.
Sonuç
Artık GroupDocs.Comparison ile java compare pdf files için eksiksiz, üretim‑hazır bir rehbere sahipsiniz. Kurulum adımlarını izleyerek, performans önerilerini uygulayarak ve şifre‑yönetimi ile bulut‑entegrasyon kod parçacıklarından yararlanarak, herhangi bir Java uygulamasına sağlam belge‑karşılaştırma yeteneklerini entegre edebilirsiniz—ister bir sözleşme‑inceleme portalı, ister akademik‑makale iş akışı, ister büyük‑ölçekli belge‑arşivleme sistemi olsun.
Son Güncelleme: 2026-11-01
Test Edilen: GroupDocs.Comparison 25.2
Yazar: GroupDocs
InputStream sourceStream = getDocumentFromCloud("source-doc-id");
InputStream targetStream = getDocumentFromCloud("target-doc-id");
Comparer comparer = new Comparer(sourceStream);
comparer.add(targetStream);