Hogyan hozzunk létre vonalkód aláírást PDF-ben Java-val
Ebben az oktatóanyagban megtanulja, hogyan hozzon létre vonalkód aláírást PDF-fájlokban Java és a GroupDocs.Signature segítségével. A vonalkód aláírások géppel olvasható azonosítókat ágyaznak be, amelyek egyszerre hamisíthatatlanok és könnyen beolvashatóak — tökéletesek szerződésekhez, bizonyítványokhoz, számlákhoz és bármely dokumentumhoz, amely megbízható ellenőrzést igényel.
Gyors válaszok
- Mi az a vonalkód aláírás? Egy PDF-be ágyazott vonalkód, amely strukturált adatokat tárol, és szkennerek vagy szoftverek által olvasható.
- Melyik vonalkódtípust ajánljuk? Code128, mivel kompakt módon kezeli az alfanumerikus adatokat.
- Szükségem van licencre? Egy ingyenes próba megfelelő a teszteléshez; a teljes licenc a termeléshez kötelező.
- Bármelyik oldalméretre elhelyezhető a vonalkód? Igen — használjon százalékos elhelyezést az automatikus méretezéshez.
- Vektoros a vonalkód? Igen, csak néhány kilobájtot ad a PDF-hez, és bármilyen felbontáson éles marad.
Mi az a vonalkód aláírás?
A vonalkód aláírás egy vektoros vonalkód, amely közvetlenül egy PDF-oldalba van beágyazva, és egyszerre vizuális elemként és kriptográfiai aláírásként működik, amely később ellenőrizhető. Strukturált adatokat tárol, például azonosítókat vagy időbélyegeket, és biztosítja a dokumentum integritását, miközben géppel olvasható hivatkozást nyújt.
Miért fontosak a vonalkód aláírások a PDF-jeiben
A vonalkód aláírások kompakt, géppel olvasható azonosítót adnak a PDF-eknek, amely azonnal beolvasható, kiküszöbölve a kézi adatbevitel szükségességét és csökkentve a hibákat. Mivel vektoros grafikaként vannak beágyazva, bármilyen felbontáson élesek maradnak, és csak néhány kilobájtot adnak a fájlhoz. Ez az olvashatóság, a hamisíthatatlanság és a minimális méret kombinációja teszi őket ideálissá szerződésekhez, számlákhoz, bizonyítványokhoz és bármely dokumentumhoz, amely megbízható ellenőrzést igényel.
Valószínűleg már találkozott ezzel a kihívással: egyedi azonosítókat kell PDF-ekhez adni, amelyek géppel olvashatóak és hamisíthatatlanok. Lehet, hogy egy dokumentumkezelő rendszeren, tanúsítványok feldolgozásán vagy szerződések nyomon követésén dolgozik.
Itt jönnek képbe a vonalkód aláírások. Az egyszerű szöveges pecsétek helyett a vonalkódok strukturált adatot ágyaznak be, amelyet a szkennerek (és a szoftvere) azonnal olvasnak. Ráadásul, ha a GroupDocs.Signature for Java PDF-aláírással kombinálja, erőteljes módot kap a dokumentumok nyomon követésére és ellenőrzésére anélkül, hogy bonyolult adatbázis-kereséseket kellene végezni.
Ebben az útmutatóban pontosan megtanulja, hogyan valósítsa meg a vonalkód aláírásokat Java PDF-jeiben — az egyszerű beállítástól a termelésre kész kódig, rugalmas elhelyezéssel. Akár számlarendszert, bizonyítványgenerátort vagy szerződéskezelő platformot épít, a végére mindent megkap, amire szüksége van.
Amit elsajátít:
- A GroupDocs.Signature for Java beállítása percek alatt
- Code128 vonalkód aláírások létrehozása (és miért gyakran a legjobb választás)
- Vonalkódok elhelyezése százalékos elrendezéssel, amely bármilyen PDF-méreten működik
- Gyakori hibák elkerülése, amelyek fejlesztőket akadályozzák
- A megvalósítás megfelelő tesztelése
Hogyan hozzunk létre vonalkód aláírást Java-ban
A vonalkód aláírás létrehozása Java-ban magában foglalja a cél PDF betöltését, a vonalkód beállításainak (adat, típus, méret, pozíció) konfigurálását, majd az aláírás alkalmazását egy új dokumentum generálásához. A GroupDocs.Signature kezeli a renderelést és a kriptográfiai kötést, így csak a kívánt paramétereket kell megadnia, és a fájlutakat kell kezelnie.
Előfeltételek és környezeti ellenőrzőlista
Mielőtt belevágna, ellenőrizze, hogy a következő elemek rendelkezésre állnak:
- Java Development Kit (JDK) 8 vagy újabb – kötelező minden GroupDocs Java könyvtárhoz.
- Maven vagy Gradle – a GroupDocs.Signature függőség kezeléséhez.
- IDE, például IntelliJ IDEA, Eclipse vagy VS Code Java kiegészítőkkel.
- GroupDocs.Signature for Java (ajánlott verzió 23.12 vagy újabb).
- Alapvető Java ismeretek – képesnek kell lennie osztályok létrehozására, kivételek kezelésére és fájl‑I/O-val való munkára.
A GroupDocs.Signature beállítása a projektben
A könyvtár beillesztése a projektbe egyszerű. Válassza ki a build‑eszközt:
Maven felhasználóknak, adja hozzá ezt a függőséget a pom.xml‑hez:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle‑t használ? Adja hozzá ezt a sort a build.gradle‑hez:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Kézi beállítás előnyben részesítése? Töltse le a JAR‑t közvetlenül a GroupDocs.Signature for Java releases oldalról, és adja hozzá az osztályútvonalhoz.
Licenc beszerzése
Mielőtt teljes termelésbe lépne, rendezze a licencet:
- Ingyenes próba: Tökéletes teszteléshez — szerezze be a GroupDocs weboldaláról a fő funkciókat.
- Ideiglenes licenc: Több időre van szüksége a kiértékeléshez? Kérjen 30‑napos ideiglenes licencet.
- Teljes licenc: Termeléshez? Vásároljon korlátlan használatú licencet.
Egy gyors ellenőrzés, hogy minden működik:
Signature signature = new Signature("sample.pdf");
System.out.println("Signature object created successfully.");
Ha hiba nélkül lefut, minden rendben van!
Hogyan hozzunk létre vonalkód aláírást Java-ban
Most jön a szórakoztató rész — aláírunk egy PDF-et vonalkóddal. A folyamatot kisebb lépésekre bontjuk, hogy pontosan megértse, mi történik minden egyes szakaszban.
1. lépés: A Signature objektum inicializálása
Definíció horgony: A Signature osztály a GroupDocs.Signature belépési pontja PDF-dokumentumok betöltéséhez, módosításához és mentéséhez.
Először meg kell adnia, melyik PDF‑et dolgozza fel a GroupDocs:
Signature signature = new Signature("input.pdf");
Mi történik: A Signature objektum betölti a PDF‑et a memóriába, és előkészíti a módosításokat. Ügyeljen arra, hogy a fájlútvonal helyes legyen — gyakori hiba a Windows‑on a visszafelé perjelek (\) helytelen használata (használjon \\ vagy egyszerűen előre perjeleket, amelyek platformfüggetlenek).
2. lépés: A vonalkód beállításainak konfigurálása (Hogyan adjunk hozzá vonalkódot)
Definíció horgony: A BarcodeSignOptions tartalmazza a PDF‑be ágyazandó vonalkód összes beállítását.
Most hozzuk létre a vonalkód aláírást a kívánt adatokkal:
BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeEncodeType.Code128);
"12345678"a vonalkód adat — ez lehet rendelés‑azonosító, bizonyítvány‑szám vagy bármilyen szükséges azonosító.Code128a kódolási típus (további információ a megfelelő típus kiválasztásáról alább).
Pro tipp: A Code128 képes számok és betűk egyidejű kezelésére, így sokféle felhasználási esethez alkalmas. Ha csak számokra van szükség, a Code39 egyszerűbb lehet, de a Code128 nagyobb rugalmasságot biztosít.
3. lépés: A vonalkód elhelyezése (Hogyan írjuk alá a PDF‑et vonalkóddal)
Definíció horgony: A SignatureOptions biztosítja az elrendezési tulajdonságokat, például az oldalszámot, méretet és igazítást.
Itt jön a GroupDocs erőssége — a százalékos elhelyezés azt jelenti, hogy a vonalkód minden PDF‑méreten jól néz ki:
options.setLeft(10); // 10% from the left edge
options.setTop(90); // 90% from the bottom edge (near the footer)
options.setWidth(30); // 30% of page width
options.setHeight(10); // 10% of page height
options.setPageNumber(1);
Miért fontosak a százalékok: Képzelje el, hogy A4‑es és jogi méretű dokumentumokat is aláír. A százalékos pozicionálással a vonalkód automatikusan arányosan méreteződik mindkét esetben. A fix pixel értékek túl kicsi vonalkódot eredményeznek nagy dokumentumoknál, vagy túl nagyot kis dokumentumoknál.
Valós példák: Egy A4 oldal (595 × 842 pont) 30 % szélességű vonalkódja kb. 180 pont széles lesz. Egy jogi oldal (612 × 1008 pont) esetén ez körülbelül 184 pont, azaz automatikusan arányos.
4. lépés: Aláírás és a dokumentum mentése (Hogyan adjunk hozzá vonalkód‑pdf‑et)
Most alkalmazzuk az aláírást és mentsük el a változtatásokat:
signature.sign(outputPath, options);
Fontos megjegyzés: A kimeneti könyvtárnak léteznie kell, mielőtt a kódot futtatná. A GroupDocs nem hoz létre beágyazott könyvtárakat, ezért előbb hozza létre őket, vagy kezelje ezt a kódban:
new File("output").mkdirs();
Mi történik hiba esetén? Tegye a kódot try‑catch blokkba:
try {
signature.sign("signed.pdf", options);
} catch (Exception e) {
e.printStackTrace();
}
A megfelelő vonalkódtípus kiválasztása (code128 vonalkód generálása)
A GroupDocs több vonalkódformát támogat, és a helyes választás fontos. Íme egy gyakorlati összehasonlítás:
Code128 (Alapértelmezett választásunk):
- Legjobb: Vegyes alfanumerikus adatok (pl. „INV2024-001”)
- Kapacitás: Legfeljebb 128 ASCII karakter
- Miért nyer: Kompakt, széles körben támogatott, betűket és számokat egyaránt kezel
- Mikor használja: Rugalmas adatkezelésre, ha nem tudja előre, milyen típusú adatot kódol
Code39:
- Legjobb: Egyszerű alfanumerikus kódok
- Kapacitás: 43 karakter (A‑Z, 0‑9 és néhány szimbólum)
- Miért érdemes: Régebbi szkennerek gyakran jobban támogatják
- Mikor használja: Örökölt rendszerek vagy egyszerűség fontosabb, mint az adat sűrűsége
QR Code:
- Legjobb: Nagy mennyiségű adat (URL‑ek, JSON)
- Kapacitás: Akár 3 KB adat
- Miért erős: Komplex adatstruktúrák tárolása, beépített hibajavítás
- Mikor használja: Strukturált adatok vagy URL‑ek beágyazása szükséges
EAN/UPC:
- Legjobb: Termékazonosítás
- Kapacitás: Fix hosszúságú numerikus kódok (8‑13 számjegy)
- Mikor használja: Kiskereskedelmi vagy készletkezelő rendszerek
Gyors döntési útmutató:
- Betűk és számok? → Code128
- Csak számok, egyszerűség? → Code39
- Sok adat vagy URL? → QR Code
- Kiskereskedelmi termékkódok? → EAN/UPC
Gyakori hibák és elkerülésük (tamper evident barcode)
Az alábbiakban a fejlesztők leggyakrabban tapasztalt problémákat és megoldásaikat soroljuk fel:
Probléma 1: A vonalkód pozíciója helytelen
Tünet: A vonalkód váratlan helyen jelenik meg vagy levágódik.
Gyakori okok:
- Pixel‑értékek használata különböző oldalméreteken
- A PDF koordinátái a bal‑alsó sarokból indulnak, nem a felső‑balról
- Margók, amelyek a tartalmat a látható területből ki tolják
Megoldás: Mindig használjon százalékos elhelyezést a konzisztencia érdekében:
options.setLeft(5);
options.setTop(95);
options.setWidth(40);
options.setHeight(12);
Probléma 2: A vonalkód szövege olvashatatlan
Tünet: A kódolt szöveg megjelenik, de a szkennerek nem tudják beolvasni.
Okok:
- A vonalkód túl kicsi a megadott adat mennyiségéhez
- Rossz kódolási típus a data‑hoz
- Alacsony kontraszt a vonalak és a háttér között
Megoldás: Igazítsa a vonalkód méretét az adat hosszához. Code128 esetén 10‑15 karakteres adatnál legalább 8‑10 % oldalszélességet célozzon meg.
Probléma 3: Fájlútvonal‑kivétel
Tünet: FileNotFoundException vagy hasonló hiba.
Okok:
- Hardcoded Windows‑útvonalak egyetlen visszaperjellel
- A kimeneti könyvtár nem létezik
- Fájl‑jogosultsági problémák
Megoldás: Használjon előre perjeleket (minden platformon működnek) és hozza létre a könyvtárakat előre:
Path output = Paths.get("output/signed.pdf");
Files.createDirectories(output.getParent());
Probléma 4: Memória‑problémák nagy PDF‑ekkel
Tünet: Memóriahiány hiba nagy dokumentumok feldolgozásakor.
Megoldás: Zárja le a Signature objektumot a munka befejezése után, hogy felszabaduljanak az erőforrások:
signature.close();
A vonalkód megvalósítás tesztelése
A telepítés előtt ellenőrizze, hogy a vonalkódok valóban működnek. Íme egy gyakorlati tesztlista:
1. Vizuális ellenőrzés
Nyissa meg az aláírt PDF‑et, és ellenőrizze:
- Látható-e a vonalkód és megfelelően helyezkedik‑e el?
- Éles‑e (nem homályos vagy pixelált)?
- Van‑e elegendő fehér tér körülötte?
2. Szkennelési teszt
Használjon telefonos vonalkód‑olvasó alkalmazást (pl. „Barcode Scanner” vagy „QR & Barcode Reader”) a következőkre:
- A szkenner be tudja‑olvasni a vonalkódot
- A dekódolt adat megegyezik a kódoltal
- Különböző szögekből és távolságokból is működik
3. Kereszt‑platform teszt
Nyissa meg a PDF‑et különböző eszközökön:
- Windows (Adobe Reader, Chrome)
- Mac (Preview, Chrome)
- Mobil (iOS, Android)
Győződjön meg róla, hogy a vonalkód mindenhol helyesen jelenik meg.
4. Automatizált tesztkód
Egy egyszerű teszt, amelyet futtathat:
Signature testSignature = new Signature("signed.pdf");
List<BarcodeSignature> signatures = testSignature.search(BarcodeSignature.class);
if (signatures.size() > 0) {
System.out.println("Barcode found: " + signatures.get(0).getText());
}
Valós példák a vonalkód aláírásokra
Nézzük meg, hol ragyog ez a technika a termelési rendszerekben:
1. Tanúsítvány generálás és ellenőrzés
Szituáció: Egy képzési platform kiad befejezési tanúsítványokat.
Megvalósítás: Egyedi tanúsítvány‑azonosítót (pl. „CERT‑2024‑00123”) generál, és Code128 vonalkódként ágyaz be a jobb‑alsó sarokba. A vonalkód beolvasása az API‑nak azonnal visszaadja a tanúsítvány részleteit, kiküszöbölve a kézi adatbevitelt.
2. Számlakövető rendszerek
Szituáció: Egy vállalat havonta több ezer számlát dolgoz fel.
Megvalósítás: A számlaszámot és a fizetési határidőt QR‑kódként helyezi el, ahol a szkennelő berendezések könnyen olvashatják. Az automatizált rendező rendszerek emberi beavatkozás nélkül irányítják a számlákat, csökkentve a feldolgozási időt órákról percekre.
3. Jogi szerződéskezelés
Szituáció: Egy ügyvédi iroda nyomon követi a szerződés‑verziókat és módosításokat.
Megvalósítás: Minden szerződés‑verzió egyedi vonalkód‑azonosítót kap, amely tartalmazza a szerződés‑azonosítót, verziószámot és aláírási dátumot. Az audit során a beolvasás azonnal megjeleníti a teljes verziótörténetet.
4. Egészségügyi nyilvántartások biztonsága
Szituáció: Egy kórház meg akarja akadályozni a jogosulatlan hozzáférést a betegek adataihoz.
Megvalósítás: A beteg‑azonosítót és a rekord‑létrehozási időbélyeget vonalkódként ágyazza be. Csak hitelesített eszközök tudják dekódolni és hozzáférni a teljes rekordhoz, minden beolvasás audit‑naplót hoz létre a megfelelőség érdekében.
Teljesítményoptimalizálási tippek (java document security)
Sok PDF aláírása esetén a teljesítmény számít. Íme néhány tipp a zökkenőmentes működéshez:
Kötetes feldolgozási stratégia
Egy dokumentum helyett kötegelt feldolgozást alkalmazzon:
for (String filePath : pdfList) {
Signature batchSignature = new Signature(filePath);
batchSignature.sign(outputPath, options);
batchSignature.close();
}
Miért segít: Az opcióobjektum újrahasználata és a források megfelelő lezárása megakadályozza a memória‑szivárgásokat.
Memóriakezelés nagy PDF‑eknél
50 MB‑nál nagyobb PDF‑ek esetén:
- Sorozatos feldolgozás, ne töltse be egyszerre több fájlt.
- Használjon try‑with‑resources‑t a tiszta lezáráshoz.
- Figyelje a heap‑méretet, és szükség esetén állítsa be a JVM paramétereket:
-Xmx2g.
Gyakran használt vonalkódok gyorsítótárazása
Ha sok dokumentum ugyanazzal a vonalkóddal kap aláírást, gyorsítótárazza a BarcodeSignOptions példányt:
BarcodeSignOptions cachedOptions = new BarcodeSignOptions("STATIC_ID");
cachedOptions.setEncodeType(BarcodeEncodeType.Code128);
Mikor használjunk vonalkód aláírást (és mikor ne)
Ideális esetek:
- Géppel olvasható dokumentumazonosítókra van szükség.
- A dokumentumokat automatikusan szkennelik vagy dolgozzák fel.
- Hamisíthatatlan nyomon követés digitális tanúsítványok nélkül.
- Már meglévő vonalkód‑infrastruktúrával való integráció szükséges.
Nem ideális, ha:
- Jogi kötelező erejű digitális aláírásra van szükség (használjon digitális tanúsítványt).
- A dokumentumokat csak emberek nézik (egyszerű szöveges vízjel is elegendő).
- Rendkívül kis dokumentumokról van szó, ahol a vonalkód elnyomná a tartalmat.
- Titkosításra van szükség — a vonalkódok láthatóak és bárki által beolvashatóak.
Kombinálható megközelítések? Természetesen! Sok rendszer egyszerre használ vonalkód aláírásokat a nyomon követéshez és digitális aláírásokat a jogi érvényességhez.
Gyakran ismételt kérdések
K: Használhatok különböző vonalkódtípusokat egy PDF‑ben?
A: Igen! Hívja meg többször a signature.sign()‑t különböző BarcodeSignOptions‑okkal minden vonalkódtípushoz. Ügyeljen arra, hogy ne fedjék egymást.
K: Hogyan kezeljem a speciális karaktereket tartalmazó vonalkódokat?
A: A Code128 a legtöbb ASCII karaktert támogatja. Unicode vagy összetett adatok esetén válasszon QR‑kódot, amely UTF‑8 kódolást is támogat.
K: Mi a maximális adatméret egy Code128 vonalkódban?
A: Technikai korlát 128 karakter, de a olvashatóság jelentősen romlik a 30‑40 karakter felett. Nagyobb mennyiségű adat esetén használjon QR‑kódot.
K: Jelentősen megnő a PDF fájlmérete a vonalkódok hozzáadása miatt?
A: Nem számottevően — a vonalkódok vektoros grafikák, általában csak 5‑20 KB‑ot adnak hozzá egy vonalkód méretétől függően.
K: Forgathatom vagy függőlegesen elhelyezhetem a vonalkódot?
A: Igen! Használja az options.setRotationAngle(90)‑t a vonalkód forgatásához, ami hasznos a margó‑elhelyezésnél.
K: Hogyan jeleníthetem meg a vonalkódot minden oldalon egy többoldalas PDF‑ben?
A: Iteráljon az oldalakon, és alkalmazza az aláírást mindegyikre. Tekintse meg a PagesSetup osztályt a GroupDocs dokumentációban a kívánt oldalak vezérléséhez.
K: Mi a teendő, ha a vonalkód‑olvasóm nem tudja beolvasni a generált vonalkódot?
A: Először ellenőrizze, hogy az olvasó támogatja‑e a kiválasztott típusú vonalkódot. Ezután növelje a vonalkód méretét — a legtöbb olvasási probléma a túl kicsi vonalakból adódik. Legalább 1 inch (2,54 cm) szélességet célozzon meg a megbízható beolvasáshoz.
További források
Dokumentáció:
Letöltések és licencelés:
Közösség és támogatás:
- Support Forum – Aktív közösség a GroupDocs mérnökökkel
Utoljára frissítve: 2026-07-20
Tesztelve a következővel: GroupDocs.Signature 23.12 (Java)
Szerző: GroupDocs
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
implementation 'com.groupdocs:groupdocs-signature:23.12'
import com.groupdocs.signature.Signature;
public class QuickTest {
public static void main(String[] args) {
try {
Signature signature = new Signature("test-document.pdf");
System.out.println("GroupDocs.Signature is ready to go!");
} catch (Exception e) {
System.err.println("Setup issue: " + e.getMessage());
}
}
}
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
Signature signature = new Signature(filePath);
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeTypes.Code128);
import com.groupdocs.signature.domain.enums.MeasureType;
import com.groupdocs.signature.domain.Padding;
// Use percentages instead of fixed pixels
options.setLocationMeasureType(MeasureType.Percents);
options.setLeft(5); // 5% from the left edge
options.setTop(5); // 5% from the top
// Size it proportionally too
options.setSizeMeasureType(MeasureType.Percents);
options.setWidth(10); // 10% of page width
options.setHeight(5); // 5% of page height
// Add some breathing room with margins
Padding margins = new Padding();
margins.setLeft(1);
margins.setTop(1);
margins.setRight(1);
options.setMargin(margins);
String outputFilePath = "YOUR_OUTPUT_DIRECTORY/SignWithPercents/sample_signed.pdf";
signature.sign(outputFilePath, options);
Path outputPath = Paths.get(outputFilePath);
Files.createDirectories(outputPath.getParent());
signature.sign(outputFilePath, options);
try {
signature.sign(outputFilePath, options);
System.out.println("PDF signed successfully at: " + outputFilePath);
} catch (Exception e) {
System.err.println("Signing failed: " + e.getMessage());
e.printStackTrace();
}
options.setLocationMeasureType(MeasureType.Percents);
options.setLeft(5); // 5% from left works on any page width
options.setWidth(10); // Give it room to breathe
options.setHeight(5); // Maintain proper aspect ratio
String filePath = "documents/sample.pdf"; // Works on Windows, Mac, Linux
Files.createDirectories(Paths.get("output/signed"));
try (Signature signature = new Signature(filePath)) {
signature.sign(outputFilePath, options);
} // Automatically closes and releases memory
import org.junit.Test;
import static org.junit.Assert.*;
public class BarcodeSignatureTest {
@Test
public void testBarcodeSigning() {
String testPdf = "test-data/sample.pdf";
String output = "test-output/signed.pdf";
try (Signature signature = new Signature(testPdf)) {
BarcodeSignOptions options = new BarcodeSignOptions("TEST123");
options.setEncodeType(BarcodeTypes.Code128);
signature.sign(output, options);
// Verify output file exists
assertTrue(new File(output).exists());
// Verify file size increased (signature was added)
long originalSize = new File(testPdf).length();
long signedSize = new File(output).length();
assertTrue(signedSize > originalSize);
} catch (Exception e) {
fail("Signing should not throw exception: " + e.getMessage());
}
}
}
List<String> pdfFiles = Arrays.asList("doc1.pdf", "doc2.pdf", "doc3.pdf");
for (String pdfFile : pdfFiles) {
try (Signature signature = new Signature(pdfFile)) {
BarcodeSignOptions options = createBarcodeOptions(); // Reuse options
signature.sign(getOutputPath(pdfFile), options);
}
}
// Create options once, reuse many times
BarcodeSignOptions templateOptions = createStandardBarcodeOptions();
// For each document, clone and customize
BarcodeSignOptions documentOptions = templateOptions.clone();
documentOptions.setText(uniqueDocumentId);