Java Kullanarak Belgelerde Belirli Sayfalarda Barkod Arama
Giriş
Yüzlerce belge üzerinde imzaları manuel olarak saatlerce doğrulamak zorunda kaldınız mı? Yalnız değilsiniz. İster bir sözleşme yönetim sistemi, ister fatura işleme otomasyonu, ister sağlık kayıtlarını güvence altına alma üzerine çalışıyor olun, barkod imzalarını manuel olarak izlemek ve doğrulamak zahmetli ve hataya açık bir süreçtir.
Bu rehberde belirli sayfalarda barkod aramayı Java ve GroupDocs.Signature ile programlı olarak nasıl yapacağınızı göstereceğiz. Sonunda, seçili sayfalarda imzaları tespit edebilecek, arama ilerlemesini gerçek zamanlı izleyebilecek ve çeşitli barkod formatlarını temiz, sürdürülebilir bir kodla işleyebileceksiniz.
Öğrenecekleriniz
- Java projesine GroupDocs.Signature ekleme (≈5 dakika)
- Gerçek‑zamanlı ilerleme takibi için arama olaylarına abone olma
- Belirli sayfalara odaklanmak için akıllı arama seçeneklerini yapılandırma
- Aramayı çalıştırma ve sonuçları verimli işleme
Hızlı Yanıtlar
- Hangi kütüphane belirli sayfalarda barkod aramayı sağlar? GroupDocs.Signature for Java
- Tipik kurulum süresi? Maven/Gradle bağımlılığını ve lisansı eklemek yaklaşık 5 dakika
- Aramayı ilk ve son sayfalara sınırlayabilir miyim? Evet – tam sayfaları belirtmek için
PagesSetupkullanın - Hangi barkod formatları destekleniyor? QR Code, Code128, Code39, DataMatrix, EAN/UPC ve daha fazlası
- Üretim için ücretli lisansa ihtiyacım var mı? Üretim için tam lisans gerekir; değerlendirme için bir deneme sürümü çalışır
“Belirli Sayfalarda Barkod Arama” Nedir?
Belirli sayfalarda barkod arama, imza motoruna yalnızca ilgilendiğiniz sayfalarda (ör. ilk sayfa, son sayfa veya özel bir aralık) barkod imzalarını aramasını söylemek anlamına gelir. Bu odaklanmış yaklaşım işleme süresini hızlandırır, bellek kullanımını azaltır ve duyarlı UI geri bildirimi oluşturmanıza olanak tanır.
Neden GroupDocs.Signature Bu Görev İçin Kullanılmalı?
GroupDocs.Signature, düşük seviyeli barkod çözümleme, sayfa renderlama ve belge formatı işleme detaylarını soyutlayan yüksek seviyeli bir API sunar. PDF, DOCX, XLSX ve birçok diğer formatı kutudan çıkar çıkmaz destekler, böylece dosya ayrıştırma yerine iş mantığına odaklanabilirsiniz.
Önkoşullar
- JDK 8+ yüklü
- Maven veya Gradle bağımlılık yönetimi için
- Java sınıfları, metodları ve istisna yönetimi konusunda temel bilgi
- GroupDocs.Signature lisansı (deneme veya tam)
Java için GroupDocs.Signature Kurulumu
Maven Kurulumu
pom.xml dosyanıza bağımlılığı ekleyin:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle Kurulumu
Veya build.gradle içine ekleyin:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Manuel indirmeyi mi tercih ediyorsunuz? En son sürümü doğrudan GroupDocs indirme sayfasından alabilirsiniz.
Lisansınızı Alın
- Ücretsiz Deneme – anında başlayın, taahhüt yok
- Geçici Lisans – değerlendirme için tam özellik erişimi
- Tam Lisans – üretim‑hazır, sınırsız kullanım
Kurulumu hızlı bir başlatma kodu ile doğrulayın:
import com.groupdocs.signature.Signature;
public class SignatureSetup {
public static void main(String[] args) {
// Initialize the Signature instance with the document path
Signature signature = new Signature("YOUR_DOCUMENT_PATH");
System.out.println("GroupDocs.Signature for Java initialized successfully.");
}
}
Pro ipucu:
"YOUR_DOCUMENT_PATH"ifadesini gerçek bir PDF, DOCX veya XLSX dosyasıyla değiştirin. Konsol başarı mesajını yazdırıyorsa, kullanıma hazırsınız.
Barkod İmza Türlerini Anlamak
Barkodlar, bir belge içinde makine tarafından okunabilir veri saklar. El yazısı imzaların aksine, kimlikler, zaman damgaları, URL’ler veya JSON yükleri gibi bilgileri depolayabilir ve otomatik doğrulama için idealdir.
| Barkod Türü | En İyi Kullanım Alanı | Tipik Veri Uzunluğu |
|---|---|---|
| QR Code | Yüksek yoğunluklu veri, URL’ler, çok satırlı metin | 4.296 karaktere kadar |
| Code128 | Alfasayısal izleme numaraları | Değişken |
| Code39 | Basit eski kodlar | 43 karaktere kadar |
| DataMatrix | Küçük etiketler, sağlık kayıtları | 2.335 karaktere kadar |
| EAN/UPC | Ürün tanımlama, perakende | 8‑13 rakam |
Barkodları genellikle hızlı makine okuması, yapılandırılmış veri veya müdahale tespitli imzalama gerektiğinde kullanırsınız.
Belirli Sayfalarda Barkod Arama Nasıl Yapılır
Uygulamayı üç odaklanmış özelliğe böleceğiz.
Özellik 1: Belge Arama Olaylarına Abone Olma
Neden Önemli
Büyük toplu işlemlerde gerçek‑zamanlı geri bildirim (ör. ilerleme çubukları) UX’i iyileştirir ve duraklamaları erken tespit etmenizi sağlar.
Uygulama
Signature signature = new Signature("YOUR_DOCUMENT_PATH");
signature.SearchStarted.add(new ProcessStartEventHandler() {
public void invoke(Signature sender, ProcessStartEventArgs args) {
System.out.println("Search process started at " + args.getStarted()
+ " with " + args.getTotalSignatures() + " total signatures to be put in document");
}
});
signature.SearchProgress.add(new ProcessProgressEventHandler() {
public void invoke(Signature sender, ProcessProgressEventArgs args) {
System.out.println("Search progress. Processed " + args.getProcessedSignatures()
+ " signatures. Time spent " + args.getTicks() + " mlsec");
}
});
signature.SearchCompleted.add(new ProcessCompleteEventHandler() {
public void invoke(Signature sender, ProcessCompleteEventArgs args) {
System.out.println("Search process completed at " + args.getCompleted()
+ " with " + args.getTotalSignatures() + " total signatures. Process took "
+ args.getTicks() + " mlsec");
}
});
Bu üç işleyici, başlangıç zamanını, canlı ilerlemeyi ve nihai istatistikleri verir – günlük kaydı veya UI güncellemeleri için mükemmeldir.
Özellik 2: Belirli Sayfalar İçin Barkod Arama Seçeneklerini Yapılandırma
Neden Ayrıntılı Kontrol Önemli
200‑sayfalık bir sözleşmenin tüm sayfalarını taramak CPU döngülerini boşa harcar. Yalnızca ilk ve son sayfaları hedeflemek çalışma süresini %80 azaltabilir.
Uygulama
import com.groupdocs.signature.domain.enums.TextMatchType;
import com.groupdocs.signature.options.search.BarcodeSearchOptions;
BarcodeSearchOptions options = new BarcodeSearchOptions();
options.setAllPages(false); // Opt‑in selective page searching
options.setPageNumber(1); // Starting page (optional)
import com.groupdocs.signature.options.PagesSetup;
PagesSetup pagesSetup = new PagesSetup();
pagesSetup.setFirstPage(true); // Include first page
pagesSetup.setLastPage(true); // Include last page
pagesSetup.setOddPages(false); // Skip odd pages
pagesSetup.setEvenPages(false); // Skip even pages
options.setPagesSetup(pagesSetup);
options.setMatchType(TextMatchType.Contains);
options.setText("12345");
- Eşleşme türleri (
Contains,Exact,StartsWith,EndsWith) metin aramasını ince ayarlamanızı sağlar. setAllPagesvePagesSetupayarlarını yalnızca belirli sayfalarda barkod arama yapacak şekilde değiştirin.
Özellik 3: Aramayı Gerçekleştirme ve Sonuçları İşleme
Neden Bu Adım Önemli
Barkodları bulmak sadece hikâyenin yarısıdır—veri üzerinde (ör. doğrulama, depolama, iş akışı tetikleme) bir şeyler yapmanız gerekir.
Uygulama
import java.util.List;
import com.groupdocs.signature.domain.signatures.BarcodeSignature;
try {
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, options);
System.out.println("Source document contains following signatures.");
for (BarcodeSignature barcodeSignature : signatures) {
System.out.println("Barcode signature found at page " + barcodeSignature.getPageNumber()
+ " with type " + barcodeSignature.getEncodeType() + " and text " + barcodeSignature.getText());
}
} catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
Artık bir BarcodeSignature nesnesi listesine sahipsiniz; her biri şu bilgileri sunar:
getPageNumber()– barkodun bulunduğu sayfagetEncodeType()– QR, Code128 vb.getText()– çözülen yük- Konum (
getLeft(),getTop()) ve boyut (getWidth(),getHeight())
Örnek: Son sayfada yalnızca QR kodlarını işleme
for (BarcodeSignature barcodeSignature : signatures) {
if (barcodeSignature.getPageNumber() == lastPageNumber
&& barcodeSignature.getEncodeType().equals("QRCode")) {
// Process only QR codes from the final page
processApprovalCode(barcodeSignature.getText());
}
}
Gerçek Dünya Uygulamaları
| Senaryo | Barkod‑spesifik‑sayfa aramasının nasıl yardımcı olduğu |
|---|---|
| Yasal sözleşme doğrulama | İmza sayfasında QR‑kodlu sertifika hash’lerini otomatik doğrulama |
| Tedarik zinciri takibi | Manifestoların ilk/son sayfalarında Code128 gönderi kimliklerini bulma |
| Sağlık onam formları | Son onam sayfasından DataMatrix hasta kimliklerini çıkarma |
| Fatura otomasyonu | Faturada “APPR‑” ile başlayan barkodları bulup yönlendirme |
Yaygın Sorunlar ve Çözümler
Sorun 1 – Görünür barkodlar olmasına rağmen sonuç yok
// Ensure you are not limiting pages too aggressively
options.setAllPages(true);
Barkod raster bir görüntü olarak gömülü ise, görüntü‑tabanlı algılama için GroupDocs.Image kullanmayı düşünün.
Sorun 2 – Büyük dosyalarda yavaş performans
PagesSetup pagesSetup = new PagesSetup();
pagesSetup.setLastPage(true); // Most signatures are on the last page
pagesSetup.setFirstPage(true);
options.setPagesSetup(pagesSetup);
Hedeflenen sayfalar işlem süresini büyük ölçüde azaltır.
Sorun 3 – TextMatchType beklenen barkodları bulamıyor
String searchText = "12345".trim().toLowerCase();
options.setText(searchText);
options.setMatchType(TextMatchType.StartsWith); // Try a more permissive mode
Sorun 4 – Uzun süren döngülerde bellek sızıntıları
try (Signature signature = new Signature("document.pdf")) {
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, options);
// Process signatures
}
try‑with‑resources bloğu Signature örneğini otomatik olarak serbest bırakır.
Üretim İçin En İyi Uygulamalar
Sağlam hata yönetimi
try {
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, options);
} catch (com.groupdocs.signature.exception.GroupDocsSignatureException e) {
logger.error("GroupDocs error: " + e.getMessage());
} catch (Exception e) {
logger.error("Unexpected error: " + e.getMessage(), e);
}
Belgeler değişmez olduğunda sonuçları önbellekle
Map<String, List<BarcodeSignature>> cache = new ConcurrentHashMap<>();
public List<BarcodeSignature> getCachedSignatures(String docId) {
return cache.computeIfAbsent(docId, id -> performSearch(id));
}
UI geri bildirimi için ilerleme olaylarını kullan
signature.SearchProgress.add(new ProcessProgressEventHandler() {
public void invoke(Signature sender, ProcessProgressEventArgs args) {
int percent = (args.getProcessedSignatures() * 100) / args.getTotalSignatures();
updateProgressBar(percent);
}
});
Barkod yüklerini doğrula
for (BarcodeSignature barcodeSignature : signatures) {
String text = barcodeSignature.getText();
if (!text.matches("APPR-\\d{4}-\\d{3}")) {
logger.warn("Invalid format: " + text);
continue;
}
if (!validateChecksum(text)) {
logger.error("Checksum failed for: " + text);
flagForManualReview(document);
}
}
Belge türüne göre sayfa seçimini optimize et
PagesSetup contractsSetup = new PagesSetup();
contractsSetup.setLastPage(true); // Contracts usually signed on last page
options.setPagesSetup(contractsSetup);
Aramadan sonra barkod tipine göre filtrele (yalnızca QR kodları gerekiyorsa)
for (BarcodeSignature sig : signatures) {
if ("QRCode".equals(sig.getEncodeType())) {
// Process QR code
}
}
Barkod görüntüsü boyutlarını çıkar (görselleştirme için gerekliyse)
for (BarcodeSignature sig : signatures) {
int width = sig.getWidth();
int height = sig.getHeight();
// Use dimensions for overlay or thumbnail generation
}
Sık Sorulan Sorular
S: Tek bir çağrıda birden fazla barkod formatı arayabilir miyim?
C: Evet. BarcodeSearchOptions varsayılan olarak tüm desteklenen formatları arar. Yalnızca belirli tipler gerekiyorsa sonuçları getEncodeType() ile filtreleyin.
S: Hem barkod hem de görüntü imzaları içeren belgeleri nasıl yönetirim?
C: Ayrı aramalar yürütün—barkodlar için BarcodeSignature.class, görüntü imzaları için ImageSignature.class kullanın, ardından gerektiği gibi sonuçları birleştirin.
S: Tüm sayfaları taramakla belirli sayfaları taramanın performans etkisi nedir?
C: 50‑sayfalık bir PDF’nin tüm sayfalarını taramak 3–5 saniye sürebilir. İlk + son sayfalarla sınırlamak genellikle 1 saniyenin altında tamamlanır.
S: Bu yöntem taranmış PDF’lerde (raster görüntüler) çalışır mı?
C: Yalnızca barkod dijital imza nesnesi olarak eklenmişse çalışır. Sadece raster barkodlar için görüntü‑tabanlı bir barkod tanıyıcı (ör. GroupDocs.Barcode) gerekir.
S: Bir barkod imzasının değiştirilmediğini nasıl doğrularım?
C: Barkod yüküne bir hash veya dijital imza gömün, ardından orijinal verinin hash’ini yeniden hesaplayıp karşılaştırın. Bunun için orijinal imzalama anahtarı veya sertifikası gerekir.
Son Güncelleme: 2026-01-29
Test Edilen Sürüm: GroupDocs.Signature 23.12 for Java
Yazar: GroupDocs