Vyhledávání stránek s čárovým kódem v dokumentech pomocí Javy

Úvod

Už jste někdy strávili hodiny ručním ověřováním podpisů ve stovkách dokumentů? Nejste v tom sami. Ať už budujete systém pro správu smluv, automatizaci zpracování faktur nebo zabezpečujete zdravotnické záznamy, ruční vyhledávání a validace čárových kódů je únavné a náchylné k chybám. V tomto tutoriálu se naučíte, jak vyhledávat stránky s čárovým kódem v Javě pomocí GroupDocs.Signature, takže můžete programově cílit jen na relevantní stránky, sledovat průběh v reálném čase a zpracovávat různé formáty čárových kódů pomocí několika řádků Java kódu.

Co se naučíte

  • Nastavení GroupDocs.Signature v Java projektu (≈5 minut)
  • Přihlášení k událostem vyhledávání pro sledování průběhu v reálném čase
  • Konfigurace chytrých možností vyhledávání pro cílení konkrétních stránek
  • Efektivní spuštění vyhledávání a zpracování výsledků

Rychlé odpovědi

  • Která knihovna vám pomůže vyhledávat konkrétní stránky s čárovým kódem? GroupDocs.Signature pro Javu
  • Typický čas nastavení? Přibližně 5 minut na přidání Maven/Gradle závislosti a licence
  • Mohu omezit vyhledávání na první a poslední stránku? Ano – použijte PagesSetup k určení konkrétních stránek
  • Jaké formáty čárových kódů jsou podporovány? QR Code, Code128, Code39, DataMatrix, EAN/UPC a další
  • Potřebuji placenou licenci pro produkci? Pro produkci je vyžadována plná licence; pro hodnocení stačí trial

Co je „vyhledávání stránek s čárovým kódem“?

Vyhledávání stránek s čárovým kódem znamená instruovat motor podpisu, aby hledal čárové kódy pouze na stránkách, které vás zajímají – např. na první, poslední nebo v libovolném vlastním rozsahu. Tento zaměřený přístup urychluje zpracování, snižuje využití paměti a umožňuje vytvořit responzivní UI zpětnou vazbu.

Proč použít GroupDocs.Signature pro tento úkol?

GroupDocs.Signature poskytuje vysoceúrovňové API, které abstrahuje nízkoúrovňové dekódování čárových kódů, vykreslování stránek a manipulaci s formáty dokumentů. Podporuje více než 20 formátů čárových kódů a dokáže zpracovat dokumenty s více než stovkou stran bez načítání celého souboru do paměti, což vám umožní soustředit se na obchodní logiku místo parsování souborů.

Požadavky

  • JDK 8+ nainstalováno
  • Maven nebo Gradle pro správu závislostí
  • Základní znalost Java tříd, metod a zpracování výjimek
  • Přístup k licenci GroupDocs.Signature (trial nebo plná)

Nastavení GroupDocs.Signature pro Javu

Nastavení Maven

Přidejte závislost do svého pom.xml:

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

Nastavení Gradle

Nebo ji zahrňte do build.gradle:

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

Preferujete ruční stažení? Nejnovější verzi můžete získat přímo ze GroupDocs download page.

Získání licence

  • Free Trial – začněte okamžitě, bez závazků
  • Temporary License – plný přístup k funkcím pro hodnocení
  • Full License – připravená pro produkci, neomezené použití

Ověřte instalaci pomocí rychlého inicializačního úryvku:

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: Nahraďte "YOUR_DOCUMENT_PATH" skutečnou cestou k PDF, DOCX nebo XLSX souboru. Pokud konzole vypíše zprávu o úspěchu, jste připraveni.

Porozumění typům čárových kódů v podpisu

Čárové kódy vkládají strojově čitelná data do dokumentu. Na rozdíl od ručně psaných podpisů mohou ukládat ID, časové razítka, URL nebo JSON payloady, což je činí ideálními pro automatizované ověřování.

Typ čárového kóduNejvhodnější použitíTypická délka dat
QR CodeData s vysokou hustotou, URL, víceřádkový textAž 4 296 znaků
Code128Alfanumerické sledovací číslaProměnná
Code39Jednoduché starší kódyAž 43 znaků
DataMatrixMalé štítky, zdravotnické záznamyAž 2 335 znaků
EAN/UPCIdentifikace produktů, maloobchod8‑13 číslic

Čárové kódy často používáte, když potřebujete rychlé strojové čtení, strukturovaná data nebo nefalšovatelný podpis.

Jak vyhledávat stránky s čárovým kódem v Javě?

Signature je hlavní třída představující dokument k zpracování. Načtěte dokument pomocí new Signature("file.pdf"), BarcodeSearchOptions definuje parametry pro vyhledávání čárových kódů a nastavte jej tak, aby cílil na požadované stránky, a zavolejte signature.search(options). Metoda search spustí operaci vyhledávání s poskytnutými možnostmi. Engine vrátí seznam objektů BarcodeSignature, které obsahují čísla stránek, dekódovaný text a geometrické souřadnice – vše v jednom volání. Tento jednoprostorový vzor eliminuje potřebu samostatného extrahování obrázků nebo vlastního dekódování.

Nyní, když rozumíte celkovému toku, pojďme se ponořit do tří hlavních funkcí, které implementujete.

Funkce 1: Přihlášení k událostem vyhledávání dokumentu

Proč je to důležité

Při zpracování velkých dávek poskytuje zpětná vazba v reálném čase (např. ukazatele průběhu) lepší UX a pomáhá včas odhalit zdržení.

Definiční kotva

Signature představuje dokument a poskytuje možnosti přihlášení k událostem.

Implementace

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");
    }
});

Tyto tři obslužné rutiny vám poskytují čas zahájení, živý průběh a konečnou statistiku – ideální pro logování nebo aktualizace UI.

Funkce 2: Konfigurace možností vyhledávání čárových kódů pro konkrétní stránky

Proč je důležitá jemná kontrola

Prohledávání každé stránky 200‑stránkové smlouvy plýtvá CPU cykly. Cílení jen na první a poslední stránku může zkrátit dobu běhu až o 80 %.

Definiční kotva

PagesSetup určuje, které stránky jsou zahrnuty do operace vyhledávání.

Implementace

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");
  • Typy shody vám umožňují jemně ladit vyhledávání textu (Contains, Exact, StartsWith, EndsWith).
  • Upravit setAllPages a PagesSetup tak, aby vyhledával pouze konkrétní stránky s čárovým kódem.

Funkce 3: Spuštění vyhledávání a zpracování výsledků

Proč je tento krok důležitý

Nalezení čárových kódů je jen polovina příběhu – musíte s daty něco udělat (např. validovat, uložit nebo spustit workflow).

Definiční kotva

BarcodeSignature představuje detekovaný čárový kód a obsahuje jeho vlastnosti, jako je číslo stránky a dekódovaný text.

Implementace

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);
}

Nyní máte seznam objektů BarcodeSignature, z nichž každý poskytuje:

  • getPageNumber() – kde se čárový kód nachází
  • getEncodeType() – typ kódování (QR, Code128 atd.)
  • getText() – dekódované údaje
  • Pozice (getLeft(), getTop()) a velikost (getWidth(), getHeight())

Příklad: Zpracovat jen QR kódy na poslední stránce

for (BarcodeSignature barcodeSignature : signatures) {
    if (barcodeSignature.getPageNumber() == lastPageNumber 
        && barcodeSignature.getEncodeType().equals("QRCode")) {
        // Process only QR codes from the final page
        processApprovalCode(barcodeSignature.getText());
    }
}

Praktické aplikace

ScénářJak vyhledávání stránek s čárovým kódem pomáhá
Ověřování právních smluvAutomatické ověření QR‑kódem zakódovaných hashů certifikátů na stránce s podpisem
Sledování dodavatelského řetězceNajít Code128 ID zásilek na první/poslední stránce manifestů
Zdravotnické souhlasné formulářeExtrahovat DataMatrix ID pacientů z poslední stránky souhlasu
Automatizace fakturNajít čárové kódy s předponou „APPR‑“ kdekoliv na faktuře a následně směrovat

Časté problémy a řešení

Problém 1 – Žádné výsledky i přes viditelné čárové kódy

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

Pokud je čárový kód vložen jako rastrový obrázek, zvažte použití GroupDocs.Image pro detekci založenou na obrázcích.

Problém 2 – Pomalý výkon u velkých souborů

PagesSetup pagesSetup = new PagesSetup();
pagesSetup.setLastPage(true);  // Most signatures are on the last page
pagesSetup.setFirstPage(true);
options.setPagesSetup(pagesSetup);

Cílené stránky dramaticky snižují dobu zpracování; 150‑stránkový PDF se zhruba 4 sekund zkrátí na <1 sekundu, když omezíte vyhledávání na dvě stránky.

Problém 3 – TextMatchType nenachází očekávané čárové kódy

String searchText = "12345".trim().toLowerCase();
options.setText(searchText);
options.setMatchType(TextMatchType.StartsWith); // Try a more permissive mode

Problém 4 – Úniky paměti v dlouho běžících smyčkách

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

Blok try‑with‑resources automaticky uvolní instanci Signature.

Nejlepší postupy pro produkci

Robustní zpracování chyb

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);
}

Ukládejte výsledky do cache, pokud jsou dokumenty neměnné

Map<String, List<BarcodeSignature>> cache = new ConcurrentHashMap<>();

public List<BarcodeSignature> getCachedSignatures(String docId) {
    return cache.computeIfAbsent(docId, id -> performSearch(id));
}

Používejte události postupu pro zpětnou vazbu UI

signature.SearchProgress.add(new ProcessProgressEventHandler() {
    public void invoke(Signature sender, ProcessProgressEventArgs args) {
        int percent = (args.getProcessedSignatures() * 100) / args.getTotalSignatures();
        updateProgressBar(percent);
    }
});

Ověřujte payloady čárových kódů

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);
    }
}

Optimalizujte výběr stránek podle typu dokumentu

PagesSetup contractsSetup = new PagesSetup();
contractsSetup.setLastPage(true); // Contracts usually signed on last page
options.setPagesSetup(contractsSetup);

Filtrovat podle typu čárového kódu po vyhledávání (pokud potřebujete jen QR kódy)

for (BarcodeSignature sig : signatures) {
    if ("QRCode".equals(sig.getEncodeType())) {
        // Process QR code
    }
}

Extrahujte rozměry obrázku čárového kódu (pokud je potřeba pro vykreslení)

for (BarcodeSignature sig : signatures) {
    int width = sig.getWidth();
    int height = sig.getHeight();
    // Use dimensions for overlay or thumbnail generation
}

Často kladené otázky

Q: Mohu vyhledávat více formátů čárových kódů najednou?
A: Ano. BarcodeSearchOptions ve výchozím nastavení prohledává všechny podporované formáty. Výsledky můžete filtrovat pomocí getEncodeType(), pokud potřebujete jen konkrétní typy.

Q: Jak zacházet s dokumenty, které obsahují jak čárové kódy, tak obrázkové podpisy?
A: Proveďte samostatná vyhledávání – použijte BarcodeSignature.class pro čárové kódy a ImageSignature.class pro obrázkové podpisy, poté výsledky podle potřeby sloučte.

Q: Jaký je dopad výkonu při vyhledávání všech stránek oproti konkrétním stránkám?
A: Prohledání každé stránky 50‑stránkového PDF může trvat 3–5 sekund. Omezení na první + poslední stránku obvykle skončí pod 1 sekundou.

Q: Funguje to se skenovanými PDF (rastrové obrázky)?
A: Pouze pokud byl čárový kód přidán jako digitální objekt podpisu. Pro čistě rastrové čárové kódy budete potřebovat rozpoznávač založený na obraze (např. GroupDocs.Barcode).

Q: Jak mohu ověřit, že podpis čárového kódu nebyl pozměněn?
A: Vložte hash nebo digitální podpis do payloadu čárového kódu, poté přepočítejte hash na původních datech a porovnejte. To vyžaduje původní podepisovací klíč nebo certifikát.


Last Updated: 2026-06-21
Tested With: GroupDocs.Signature 23.12 for Java
Author: GroupDocs

Související tutoriály