Java Kullanarak Belgelerde Barkod Belirli Sayfaları 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 geliştiriyor olun, ister fatura işleme otomasyonu yapıyor olun ya da sağlık kayıtlarını güvence altına alıyor olun, barkod imzalarını manuel olarak izlemek ve doğrulamak zahmetli ve hata yapmaya açıktır. Bu öğreticide GroupDocs.Signature ile java’da barkod sayfalarını nasıl arayacağınızı öğreneceksiniz, böylece yalnızca önemli sayfalara programlı olarak odaklanabilir, ilerlemeyi gerçek zamanlı izleyebilir ve sadece birkaç satır Java kodu ile çeşitli barkod formatlarını işleyebilirsiniz.

Öğrenecekleriniz

  • Java projesinde GroupDocs.Signature kurulumunu yapmak (≈5 dakika)
  • Gerçek zamanlı ilerleme takibi için arama olaylarına abone olmak
  • Belirli sayfaları hedeflemek için akıllı arama seçeneklerini yapılandırmak
  • Aramayı yürütmek ve sonuçları verimli bir şekilde işlemek

Hızlı Yanıtlar

  • Barkod belirli sayfalarını aramanıza yardımcı olan kütüphane hangisidir? GroupDocs.Signature for Java
  • Tipik kurulum süresi? Maven/Gradle bağımlılığını ve bir lisansı eklemek yaklaşık 5 dakika
  • Aramayı ilk ve son sayfalara sınırlayabilir miyim? Evet – kesin 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 gereklidir; değerlendirme için bir deneme sürümü çalışır

“Barkod belirli sayfaları arama” nedir?

Barkod belirli sayfaları aramak, imza motoruna yalnızca ilgilendiğiniz sayfalarda barkod imzalarını aramasını söylemek anlamına gelir—örneğin, ilk sayfa, son sayfa veya herhangi bir özel aralık. Bu odaklanmış yaklaşım işleme süresini hızlandırır, bellek kullanımını azaltır ve duyarlı bir UI geri bildirimi oluşturmanıza olanak tanır.

Bu görev için GroupDocs.Signature neden kullanılmalı?

GroupDocs.Signature, düşük seviyeli barkod çözümlemesi, sayfa renderleme ve belge formatı işleme detaylarını soyutlayan yüksek seviyeli bir API sunar. 20’den fazla barkod formatını destekler ve tüm dosyayı belleğe yüklemeden çok yüz sayfalı belgeleri işleyebilir, böylece dosya ayrıştırması yerine iş mantığına odaklanabilirsiniz.

Ön Koş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ına erişim (deneme veya tam)

Java için GroupDocs.Signature Kurulumu

Maven Kurulumu

Bağımlılığı pom.xml dosyanıza ekleyin:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version>
</dependency>

Gradle Kurulumu

Ya da build.gradle dosyanıza ekleyin:

implementation 'com.groupdocs:groupdocs-signature:23.12'

Manuel indirmeleri tercih mi ediyorsunuz? En son sürümü doğrudan GroupDocs indirme sayfasından alabilirsiniz.

Lisansınızı Almak

  • Free Trial – hemen başlayın, taahhüt yok
  • Temporary License – değerlendirme için tam özellik erişimi
  • Full License – ü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 tip: "YOUR_DOCUMENT_PATH" ifadesini gerçek bir PDF, DOCX veya XLSX dosyasıyla değiştirin. Konsol başarı mesajını yazdırıyorsa, hazırsınız.

Barkod İmza Türlerini Anlamak

Barkodlar, bir belge içinde makine tarafından okunabilir veri gömer. El yazısı imzaların aksine, kimlikler, zaman damgaları, URL’ler veya JSON yükleri depolayabilirler ve bu da onları otomatik doğrulama için ideal kılar.

Barkod TürüEn İyi Kullanım AlanıTipik Veri Uzunluğu
QR CodeYüksek yoğunluklu veri, URL’ler, çok satırlı metinMaksimum 4.296 karakter
Code128Alfanümerik izleme numaralarıDeğişken
Code39Basit eski kodlarMaksimum 43 karakter
DataMatrixKüçük etiketler, sağlık kayıtlarıMaksimum 2.335 karakter
EAN/UPCÜrün tanımlama, perakende8‑13 rakam

Bar kodları, hızlı makine okuması, yapılandırılmış veri veya müdahale tespitli imzalama gerektiğinde sıkça kullanırsınız.

Java’da barkod sayfalarını nasıl ararsınız?

Signature işlenecek belgeyi temsil eden birincil sınıftır. Belgenizi new Signature("file.pdf") ile yükleyin, BarcodeSearchOptions barkod imzalarını aramak için parametreleri tanımlar ve istediğiniz sayfalara hedeflemek için yapılandırın, ardından signature.search(options) çağırın. search metodu verilen seçeneklerle arama işlemini yürütür. Motor, sayfa numaraları, çözülen metin ve geometrik koordinatları içeren BarcodeSignature nesnelerinin bir listesini döndürür—hepsi tek bir çağrıda. Bu tek‑adım deseni, ayrı görüntü çıkarma veya özel çözümleme mantığı ihtiyacını ortadan kaldırır.

Şimdi genel akışı anladığınıza göre, uygulayacağınız üç temel özelliğe dalalım.

Özellik 1: Belge Arama Olaylarına Abone Olma

Bunun önemi

Büyük partileri işlerken, gerçek zamanlı geri bildirim (ör. ilerleme çubukları) kullanıcı deneyimini iyileştirir ve tıkanmaları erken tespit etmenize yardımcı olur.

Tanım referansı

Signature belgeyi temsil eder ve olay abonelik yetenekleri sağlar.

Implementation

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 son istatistikleri sağlar—günlük kaydı veya UI güncellemeleri için mükemmeldir.

Özellik 2: Belirli Sayfalar İçin Barkod Arama Seçeneklerini Yapılandırma

Ayrıntılı kontrolün önemi

200 sayfalık bir sözleşmenin her sayfasını taramak CPU döngülerini boşa harcar. Yalnızca ilk ve son sayfaları hedeflemek, çalışma süresini %80’e kadar azaltabilir.

Tanım referansı

PagesSetup, arama işlemi içinde hangi sayfaların dahil edileceğini belirtir.

Implementation

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");
  • Match types metin aramasını ince ayarlamanızı sağlar (Contains, Exact, StartsWith, EndsWith).
  • setAllPages ve PagesSetup ayarlarını yalnızca barkod belirli sayfaları aramak için değiştirin.

Özellik 3: Aramayı Yürütme ve Sonuçları İşleme

Bu adımın önemi

Barkodları bulmak sadece hikayenin yarısıdır—veri üzerinde bir şeyler yapmanız gerekir (ör. doğrulama, depolama veya iş akışlarını tetikleme).

Tanım referansı

BarcodeSignature, tespit edilen bir barkodu temsil eder ve sayfa numarası ve çözülen metin gibi özelliklerini içerir.

Implementation

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 şunları sunar:

  • getPageNumber() – barkodun bulunduğu sayfa
  • getEncodeType() – QR, Code128 vb.
  • getText() – çözülen yük
  • Pozisyon (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‑belirli‑sayfa araması nasıl yardımcı olur
Hukuki sözleşme doğrulamaİmza sayfasındaki QR‑kodlu sertifika hashlerini otomatik doğrulama
Tedarik zinciri takibiManifestlerin ilk/son sayfalarında Code128 gönderi kimliklerini bulma
Sağlık onay formlarıSon onay sayfasından DataMatrix hasta kimliklerini çıkarma
Fatura otomasyonuFaturada herhangi bir yerde “APPR‑” önekli barkodları bulma ve yönlendirme

Yaygın Sorunlar ve Çözümler

Sorun 1 – Görünür barkodlara rağmen sonuç yok

// Ensure you are not limiting pages too aggressively
options.setAllPages(true);

Eğer barkod raster görüntü olarak gömülmüşse, 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; iki sayfaya sınırladığınızda 150 sayfalık bir PDF ~4 saniyeden <1 saniyeye düşer.

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‑with‑resources bloğu Signature örneğini otomatik olarak serbest bırakır.

try (Signature signature = new Signature("document.pdf")) {
    List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, options);
    // Process signatures
}

Ü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ı önbelleğe al

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ü boyutlarını çıkar (renderleme 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: Bir çağrıda birden fazla barkod formatını arayabilir miyim?
C: Evet. BarcodeSearchOptions varsayılan olarak tüm desteklenen formatları arar. Yalnızca belirli tipleri istiyorsanız sonuçları getEncodeType() ile filtreleyin.

S: Hem barkod hem de görüntü imzaları içeren belgeler nasıl işlenir?
C: Ayrı aramalar yapın—barkodlar için BarcodeSignature.class ve görüntü imzaları için ImageSignature.class kullanın, ardından gerektiği gibi sonuçları birleştirin.

S: Tüm sayfaları aramanın, belirli sayfaları aramaya göre performans etkisi nedir?
C: 50 sayfalık bir PDF’nin her sayfasını taramak 3–5 saniye sürebilir. İlk + son sayfalara sınırlamak genellikle 1 saniyenin altında biter.

S: Bu, 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ı barkod tanıyıcı gerekir (ör. GroupDocs.Barcode).

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 veride hash’i yeniden hesaplayıp karşılaştırın. Bunun için orijinal imzalama anahtarı veya sertifikası gerekir.


Son Güncelleme: 2026-06-21
Test Edilen Versiyon: GroupDocs.Signature 23.12 for Java
Yazar: GroupDocs

İlgili Öğreticiler