Jak přidat digitální podpisy do souborů v Javě pomocí čárových kódů a QR kódů

Úvod

Už jste se někdy zamýšleli, jak dokázat, že vaše soubory nebyly pozměněny pomocí digital signature java? Nebo potřebujete způsob, jak programově ověřovat dokumenty bez složitých kryptografických nastavení? Tradiční digitální podpisy mohou být pro některé případy zbytečně složité. Někdy stačí lehká, skenovatelná metoda pro ověření integrity souboru — zejména při práci s archivy, zálohami nebo automatizovanými workflowy. Právě zde přicházejí do hry podpisy pomocí čárových kódů a QR kódů.

V tomto tutoriálu se naučíte, jak implementovat digitální podpisy v Javě pomocí GroupDocs.Signature. Zaměříme se na podepisování TAR archivů (ideální pro zálohovací systémy a distribuci softwaru), ale tyto techniky fungují s různými formáty dokumentů. Ať už budujete systém správy dokumentů nebo jen chcete přidat další vrstvu zabezpečení svým souborům, jste na správném místě.

Co si odnesete:

  • Fungující implementaci podpisů pomocí čárových kódů a QR kódů v Javě
  • Pochopení, kdy použít který typ podpisu (a proč na tom záleží)
  • Praktická řešení běžných problémů s podepisováním
  • Reálné integrační vzory, které můžete použít ještě dnes
  • Tipy na optimalizaci výkonu pro produkční systémy

Ponořme se — není potřeba mít titul z kryptografie.

Rychlé odpovědi

  • Jaká knihovna zpracovává podpisy čárových kódů v Javě? GroupDocs.Signature for Java.
  • Který typ podpisu ukládá více dat? QR kódy (až 4 296 alfanumerických znaků).
  • Mohu podepisovat velké TAR soubory (> 100 MB)? Ano — použijte vlákna na pozadí a zvětšete heap JVM.
  • Potřebuji internetové připojení? Ne, knihovna funguje zcela offline.
  • Je licence vyžadována pro produkci? Ano, platná licence GroupDocs.Signature je povinná.

Co je Digital Signature Java?

Digital signature java je proces vložení ověřitelného vizuálního tokenu — jako je čárový kód nebo QR kód — přímo do souboru generovaného v Javě, aby se prokázala jeho pravost a integrita. Připojením tohoto vizuálního tokenu mohou vývojáři poskytnout rychlý, lidsky čitelný způsob, jak potvrdit, že soubor nebyl od podpisu změněn, a zároveň umožnit programové ověření pomocí API GroupDocs.Signature.

Proč používat podpisy pomocí čárových kódů nebo QR kódů?

GroupDocs.Signature podporuje 50+ vstupních a výstupních formátů (včetně PDF, DOCX, XLSX, HTML, PNG a TAR) a dokáže zpracovat dokumenty s mnoha stovkami stránek, aniž by načítala celý soubor do paměti. Čárové kódy a QR kódy poskytují skenovatelný, samostatný důkaz pravosti, čímž odstraňují potřebu externích certifikačních autorit v mnoha interních workflowech.

Předpoklady

  • GroupDocs.Signature for Java Library — verze 23.12 nebo novější
  • Java Development Kit (JDK) — verze 8 nebo vyšší
  • IDE — IntelliJ IDEA, Eclipse nebo jakýkoli Java‑kompatibilní editor
  • Základní znalost Javy — měli byste být obeznámeni s třídami a importy

Nastavení prostředí

Získání GroupDocs.Signature do vašeho projektu je jednoduché. Vyberte si nástroj pro sestavení:

Maven (přidejte do souboru pom.xml):

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

Gradle (přidejte do souboru build.gradle):

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

Manuální stažení: Nepoužíváte Maven ani Gradle? Stáhněte JAR přímo z GroupDocs.Signature releases a přidejte jej do classpath.

Získání licence

GroupDocs nabízí flexibilní licencování:

  • Free Trial: Ideální pro testování — žádná kreditní karta není potřeba. Začněte zde
  • Temporary License: Potřebujete více času na vyhodnocení? Požádejte o dočasnou licenci pro plný přístup během vývoje
  • Production License: Když jste připraveni nasadit, zakupte licenci podle svých potřeb

Další užitečné odkazy

Tip: Začněte s bezplatnou zkušební verzí, abyste prototypovali řešení, a pokud potřebujete více času, pořiďte si dočasnou licenci před závazným nákupem.

Nastavení GroupDocs.Signature pro Java

Třída Signature je vstupním bodem pro všechny operace podepisování v GroupDocs.Signature. Reprezentuje jeden soubor načtený do paměti a poskytuje metody pro přidání, vyhledání nebo odstranění vizuálních podpisů.

Vytvořte instanci Signature, která ukazuje na váš TAR soubor. Tím se soubor načte do paměti pro zpracování:

import com.groupdocs.signature.Signature;

public class InitializeSignature {
    public static void main(String[] args) {
        Signature signature = new Signature("your-document-path");
        // Additional setup and usage here...
    }
}

Důležité: Vždy uzavřete objekt Signature, když skončíte (nebo použijte try‑with‑resources), aby nedocházelo k únikům paměti u velkých souborů.

Volba mezi čárovým kódem a QR kódem

Nejste si jisti, který typ podpisu použít? Zde je rychlý rozhodovací průvodce:

FaktorČárový kód (Code128)QR kód
Kapacita dat~80 znakůAž 4 296 alfanumerických znaků
ČitelnostVyžaduje skener čárových kódůFunguje s fotoaparáty chytrých telefonů
Úspornost prostoruKompaktnější horizontálněVyžaduje čtvercovou oblast
Nejvhodnější proJednoduchá ID, časové razítka, krátké kódyURL, JSON data, podrobné metadata
Oprava chybMinimálníVestavěná (umožňuje obnovu po poškození)

Obecné pravidlo:

  • Používejte čárové kódy pro rychlé, skenovatelné ID nebo časová razítka.
  • Používejte QR kódy, když potřebujete vložit bohatší data nebo chcete kompatibilitu se smartphony.
  • Kombinujte oba pro maximální redundanci a auditovatelnost.

Průvodce implementací

Podepsání TAR archivu pomocí čárového kódu

Proč podepisovat čárovými kódy?

Čárové kódy jsou ideální pro TAR archivy, protože jsou kompaktní a skenovatelné. Můžete do nich vložit časová razítka, čísla verzí, ID uživatelů nebo kontrolní součty pro rychlé ověření.

Kroky

1. Inicializace Signature
Nejprve vytvořte instanci Signature pro TAR soubor:

import com.groupdocs.signature.Signature;

final Signature signature = new Signature("path/to/your/archive.tar");

Tip: Pro velké TAR soubory (nad 100 MB) spusťte operaci podepisování ve vlákně na pozadí, aby UI zůstalo responzivní.

2. Konfigurace možností čárového kódu
Třída BarcodeSignature definuje obsah, typ a umístění čárového kódu. Objekt BarcodeOptions obsahuje tato nastavení:

import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;

BarcodeSignOptions bcOptions = new BarcodeSignOptions("12345678", BarcodeTypes.Code128);
bcOptions.setLeft(100);  // X position in pixels
bcOptions.setTop(100);   // Y position in pixels

BarcodeOptions vám umožňuje specifikovat vizuální vzhled a pozici čárového kódu.
BarcodeTypes je výčet, který uvádí podporované symbologie, jako Code128, Code39 atd.

Co se zde děje?

  • "12345678" je data zakódovaná v čárovém kódu — nahraďte je svým skutečným ID, časovým razítkem nebo ověřovacím kódem.
  • BarcodeTypes.Code128 poskytuje dobrý poměr kapacity a spolehlivosti skenování.
  • Hodnoty pozice (100, 100) umístí čárový kód 100 px od levého horního rohu.

Možnosti přizpůsobení, které můžete chtít:

bcOptions.setWidth(200);        // Barcode width in pixels
bcOptions.setHeight(50);        // Barcode height in pixels
bcOptions.setForeColor(Color.BLACK);  // Barcode color
bcOptions.setBackgroundColor(Color.WHITE);  // Background color

3. Podepsání a uložení dokumentu
Proveďte operaci podepisování a uložte podepsaný archiv:

import com.groupdocs.signature.domain.SignResult;

String outputFilePath = "output/path/SignWithBarcode/archive_signed.tar";
SignResult signResult = signature.sign(outputFilePath, bcOptions);

Objekt SignResult vám sdělí, zda operace uspěla a kde byl podpis umístěn.
Častý problém: Ujistěte se, že výstupní adresář existuje před voláním sign(). Knihovna nevytvoří nadřazené adresáře automaticky.

Podepsání TAR archivu pomocí QR kódu

Kdy použít QR kódy

QR kódy vynikají, když potřebujete uložit strukturovaná data (JSON, XML), vložit ověřovací URL nebo umožnit skenování chytrým telefonem.

Kroky

1. Inicializace Signature
Stejně jako dříve — vytvořte instanci Signature:

final Signature signature = new Signature("path/to/your/archive.tar");

2. Konfigurace možností QR kódu
Nastavte QR kód s daty, která chcete vložit:

import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;

QrCodeSignOptions qrOptions = new QrCodeSignOptions("12345678", QrCodeTypes.QR);
qrOptions.setLeft(400);  // X position
qrOptions.setTop(400);   // Y position

QrCodeTypes je výčet, který určuje typ generovaného QR kódu (standardní QR, DataMatrix, Aztec atd.).

Reálný příklad — vložit JSON payload s ověřovacími údaji:

String verificationData = "{\"version\":\"1.0\",\"timestamp\":\"2025-01-02T10:30:00Z\",\"user\":\"john.doe\"}";
QrCodeSignOptions qrOptions = new QrCodeSignOptions(verificationData, QrCodeTypes.QR);

Možnosti typu QR kódu:

  • QrCodeTypes.QR — standardní QR kód (nejčastější)
  • QrCodeTypes.DataMatrix — kompaktnější pro malá data
  • QrCodeTypes.Aztec — vhodné pro zakřivené povrchy

3. Podepsání a uložení dokumentu
Dokončete proces podepisování stejně jako u čárových kódů:

String outputFilePath = "output/path/SignWithQRCode/archive_signed.tar";
SignResult signResult = signature.sign(outputFilePath, qrOptions);

Poznámka k výkonu: Generování QR kódu je mírně pomalejší než čárových kódů kvůli výpočtům opravy chyb, ale rozdíl je pro většinu případů zanedbatelný (obvykle jen několik milisekund).

Podepsání TAR archivu s více podpisy

Proč použít více podpisů?

  • Redundance — pokud je jeden podpis poškozen, druhý stále může ověřit.
  • Různé publikum — čárové kódy pro skenery, QR kódy pro smartphony.
  • Vrstvená data — rychlé ID v čárovém kódu, podrobná metadata v QR kódu.
  • Soulad s předpisy — některé regulace vyžadují více ověřovacích metod.

Kroky

1. Inicializace Signature
Stejné jako dříve:

final Signature signature = new Signature("path/to/your/archive.tar");

2. Konfigurace více možností
Vytvořte oba typy podpisů a spojte je do seznamu:

import java.util.ArrayList;
import java.util.List;

// Set up barcode (reusing from earlier example)
BarcodeSignOptions bcOptions = new BarcodeSignOptions("12345678", BarcodeTypes.Code128);
bcOptions.setLeft(100);
bcOptions.setTop(100);

// Set up QR code (different position to avoid overlap)
QrCodeSignOptions qrOptions = new QrCodeSignOptions("12345678", QrCodeTypes.QR);
qrOptions.setLeft(400);
qrOptions.setTop(400);

// Combine them
List<com.groupdocs.signature.options.sign.SignOptions> listOptions = new ArrayList<>();
listOptions.add(bcOptions);
listOptions.add(qrOptions);

Tip: Umístěte podpisy strategicky — rohy nebo oblasti, které nezasahují do obsahu, fungují nejlépe pro TAR archivy.

3. Podepsání a uložení dokumentu
Předávejte seznam možností metodě sign():

String outputFilePath = "output/path/SignWithMultipleSignatures/archive_signed.tar";
SignResult signResult = signature.sign(outputFilePath, listOptions);

GroupDocs zpracuje každý podpis sekvenčně a vloží jej do metadat dokumentu. Pořadí v seznamu nemá vliv na ověření.

Reálné případy použití

1. Distribuční pipeline softwaru

Scénář: Distribuce softwarových balíčků jako TAR archivů a prokázání, že nebyly pozměněny.
Řešení: Podepsat každé vydání QR kódem obsahujícím JSON payload:

String releaseData = String.format(
    "{\"version\":\"%s\",\"buildDate\":\"%s\",\"sha256\":\"%s\"}",
    version, buildDate, checksum
);

Proč to funguje: Uživatelé mohou naskenovat QR kód a ověřit integritu balíčku před instalací — není potřeba spravovat GPG klíče.

2. Automatizované zálohovací systémy

Scénář: Denní zálohy TAR archivů potřebují auditní stopu.
Řešení: Přidat čárový kód s časovým razítkem zálohy a ID serveru:

String backupId = String.format("SRV01-%s", LocalDateTime.now().format(formatter));
BarcodeSignOptions bcOptions = new BarcodeSignOptions(backupId, BarcodeTypes.Code128);

Proč to funguje: Rychlá vizuální kontrola pravosti zálohy bez nutnosti otevírat archiv.

3. Systémy správy dokumentů

Scénář: Právní dokumenty uložené v archivech vyžadují neporušené ověření.
Řešení: Použít jak čárový kód (rychlé skenování), tak QR kód (detailní metadata) na stejném archivu.

4. Sledování v dodavatelském řetězci

Scénář: Sledování souborových balíčků napříč organizacemi.
Řešení: Vložit QR kódy s URL pro sledovací API:

String trackingUrl = "https://verify.yourcompany.com/track/" + uniqueId;
QrCodeSignOptions qrOptions = new QrCodeSignOptions(trackingUrl, QrCodeTypes.QR);

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

Problém 1: „Signature Not Found“ po podepsání

Příznak: sign() úspěšně proběhne, ale podpis není viditelný.
Příčiny: Špatné umístění, přepsání původního souboru, omezení prohlížeče TAR.
Řešení:

// Always verify the signing succeeded
SignResult result = signature.sign(outputFilePath, bcOptions);
if (result.getSucceeded().size() > 0) {
    System.out.println("Signature added successfully at: " + outputFilePath);
} else {
    System.err.println("Signing failed: " + result.getFailed());
}

// Use absolute paths to avoid confusion
String absolutePath = new File(outputFilePath).getAbsolutePath();

Problém 2: OutOfMemoryError u velkých TAR souborů

Příznak: JVM spadne u archivů > 500 MB.
Řešení: Zvyšte velikost haldy (-Xmx) a okamžitě uvolňujte objekty Signature:

java -Xmx2G -jar your-application.jar

Nebo implementujte zpracování po částech:

// For very large files, consider signing metadata separately
// rather than embedding in the TAR itself

Problém 3: Data podpisu jsou oříznuta

Příznak: Dlouhé řetězce jsou zkráceny.
Příčina: Překročena kapacita Code128 (≈ 80 znaků).
Řešení: Přepněte na QR kódy pro delší payloady:

// Bad: Too much data for Code128
BarcodeSignOptions bcOptions = new BarcodeSignOptions(veryLongString, BarcodeTypes.Code128);

// Good: Use QR code instead
QrCodeSignOptions qrOptions = new QrCodeSignOptions(veryLongString, QrCodeTypes.QR);

Problém 4: Chyby validace licence

Příznak: LicenseException nebo varování „Trial version“ v produkci.
Řešení: Načtěte licenci před vytvořením jakýchkoli instancí Signature:

import com.groupdocs.signature.License;

License license = new License();
license.setLicense("path/to/GroupDocs.Signature.lic");

// Now create signatures
Signature signature = new Signature("document.tar");

Tip: Načtěte licenci jednou při startu aplikace, ne před každým podepisováním.

Problém 5: Hodnoty pozice nefungují podle očekávání

Příznak: Podpisy se zobrazují na neočekávaných místech.
Příčina: Záměna mezi pixely a body.
Řešení: GroupDocs používá pixely jako výchozí. Pro přesné umístění:

bcOptions.setLeft(100);  // 100 pixels from left edge
bcOptions.setTop(100);   // 100 pixels from top edge

// If you need percentage-based positioning:
bcOptions.setHorizontalAlignment(HorizontalAlignment.Center);
bcOptions.setVerticalAlignment(VerticalAlignment.Center);

Integrační vzory

Vzor 1: REST API služba

Expose podepisování jako mikroservisu:

@RestController
@RequestMapping("/api/signature")
public class SignatureController {
    
    @PostMapping("/sign")
    public ResponseEntity<SignatureResponse> signFile(
            @RequestParam("file") MultipartFile file,
            @RequestParam("signatureType") String type) {
        
        try {
            // Save uploaded file temporarily
            File tempFile = File.createTempFile("upload-", ".tar");
            file.transferTo(tempFile);
            
            // Sign based on type
            Signature signature = new Signature(tempFile.getAbsolutePath());
            
            SignOptions options = type.equals("barcode") 
                ? createBarcodeOptions() 
                : createQROptions();
            
            String outputPath = generateOutputPath();
            SignResult result = signature.sign(outputPath, options);
            
            // Return signed file
            return ResponseEntity.ok(new SignatureResponse(outputPath, result));
            
        } catch (Exception e) {
            return ResponseEntity.status(500).body(null);
        }
    }
}

Vzor 2: Dávkové zpracování

Podepsat více archivů v pipeline:

public class BatchSigner {
    
    public void signArchiveBatch(List<File> archives) {
        ExecutorService executor = Executors.newFixedThreadPool(4);
        
        archives.forEach(archive -> {
            executor.submit(() -> {
                try {
                    signSingleArchive(archive);
                } catch (Exception e) {
                    logger.error("Failed to sign: " + archive.getName(), e);
                }
            });
        });
        
        executor.shutdown();
        executor.awaitTermination(1, TimeUnit.HOURS);
    }
    
    private void signSingleArchive(File archive) throws Exception {
        Signature signature = new Signature(archive.getAbsolutePath());
        // ... signing logic
    }
}

Vzor 3: Architektura řízená událostmi

Spustit podepisování při vytvoření archivu:

@Component
public class ArchiveCreatedListener {
    
    @EventListener
    public void onArchiveCreated(ArchiveCreatedEvent event) {
        CompletableFuture.runAsync(() -> {
            signArchive(event.getFilePath());
        });
    }
    
    private void signArchive(String filePath) {
        // ... signing logic
    }
}

Úvahy o výkonu

Správa paměti

Problém: Každá instance Signature načte celý soubor do paměti.
Nejlepší postupy:

// Bad: Creating multiple instances for same file
Signature sig1 = new Signature("file.tar");
Signature sig2 = new Signature("file.tar");  // Loads again!

// Good: Reuse the instance
try (Signature signature = new Signature("file.tar")) {
    signature.sign(output1, options1);
    signature.sign(output2, options2);  // Same instance, different outputs
}

Optimalizace velikosti souboru

  • Malé soubory (< 10 MB) — podepisujte synchronně.
  • Střední soubory (10‑100 MB) — použijte vlákna na pozadí.
  • Velké soubory (> 100 MB) — zvažte podepisování pouze metadat nebo využití streamovacích API.

Složitost podpisu (přibližné časy na standardním serveru)

Typ podpisuČas na dokument
Jeden čárový kód50‑100 ms
Jeden QR kód100‑200 ms
Více podpisů150‑300 ms

Tip na optimalizaci: Pro tisíce souborů je vhodné je seskupit a použít thread pool (viz výše uvedený dávkový vzor).

Aktualizace knihovny

GroupDocs pravidelně vydává vylepšení výkonu. Před hlavními nasazeními vždy zkontrolujte changelog.

Strategie aktualizace:

  1. Testujte novou verzi ve stagingu.
  2. Projděte breaking changes.
  3. Benchmarkujte s reálnými soubory.
  4. Nasazujte postupně.

Nejlepší praktiky pro produkci

1. Ověřte stav licence

License license = new License();
if (!license.isLicensed()) {
    logger.warn("Running in trial mode - features may be limited");
}

2. Implementujte robustní zpracování chyb

try {
    signature.sign(outputPath, options);
} catch (Exception e) {
    logger.error("Signature failed", e);
    // Don't just swallow exceptions - log or re-throw
    throw new SignatureException("Failed to sign document", e);
}

3. Používejte popisná data v podpisu

// Bad: Meaningless ID
new BarcodeSignOptions("12345678", BarcodeTypes.Code128);

// Good: Self-documenting data
String signatureData = String.format("DOC-%s-%s", 
    docType, 
    LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)
);
new BarcodeSignOptions(signatureData, BarcodeTypes.Code128);

4. Verzujte formát podpisu
Do vloženého JSON zahrňte číslo verze, aby bylo ověření připravené na budoucí změny:

String qrData = String.format(
    "{\"v\":\"1.0\",\"type\":\"archive\",\"timestamp\":\"%s\"}", 
    timestamp
);

5. Testujte s reálnými soubory — vždy ověřujte na archivních souborech produkční velikosti, abyste odhalili problémy s pamětí a výkonem včas.

Závěr

Nyní máte pevný základ pro implementaci digital signature java pomocí čárových kódů a QR kódů. Co jste se naučili:

  • Jak podepisovat TAR archivy (a další dokumenty) pomocí čárových a QR kódů
  • Kdy zvolit který typ podpisu podle konkrétních potřeb
  • Jak řešit běžné problémy před nasazením do produkce
  • Reálné integrační vzory pro REST API, dávkové zpracování a architekturu řízenou událostmi
  • Techniky optimalizace výkonu pro soubory jakékoli velikosti

Další kroky:

  1. Prozkoumejte ověřování podpisů pomocí metody search().
  2. Vyzkoušejte další formáty dokumentů — GroupDocs.Signature podporuje PDF, DOCX, XLSX, PNG a další.
  3. Přizpůsobte vzhled podpisu (barvy, velikosti, okraje).
  4. Vytvořte ověřovací API pro programové ověřování podpisů.

Možnosti GroupDocs.Signature sahají daleko za tento průvodce. Prozkoumejte úplnou dokumentaci a objevte pokročilé funkce jako textové podpisy, obrázkové podpisy a extrakci metadat.

Máte otázky nebo chcete sdílet své řešení? Připojte se k fóru komunity GroupDocs a získejte pomoc od ostatních vývojářů.

Často kladené otázky

Q: Mohu podepisovat i jiné soubory než TAR archivy?
A: Rozhodně! GroupDocs.Signature podporuje více než 50 formátů, včetně PDF, DOCX, XLSX, PNG a dalších. Stačí změnit příponu v konstruktoru Signature a můžete pracovat s libovolným podporovaným typem.

Q: Jak ověřím podpisy po podepsání?
A: Použijte metodu search() k vyhledání a validaci podpisů:

Signature signature = new Signature("signed-document.tar");
BarcodeSearchOptions searchOptions = new BarcodeSearchOptions();
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, searchOptions);

Q: Jsou podpisy bezpečné proti manipulaci?
A: Čárové a QR kódy poskytují vizuální ověření, ale nejsou kryptograficky silné jako digitální certifikáty. Pro maximální bezpečnost je kombinujte s tradiční PKI nebo ukládejte hash podpisu v externí databázi.

Q: Jaká je maximální velikost dat, kterou mohu uložit do podpisu?

  • Čárový kód Code128: ~80 alfanumerických znaků
  • QR kód (Verze 40): až 4 296 alfanumerických znaků nebo 7 089 číselných znaků

Q: Můžu přizpůsobit vzhled podpisu?
A: Ano! Ovládejte barvy, velikosti, okraje a další:

bcOptions.setForeColor(Color.BLUE);
bcOptions.setBackgroundColor(Color.YELLOW);
bcOptions.setBorder(new Border());
bcOptions.getBorder().setColor(Color.RED);
bcOptions.getBorder().setWeight(2);

Q: Co se stane, když podepíšu soubor dvakrát?
A: Každé volání sign() přidá nový podpis. Pro nahrazení existujícího podpisu jej nejprve odstraňte metodou delete().

Q: Jak zacházet s velkými soubory, aby nedošlo k vyčerpání paměti?
A: Zvyšte heap JVM (-Xmx), rychle uvolňujte objekty Signature a zvažte podepisování pouze metadat pro archivy v řádu gigabajtů.

Q: Potřebuji internetové připojení pro podepisování dokumentů?
A: Ne. GroupDocs.Signature funguje zcela offline po instalaci knihovny.


Poslední aktualizace: 2026-05-21
Testováno s: GroupDocs.Signature 23.12 pro Java
Autor: GroupDocs

Související tutoriály