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 PagesSetup kullanı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 CodeYüksek yoğunluklu veri, URL’ler, çok satırlı metin4.296 karaktere kadar
Code128Alfasayısal izleme numaralarıDeğişken
Code39Basit eski kodlar43 karaktere kadar
DataMatrixKüçük etiketler, sağlık kayıtları2.335 karaktere kadar
EAN/UPCÜrün tanımlama, perakende8‑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.
  • setAllPages ve PagesSetup ayarları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 sayfa
  • getEncodeType() – 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ı

SenaryoBarkod‑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 takibiManifestoların ilk/son sayfalarında Code128 gönderi kimliklerini bulma
Sağlık onam formlarıSon onam sayfasından DataMatrix hasta kimliklerini çıkarma
Fatura otomasyonuFaturada “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