Hoe digitale handtekeningen toe te voegen aan bestanden in Java met barcodes en QR-codes
Introductie
Heb je je ooit afgevraagd hoe je kunt bewijzen dat je bestanden niet zijn gemanipuleerd met digital signature java? Of had je een manier nodig om documenten programmatisch te authenticeren zonder complexe cryptografische opstellingen? Traditionele digitale handtekeningen kunnen overkill zijn voor bepaalde use‑cases. Soms heb je gewoon een lichtgewicht, scanbare methode nodig om de integriteit van een bestand te verifiëren—vooral bij archieven, back‑ups of geautomatiseerde workflows. Daar komen barcode‑ en QR‑code‑handtekeningen om de hoek kijken.
In deze tutorial leer je hoe je digitale handtekeningen implementeert in Java met GroupDocs.Signature. We richten ons op het ondertekenen van TAR‑archieven (perfect voor back‑up‑systemen en software‑distributie), maar deze technieken werken met verschillende documentformaten. Of je nu een document‑beheersysteem bouwt of gewoon een extra beveiligingslaag aan je bestanden wilt toevoegen, je bent op de juiste plek.
Wat je zult leren:
- Een werkende implementatie van barcode‑ en QR‑code‑handtekeningen in Java
- Inzicht wanneer elk handtekeningtype te gebruiken (en waarom dat belangrijk is)
- Praktische oplossingen voor veelvoorkomende ondertekeningsuitdagingen
- Real‑world integratiepatronen die je vandaag kunt gebruiken
- Tips voor prestatie‑optimalisatie voor productiesystemen
Laten we beginnen—geen cryptografie‑diploma vereist.
Snelle antwoorden
- Welke bibliotheek verwerkt barcode‑handtekeningen in Java? GroupDocs.Signature for Java.
- Welk handtekeningtype slaat meer data op? QR‑codes (tot 4.296 alfanumerieke tekens).
- Kan ik grote TAR‑bestanden (>100 MB) ondertekenen? Ja—gebruik achtergrondthreads en vergroot de JVM‑heap.
- Heb ik een internetverbinding nodig? Nee, de bibliotheek werkt volledig offline.
- Is een licentie vereist voor productie? Ja, een geldige GroupDocs.Signature‑licentie is verplicht.
Wat is Digital Signature Java?
Digital signature java is het proces waarbij een verifieerbaar visueel token—zoals een barcode of QR‑code—direct in een door Java gegenereerd bestand wordt ingebed om de authenticiteit en integriteit te bewijzen. Door dit visuele token toe te voegen, kunnen ontwikkelaars een snelle, mens‑leesbare manier bieden om te bevestigen dat het bestand niet is gewijzigd sinds ondertekening, terwijl programmatische verificatie via de GroupDocs.Signature‑API mogelijk blijft.
Waarom barcode‑ of QR‑code‑handtekeningen gebruiken?
GroupDocs.Signature ondersteunt 50+ invoer‑ en uitvoerformaten (inclusief PDF, DOCX, XLSX, HTML, PNG en TAR) en kan documenten van honderden pagina’s verwerken zonder het volledige bestand in het geheugen te laden. Barcodes en QR‑codes geven je een scanbare, zelf‑bevatte bewijs van authenticiteit, waardoor externe certificaatautoriteiten in veel interne workflows overbodig worden.
Vereisten
- GroupDocs.Signature for Java Library – versie 23.12 of later
- Java Development Kit (JDK) – versie 8 of hoger
- IDE – IntelliJ IDEA, Eclipse, of een andere Java‑compatibele editor
- Basiskennis van Java – je moet vertrouwd zijn met klassen en imports
Omgevingsconfiguratie
GroupDocs.Signature in je project krijgen is eenvoudig. Kies je build‑tool:
Maven (voeg dit toe aan je pom.xml):
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle (voeg toe aan je build.gradle):
implementation 'com.groupdocs:groupdocs-signature:23.12'
Manual Download: Niet met Maven of Gradle? Download de JAR direct van GroupDocs.Signature releases en voeg deze toe aan je classpath.
Licentie‑acquisitie
GroupDocs biedt flexibele licenties:
- Free Trial: Perfect voor testen—geen creditcard vereist. Start hier
- Temporary License: Meer tijd nodig om te evalueren? Vraag een tijdelijke licentie aan voor volledige functionaliteit tijdens ontwikkeling
- Production License: Wanneer je klaar bent om te implementeren, koop een licentie op basis van je behoeften
Aanvullende nuttige links
- GroupDocs.Signature voor Java Documentatie
- API‑referentiegids
- Community‑ondersteuningsforum
- Laatste bibliotheekreleases
- Gratis proefversie download
- Vraag tijdelijke licentie aan
- Koop volledige licentie
Pro tip: Begin met de gratis proefversie om je oplossing te prototypen, en schaf daarna een tijdelijke licentie aan als je meer tijd nodig hebt voordat je een definitieve beslissing maakt.
GroupDocs.Signature voor Java instellen
Signature‑klasse is het toegangspunt voor alle ondertekeningsbewerkingen in GroupDocs.Signature. Het vertegenwoordigt één bestand dat in het geheugen is geladen en biedt methoden om visuele handtekeningen toe te voegen, te zoeken of te verwijderen.
Maak een Signature‑instantie die naar je TAR‑bestand wijst. Dit laadt het bestand in het geheugen voor verwerking:
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...
}
}
Belangrijk: Sluit altijd het Signature‑object wanneer je klaar bent (of gebruik try‑with‑resources) om geheugenlekken bij grote bestanden te voorkomen.
Keuze tussen barcode‑ en QR‑code‑handtekeningen
Niet zeker welk type je moet gebruiken? Hier is een snelle beslissingsgids:
| Factor | Barcode (Code128) | QR‑code |
|---|---|---|
| Gegevenscapaciteit | ~80 tekens | Tot 4.296 alfanumerieke tekens |
| Leesbaarheid | Vereist barcode‑scanner | Werkt met smartphone‑camera’s |
| Ruimte‑efficiëntie | Compacter horizontaal | Vereist vierkant gebied |
| Beste voor | Eenvoudige ID’s, tijdstempels, korte codes | URL’s, JSON‑data, gedetailleerde metadata |
| Foutcorrectie | Minimaal | Ingebouwd (kan schade herstellen) |
Regel van duim:
- Gebruik barcodes voor snelle, scanbare ID’s of tijdstempels.
- Gebruik QR‑codes wanneer je rijkere data wilt embedden of smartphone‑compatibiliteit nodig hebt.
- Combineer beide voor maximale redundantie en auditbaarheid.
Implementatie‑gids
TAR‑archief ondertekenen met barcode
Waarom ondertekenen met barcodes?
Barcodes zijn perfect voor TAR‑archieven omdat ze compact en scanbaar zijn. Je kunt tijdstempels, versienummers, gebruikers‑ID’s of checksum‑waarden embedden voor snelle verificatie.
Stappen
1. Initialiseer Signature
Maak eerst een Signature‑instantie voor het TAR‑bestand:
import com.groupdocs.signature.Signature;
final Signature signature = new Signature("path/to/your/archive.tar");
Pro tip: Voor grote TAR‑bestanden (meer dan 100 MB) voer de ondertekeningsbewerking uit in een achtergrondthread om de UI responsief te houden.
2. Configureer barcode‑opties
De BarcodeSignature‑klasse definieert de barcode‑inhoud, het type en de plaatsing. Het BarcodeOptions‑object bevat deze instellingen:
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 laat je het visuele uiterlijk en de positie van de barcode bepalen.BarcodeTypes is een enum die ondersteunde barcode‑symbologieën opsomt, zoals Code128, Code39, enz.
Wat gebeurt er hier?
"12345678"is de data die in de barcode wordt gecodeerd—vervang dit door je eigen ID, tijdstempel of verificatiecode.BarcodeTypes.Code128biedt een goede balans tussen gegevenscapaciteit en scan‑betrouwbaarheid.- Positiewaarden (100, 100) plaatsen de barcode 100 px vanaf de linkerbovenhoek.
Aanpassingsopties die je misschien wilt:
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. Onderteken en sla het document op
Voer de ondertekeningsbewerking uit en sla het ondertekende archief op:
import com.groupdocs.signature.domain.SignResult;
String outputFilePath = "output/path/SignWithBarcode/archive_signed.tar";
SignResult signResult = signature.sign(outputFilePath, bcOptions);
Het geretourneerde SignResult‑object geeft aan of de bewerking geslaagd is en waar de handtekening is geplaatst.
Veelvoorkomend probleem: Zorg dat de doelmap bestaat voordat je sign() aanroept. De bibliotheek maakt geen bovenliggende mappen automatisch aan.
TAR‑archief ondertekenen met QR‑code
Wanneer QR‑codes gebruiken
QR‑codes blinken uit wanneer je gestructureerde data (JSON, XML) moet opslaan, verificatie‑URL’s wilt embedden of smartphone‑scanning wilt mogelijk maken.
Stappen
1. Initialiseer Signature
Zelfde als eerder—maak je Signature‑instantie:
final Signature signature = new Signature("path/to/your/archive.tar");
2. Configureer QR‑code‑opties
Stel je QR‑code in met de data die je wilt embedden:
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 is een enum die het type QR‑code specificeert (standaard QR, DataMatrix, Aztec, enz.).
Voorbeeld uit de praktijk – embed een JSON‑payload met verificatie‑data:
String verificationData = "{\"version\":\"1.0\",\"timestamp\":\"2025-01-02T10:30:00Z\",\"user\":\"john.doe\"}";
QrCodeSignOptions qrOptions = new QrCodeSignOptions(verificationData, QrCodeTypes.QR);
QR‑code type‑opties:
QrCodeTypes.QR– standaard QR‑code (meest gebruikelijk)QrCodeTypes.DataMatrix– compacter voor kleine dataQrCodeTypes.Aztec– geschikt voor gebogen oppervlakken
3. Onderteken en sla het document op
Rond het ondertekeningsproces af zoals bij barcodes:
String outputFilePath = "output/path/SignWithQRCode/archive_signed.tar";
SignResult signResult = signature.sign(outputFilePath, qrOptions);
Prestatie‑opmerking: QR‑codegeneratie is iets trager dan barcodes vanwege fout‑correctieberekeningen, maar het verschil is verwaarloosbaar voor de meeste use‑cases (meestal enkele milliseconden).
TAR‑archief ondertekenen met meerdere handtekeningen
Waarom meerdere handtekeningen gebruiken?
- Redundantie – als één handtekening beschadigd is, kan de andere nog steeds verifiëren.
- Verschillende doelgroepen – barcodes voor scanners, QR‑codes voor smartphones.
- Gelaagde data – snelle ID in barcode, gedetailleerde metadata in QR‑code.
- Compliance – sommige regelgeving vereist meerdere verificatiemethoden.
Stappen
1. Initialiseer Signature
Zelfde initialisatie als eerder:
final Signature signature = new Signature("path/to/your/archive.tar");
2. Configureer meerdere opties
Maak beide handtekeningtypes aan en combineer ze in een lijst:
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);
Pro tip: Positioneer handtekeningen strategisch—hoeken of niet‑interfererende gebieden werken het beste voor TAR‑archieven.
3. Onderteken en sla het document op
Geef de lijst met opties door aan de sign()‑methode:
String outputFilePath = "output/path/SignWithMultipleSignatures/archive_signed.tar";
SignResult signResult = signature.sign(outputFilePath, listOptions);
GroupDocs verwerkt elke handtekening opeenvolgend en embedt ze in de documentmetadata. De volgorde in je lijst heeft geen invloed op de verificatie.
Praktijkvoorbeelden
1. Software‑distributiepijplijnen
Scenario: Software‑pakketten distribueren als TAR‑archieven en bewijzen dat ze niet zijn gemanipuleerd.
Oplossing: Onderteken elke release met een QR‑code die een JSON‑payload bevat:
String releaseData = String.format(
"{\"version\":\"%s\",\"buildDate\":\"%s\",\"sha256\":\"%s\"}",
version, buildDate, checksum
);
Waarom het werkt: Gebruikers kunnen de QR‑code scannen om de integriteit van het pakket te verifiëren vóór installatie—geen GPG‑sleutelbeheer nodig.
2. Geautomatiseerde back‑up‑systemen
Scenario: Dagelijkse back‑up‑TAR‑archieven hebben audit‑trails nodig.
Oplossing: Voeg een barcode toe met de back‑up‑tijdstempel en server‑ID:
String backupId = String.format("SRV01-%s", LocalDateTime.now().format(formatter));
BarcodeSignOptions bcOptions = new BarcodeSignOptions(backupId, BarcodeTypes.Code128);
Waarom het werkt: Snelle visuele verificatie van back‑up‑authenticiteit zonder het archief te openen.
3. Document‑beheersystemen
Scenario: Juridische documenten opgeslagen als archieven vereisen manipulatie‑proof verificatie.
Oplossing: Gebruik zowel barcode (snelle scan) als QR‑code (gedetailleerde metadata) op hetzelfde archief.
4. Supply‑chain‑tracking
Scenario: Bestanden volgen door meerdere organisaties.
Oplossing: Embed QR‑codes met tracking‑URL’s die naar een verificatie‑API linken:
String trackingUrl = "https://verify.yourcompany.com/track/" + uniqueId;
QrCodeSignOptions qrOptions = new QrCodeSignOptions(trackingUrl, QrCodeTypes.QR);
Veelvoorkomende problemen en oplossingen
Probleem 1: “Signature Not Found” na ondertekenen
Symptoom: sign() slaagt, maar de handtekening is niet zichtbaar.
Oorzaken: Verkeerde plaatsing, overschrijven van origineel bestand, beperkingen van TAR‑viewer.
Oplossing:
// 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();
Probleem 2: OutOfMemoryError bij grote TAR‑bestanden
Symptoom: JVM crasht voor archieven > 500 MB.
Oplossing: Vergroot de heap‑grootte (-Xmx) en verwijder Signature‑objecten direct:
java -Xmx2G -jar your-application.jar
Of implementeer chunk‑verwerking:
// For very large files, consider signing metadata separately
// rather than embedding in the TAR itself
Probleem 3: Handtekeningdata wordt afgekapt
Symptoom: Lange strings worden afgekapt.
Oorzaak: Capaciteitslimiet van Code128 (≈ 80 tekens).
Oplossing: Schakel over naar QR‑codes voor langere payloads:
// 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);
Probleem 4: Licentie‑validatiefouten
Symptoom: LicenseException of “Trial version” waarschuwingen in productie.
Oplossing: Laad de licentie vóór het aanmaken van Signature‑instanties:
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");
Pro tip: Laad de licentie één keer bij applicatie‑opstart, niet vóór elke ondertekeningsbewerking.
Probleem 5: Positiewaarden werken niet zoals verwacht
Symptoom: Handtekeningen verschijnen op onverwachte locaties.
Oorzaak: Verwarring tussen pixels en points.
Oplossing: GroupDocs gebruikt standaard pixels. Voor precieze plaatsing:
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);
Integratiepatronen
Patroon 1: REST‑API‑service
@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);
}
}
}
Patroon 2: Batch‑verwerkingspijplijn
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
}
}
Patroon 3: Event‑gedreven architectuur
@Component
public class ArchiveCreatedListener {
@EventListener
public void onArchiveCreated(ArchiveCreatedEvent event) {
CompletableFuture.runAsync(() -> {
signArchive(event.getFilePath());
});
}
private void signArchive(String filePath) {
// ... signing logic
}
}
Prestatie‑overwegingen
Geheugenbeheer
Het probleem: Elke Signature‑instantie laadt het volledige bestand in het geheugen.
Best practices:
// 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
}
Bestands‑grootte‑optimalisatie
- Kleine bestanden (< 10 MB) – onderteken synchroon.
- Middelgrote bestanden (10‑100 MB) – gebruik achtergrondthreads.
- Grote bestanden (> 100 MB) – overweeg metadata apart te ondertekenen of streaming‑API’s te gebruiken.
Handtekeningcomplexiteit (bij benadering timings op een standaard server)
| Handtekeningtype | Tijd per document |
|---|---|
| Enkele barcode | 50‑100 ms |
| Enkele QR‑code | 100‑200 ms |
| Meerdere handtekeningen | 150‑300 ms |
Optimalisatietip: Voor duizenden bestanden, batch ze en gebruik een thread‑pool (zie het batch‑verwerkingspatroon hierboven).
Bibliotheek‑updates
GroupDocs brengt regelmatig prestatie‑verbeteringen uit. Controleer altijd de changelog vóór grote implementaties.
Update‑strategie:
- Test nieuwe versies in staging.
- Bekijk breaking changes.
- Benchmark met echte bestanden.
- Rol geleidelijk uit.
Best practices voor productie
1. Valideer licentiestatus
License license = new License();
if (!license.isLicensed()) {
logger.warn("Running in trial mode - features may be limited");
}
2. Implementeer robuuste foutafhandeling
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. Gebruik beschrijvende handtekeningdata
// 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. Versieeer je handtekeningformaat
Include een versienummer in de embedded JSON om je verificatielogica toekomstbestendig te maken:
String qrData = String.format(
"{\"v\":\"1.0\",\"type\":\"archive\",\"timestamp\":\"%s\"}",
timestamp
);
5. Test met real‑world bestanden – valideer altijd met productiegrootte archieven om geheugen‑ en prestatie‑problemen vroeg te ontdekken.
Conclusie
Je hebt nu een solide basis voor het implementeren van digital signature java met barcodes en QR‑codes. Dit heb je geleerd:
- Hoe je TAR‑archieven (en andere documenten) ondertekent met zowel barcode‑ als QR‑code‑handtekeningen
- Wanneer je elk handtekeningtype kiest op basis van specifieke behoeften
- Hoe je veelvoorkomende problemen oplost voordat ze productie bereiken
- Real‑world integratiepatronen voor REST‑API’s, batch‑verwerking en event‑gedreven systemen
- Prestatie‑optimalisatietechnieken voor bestanden van elke grootte
Volgende stappen:
- Verken handtekeningverificatie met de
search()‑methode. - Probeer andere documentformaten—GroupDocs.Signature ondersteunt PDF, DOCX, XLSX, PNG en meer.
- Pas de handtekeningweergave aan (kleuren, groottes, randen).
- Bouw een verificatie‑API om handtekeningen programmatisch te valideren.
De kracht van GroupDocs.Signature gaat verder dan deze gids. Bekijk de volledige documentatie om geavanceerde functies te ontdekken, zoals tekst‑handtekeningen, afbeelding‑handtekeningen en metadata‑extractie.
Heb je vragen of wil je je implementatie delen? Word lid van de GroupDocs community‑forums voor hulp van andere ontwikkelaars.
Veelgestelde vragen
V: Kan ik documenten ondertekenen anders dan TAR‑archieven?
A: Absoluut! GroupDocs.Signature ondersteunt meer dan 50 bestandsformaten, waaronder PDF, DOCX, XLSX, PNG en meer. Verander alleen de bestandsextensie in de Signature‑constructor om met elk ondersteund type te werken.
V: Hoe verifieer ik handtekeningen na ondertekenen?
A: Gebruik de search()‑methode om handtekeningen te lokaliseren en te valideren:
Signature signature = new Signature("signed-document.tar");
BarcodeSearchOptions searchOptions = new BarcodeSearchOptions();
List<BarcodeSignature> signatures = signature.search(BarcodeSignature.class, searchOptions);
V: Zijn de handtekeningen veilig tegen manipulatie?
A: Barcode‑ en QR‑code‑handtekeningen bieden visuele verificatie maar zijn niet cryptografisch sterk zoals digitale certificaten. Voor maximale veiligheid combineer ze met traditionele PKI of sla handtekening‑hashes extern op.
V: Wat is de maximale data die ik kan opslaan in een handtekening?
- Code128‑barcode: ~80 alfanumerieke tekens
- QR‑code (Versie 40): tot 4.296 alfanumerieke tekens of 7.089 numerieke tekens
V: Kan ik de handtekeningweergave aanpassen?
A: Ja! Je kunt kleuren, groottes, randen en meer regelen:
bcOptions.setForeColor(Color.BLUE);
bcOptions.setBackgroundColor(Color.YELLOW);
bcOptions.setBorder(new Border());
bcOptions.getBorder().setColor(Color.RED);
bcOptions.getBorder().setWeight(2);
V: Wat gebeurt er als ik een bestand twee keer onderteken?
A: Elke sign()‑aanroep voegt een nieuwe handtekening toe. Om een bestaande te vervangen, verwijder je deze eerst met de delete()‑methode.
V: Hoe ga ik om met grote bestanden zonder geheugen‑tekort?
A: Vergroot de JVM‑heap (-Xmx), verwijder Signature‑objecten direct, en overweeg metadata apart te ondertekenen voor multi‑gigabyte archieven.
V: Heb ik een internetverbinding nodig om documenten te ondertekenen?
A: Nee. GroupDocs.Signature werkt volledig offline zodra de bibliotheek is geïnstalleerd.
Last Updated: 2026-05-21
Tested With: GroupDocs.Signature 23.12 for Java
Author: GroupDocs