PDF’de Java Kullanarak Barkod İmzası Oluşturma
Bu öğreticide, Java ve GroupDocs.Signature kullanarak PDF dosyalarına barkod imzası oluşturmayı öğreneceksiniz. Barkod imzaları, hem müdahale tespitli hem de taraması kolay olan makine‑okunabilir tanımlayıcılar ekler—sözleşmeler, sertifikalar, faturalar ve güvenilir doğrulama gerektiren herhangi bir belge için mükemmeldir.
Hızlı Yanıtlar
- Barkod imzası nedir? PDF içinde gömülü bir barkod olup yapılandırılmış verileri depolar ve tarayıcılar veya yazılım tarafından okunabilir.
- Hangi barkod türü önerilir? Code128, çünkü alfanümerik verileri kompakt bir şekilde işler.
- Lisans gerekiyor mu? Ücretsiz deneme sürümü test için çalışır; üretim için tam lisans gereklidir.
- Barkodu herhangi bir sayfa boyutuna yerleştirebilir miyim? Evet—otomatik ölçekleme için yüzde‑tabanlı konumlandırma kullanın.
- Barkod vektör‑tabanlı mı? Evet, PDF’ye sadece birkaç kilobayt ekler ve herhangi bir çözünürlükte net kalır.
Barkod imzası nedir?
Barkod imzası, doğrudan bir PDF sayfasına gömülmüş vektör‑tabanlı bir barkoddur; hem görsel bir öğe hem de daha sonra doğrulanabilen bir kriptografik imza olarak görev yapar. Kimlikler veya zaman damgaları gibi yapılandırılmış verileri depolar ve belge bütünlüğünü sağlarken makine‑okunabilir bir referans sunar.
Barkod imzalarının PDF’leriniz için önemi
Barkod imzaları, PDF’lere anında taranabilen kompakt, makine‑okunabilir bir tanımlayıcı sağlar; manuel veri girişini ortadan kaldırır ve hataları azaltır. Vektör grafik olarak gömülü oldukları için herhangi bir çözünürlükte net kalırlar ve dosyaya sadece birkaç kilobayt eklerler. Bu okunabilirlik, müdahale tespiti ve minimal boyut kombinasyonu, onları sözleşmeler, faturalar, sertifikalar ve güvenilir doğrulama gerektiren herhangi bir belge için ideal kılar.
Muhtemelen karşılaştığınız bir zorluk şudur: PDF’lere hem makine‑okunabilir hem de müdahale tespitli benzersiz tanımlayıcılar eklemeniz gerekir. Belki bir belge yönetim sistemi üzerinde çalışıyorsunuz, sertifikaları işliyorsunuz veya ileride doğrulama gerektiren sözleşmelerle uğraşıyorsunuz.
İşte bu noktada barkod imzaları işe yarar. Basit metin damgalarından farklı olarak, barkodlar tarayıcıların (ve yazılımınızın) anında okuyabileceği yapılandırılmış verileri gömmenizi sağlar. Ayrıca, bunları GroupDocs.Signature for Java aracılığıyla PDF imzalama ile birleştirdiğinizde, karmaşık veritabanı sorguları eklemeden belgeleri izlemek ve doğrulamak için güçlü bir yol elde edersiniz.
Bu rehberde, Java PDF’lerinizde barkod imzalarını nasıl uygulayacağınızı tam olarak öğreneceksiniz — temel kurulumdan üretim‑hazır kod ve esnek konumlandırmaya kadar. İster bir fatura sistemi, sertifika üreticisi ya da sözleşme yönetim platformu oluşturuyor olun, sonunda ihtiyacınız olan her şeye sahip olacaksınız.
Neler Öğreneceksiniz:
- Dakikalar içinde GroupDocs.Signature for Java’ı kurma
- Code128 barkod imzaları oluşturma (ve neden genellikle en iyi seçiminiz olduğu)
- Her PDF boyutunda çalışan yüzde‑tabanlı düzenlerle barkodları konumlandırma
- Geliştiricileri zorlayan yaygın hatalardan kaçınma
- Uygulamanızı doğru şekilde test etme
Java’da barkod imzası oluşturma
Java’da barkod imzası oluşturmak, hedef PDF’yi yüklemeyi, veri, tip, boyut ve konum gibi barkod seçeneklerini yapılandırmayı ve ardından imzayı uygulayarak yeni bir belge üretmeyi içerir. GroupDocs.Signature, renderleme ve kriptografik bağlamayı yönetir, bu yüzden yalnızca istenen parametreleri sağlamanız ve dosya yollarını yönetmeniz gerekir.
Önkoşullar ve ortam kontrol listesi
Başlamadan önce, aşağıdaki öğelerin hazır olduğundan emin olun:
- Java Development Kit (JDK) 8 veya daha yeni – tüm GroupDocs Java kütüphaneleri için gereklidir.
- Maven veya Gradle – GroupDocs.Signature bağımlılığını yönetmek için.
- Bir IDE örneğin IntelliJ IDEA, Eclipse veya Java uzantılarına sahip VS Code.
- GroupDocs.Signature for Java (versiyon 23.12 veya daha yeni önerilir).
- Temel Java bilgisi – sınıflar oluşturma, istisnaları ele alma ve dosya G/Ç ile çalışmada rahat olmalısınız.
Projenizde GroupDocs.Signature’ı Kurma
Kütüphaneyi projenize eklemek basittir. Derleme aracınızı seçin:
Maven kullanıcıları için, pom.xml dosyanıza bu bağımlılığı ekleyin:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle kullanıyor musunuz? build.gradle dosyanıza bu satırı ekleyin:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Manuel kurulumu tercih mi ediyorsunuz? JAR dosyasını doğrudan GroupDocs.Signature for Java releases adresinden indirin ve sınıf yolunuza ekleyin.
Lisansınızı düzenleme
Tam üretime geçmeden önce lisanslamayı halletmek isteyeceksiniz:
- Ücretsiz Deneme: Test için mükemmel — temel özellikleri keşfetmek için GroupDocs web sitesinden alın.
- Geçici Lisans: Değerlendirme için daha fazla zamana mı ihtiyacınız var? 30‑günlük geçici lisans için başvurun.
- Tam Lisans: Üretime hazır mısınız? Sınırsız kullanım için bir lisans satın alın.
Here a quick sanity check to make sure everything’s working:
Signature signature = new Signature("sample.pdf");
System.out.println("Signature object created successfully.");
Eğer hatasız çalışıyorsa, hazırsınız!
Java’da barkod imzası oluşturma
Şimdi eğlenceli kısma geçelim — bir PDF’yi barkodla imzalayalım. Bu süreci adım adım parçalara ayıracağız, böylece her aşamada ne olduğunu tam olarak anlayacaksınız.
Adım 1: Signature nesnesini başlatma
Tanım referansı: Signature sınıfı, PDF belgelerini yüklemek, değiştirmek ve kaydetmek için GroupDocs.Signature’ın giriş noktasıdır.
İlk olarak, GroupDocs’a hangi PDF ile çalıştığınızı belirtmeniz gerekir:
Signature signature = new Signature("input.pdf");
Burada ne oluyor: Signature nesnesi PDF’nizi belleğe yükler ve değişiklikler için hazırlar. Dosya yolunuzun doğru olduğundan emin olun — yaygın bir tuzak, Windows’ta ters eğik çizgileri kaçırmadan kullanmaktır ( \\ kullanın ya da sadece ileri eğik çizgileri kullanın; bunlar platformlar arası çalışır).
Adım 2: Barkod seçeneklerinizi yapılandırma (Barkod ekleme)
Tanım referansı: BarcodeSignOptions, PDF içinde bir barkod oluşturmak için gereken tüm ayarları kapsar.
Şimdi verinizle barkod imzasını oluşturalım:
BarcodeSignOptions options = new BarcodeSignOptions("12345678");
options.setEncodeType(BarcodeEncodeType.Code128);
"12345678"barkod verinizdir — bu bir sipariş kimliği, sertifika numarası veya ihtiyacınız olan herhangi bir tanımlayıcı olabilir.Code128kodlama tipidir (doğru tipi seçme hakkında aşağıda daha fazla bilgi).
Pro ipucu: Code128 hem sayıları hem de harfleri işleyebilir, bu da çoğu kullanım senaryosu için çok yönlüdür. Sadece sayılara ihtiyacınız varsa, Code39 daha basit olabilir, ancak Code128 daha fazla esneklik sağlar.
Adım 3: Barkodunuzu konumlandırma (PDF’yi barkodla imzalama)
Tanım referansı: SignatureOptions, sayfa numarası, boyut ve hizalama gibi düzen özellikleri sağlar.
GroupDocs’un gerçekten parladığı yer burası — yüzde‑tabanlı konumlandırma, barkodunuzun herhangi bir PDF boyutunda iyi görünmesini sağlar:
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);
Yüzdelerin önemi: Hem A4 belgeleri hem de legal‑boyutlu formları imzaladığınızı hayal edin. Yüzde konumlandırma ile barkodunuz otomatik olarak her iki boyutta da tutarlı görünür. Sabit piksel değerleri kullanmak, büyük belgelerde barkodu çok küçük, küçük belgelerde ise çok büyük yapar.
Gerçek dünya örneği: A4 bir sayfada (595 × 842 puan), %30 genişlikte bir barkod yaklaşık 180 puan genişliğinde olur. Legal bir sayfada (612 × 1008 puan) ise yaklaşık 184 puan genişliğinde olur — otomatik olarak orantılı.
Adım 4: Belgenizi imzalayın ve kaydedin (Barkodlu PDF ekleme)
Şimdi imzayı gerçekten uygulama ve çalışmanızı kaydetme zamanı:
signature.sign(outputPath, options);
Önemli not: Çıktı dizini kodu çalıştırmadan önce mevcut olmalıdır. GroupDocs sizin için iç içe dizinler oluşturmaz, bu yüzden önce oluşturun ya da kodunuzda bunu yönetin:
new File("output").mkdirs();
Bir şeyler ters giderse ne olur? Bunu bir try‑catch bloğuna sarın:
try {
signature.sign("signed.pdf", options);
} catch (Exception e) {
e.printStackTrace();
}
İhtiyacınıza uygun barkod tipini seçme (code128 barkod oluşturma)
GroupDocs birden fazla barkod formatını destekler ve doğru olanı seçmek önemlidir. İşte pratik bir karşılaştırma:
Code128 (Varsayılan Seçimimiz):
- En iyisi: Karışık alfanümerik veri (“INV2024-001” gibi kimlikler)
- Kapasite: 128 ASCII karaktere kadar
- Neden tercih edilir: Kompakt, geniş destekli, hem harf hem sayı işleyebilir
- Kullanım: Esnekliğe ihtiyacınız olduğunda ve ne tür veri kodlayacağınızı bilmediğinizde
Code39:
- En iyisi: Basit alfanümerik kodlar
- Kapasite: 43 karakter (A‑Z, 0‑9 ve bazı semboller)
- Neden düşünülür: Eski tarayıcılar genellikle daha iyi destekler
- Kullanım: Eski sistemlerle çalışırken veya basitliğin veri yoğunluğundan daha önemli olduğu durumlarda
QR Code:
- En iyisi: Büyük miktarda veri (URL’ler, JSON yükleri)
- Kapasite: 3 KB’a kadar veri
- Neden güçlü: Karmaşık veri yapıları depolayabilir, yerleşik hata düzeltme
- Kullanım: Yapılandırılmış veri veya URL’ler eklemeniz gerektiğinde
EAN/UPC:
- En iyisi: Ürün tanımlama
- Kapasite: Sabit uzunlukta sayısal kodlar (8‑13 basamak)
- Kullanım: Perakende veya envanter sistemleriyle çalışırken
Hızlı karar rehberi:
- Harf ve sayı mı lazım? → Code128
- Sadece sayı, basit tut? → Code39
- Çok veri ya da URL mi? → QR Code
- Perakende/ürün kodları? → EAN/UPC
Yaygın tuzaklar ve nasıl kaçınılır (müdahale tespitli barkod)
Geliştiricilerin en sık karşılaştığı sorunlar (siz de karşılaşmamanız için):
Sorun 1: Barkod konumlandırması yanlış görünüyor
Belirti: Barkodunuz beklenmedik konumlarda görünüyor ya da kesiliyor.
Yaygın nedenler:
- Farklı sayfa boyutlarında piksel değerleri kullanmak
- PDF koordinatlarının sol‑alt köşeden başladığını, üst‑sol köşeden başlamadığını unutmak
- Kenar boşluklarının içeriği görünür alanın dışına itmesi
Çözüm: Tutarlılık için her zaman yüzde‑tabanlı konumlandırma kullanın:
options.setLeft(5);
options.setTop(95);
options.setWidth(40);
options.setHeight(12);
Sorun 2: Barkod metni okunamıyor
Belirti: Kodlanmış metin görüntüleniyor ancak tarayıcılar okuyamıyor.
Nedenler:
- Verinin miktarı için barkod çok küçük
- Veriniz için yanlış kodlama tipi
- Çubuklar ile arka plan arasındaki düşük kontrast
Çözüm: Barkod boyutunu veri uzunluğunuza göre ayarlayın. 10‑15 karakterli Code128 için sayfa genişliğinin en az %8‑10’u hedefleyin.
Sorun 3: Dosya yolu istisnaları
Belirti: FileNotFoundException veya benzeri hatalar.
Nedenler:
- Tek ters eğik çizgili sabit Windows yolları
- Çıktı dizini mevcut değil
- Dosya izin sorunları
Çözüm: İleri eğik çizgileri kullanın (her yerde çalışır) ve önce dizinleri oluşturun:
Path output = Paths.get("output/signed.pdf");
Files.createDirectories(output.getParent());
Sorun 4: Büyük PDF’lerde bellek sorunları
Belirti: Büyük belgeleri işlerken bellek yetersizliği hataları.
Çözüm: İşiniz bittiğinde Signature nesnesini kapatarak kaynakları serbest bırakın:
signature.close();
Barkod uygulamanızı test etme
Dağıtıma geçmeden önce barkodlarınızın gerçekten çalıştığından emin olun. İşte pratik bir test kontrol listesi:
1. Görsel inceleme testi
İmzalı PDF’nizi açın ve kontrol edin:
- Barkod görünür ve doğru konumlandırılmış mı?
- Net görünüyor mu (bulanık ya da pikselli değil)?
- Çevresinde yeterli boşluk var mı?
2. Tarama testi
Telefonunuzda bir barkod tarayıcı uygulaması (örneğin “Barcode Scanner” veya “QR & Barcode Reader”) kullanarak doğrulayın:
- Tarayıcı barkodunuzu okuyabiliyor mu
- Çözülen veri, kodladığınızla eşleşiyor mu
- Farklı açı ve mesafelerden çalışıyor mu
3. Çapraz platform testi
PDF’nizi farklı cihazlarda açın:
- Windows (Adobe Reader, Chrome)
- Mac (Preview, Chrome)
- Mobil cihazlar (iOS, Android)
Barkodun her yerde doğru render edildiğinden emin olun.
4. Otomatik test kodu
Çalıştırabileceğiniz basit bir test:
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());
}
Barkod imzalarının gerçek dünya kullanım örnekleri
Bu tekniğin üretim sistemlerinde gerçekten parladığı yerleri inceleyelim:
1. Sertifika oluşturma ve doğrulama
Senaryo: Tamamlama sertifikaları veren bir eğitim platformu oluşturuyorsunuz.
Uygulama: Benzersiz bir sertifika kimliği (ör. “CERT‑2024‑00123”) oluşturun ve sağ‑alt köşeye Code128 barkod olarak gömün. Barkodu taramak, API’nizin sertifika detaylarını anında almasını sağlar, manuel veri girişini ortadan kaldırır.
2. Fatura izleme sistemleri
Senaryo: Şirketiniz aylık binlerce fatura işliyor.
Uygulama: Fatura numarası ve vade tarihini, tarama ekipmanının kolayca okuyabileceği bir konuma QR kod olarak ekleyin. Otomatik sıralama sistemleri, faturaları insan müdahalesi olmadan yönlendirebilir, işlem süresini saatlerden dakikalara düşürür.
3. Hukuki sözleşme yönetimi
Senaryo: Bir hukuk firması sözleşme sürümlerini ve eklerini izlemek istiyor.
Uygulama: Her sözleşme sürümüne, sözleşme kimliği, sürüm numarası ve imza tarihini içeren benzersiz bir barkod tanımlayıcısı verilir. Denetimler sırasında tarama, tam sürüm geçmişini otomatik olarak getirir.
4. Medikal kayıt güvenliği
Senaryo: Bir hastane yetkisiz kayıt erişimini önlemek istiyor.
Uygulama: Hasta kimliği ve kayıt oluşturma zaman damgasını bir barkoda gömün. Sadece kimliği doğrulanmış cihazlar tam kaydı çözebilir ve erişebilir; her tarama, uyumluluk için bir denetim kaydı oluşturur.
Performans optimizasyon ipuçları (java belge güvenliği)
Birçok PDF imzalarken performans önemlidir. İşlerin sorunsuz çalışmasını sağlayacak bazı ipuçları:
Toplu işleme stratejisi
Bir belgeyi tek tek imzalamak yerine, toplu olarak işleyin:
for (String filePath : pdfList) {
Signature batchSignature = new Signature(filePath);
batchSignature.sign(outputPath, options);
batchSignature.close();
}
Neden yardımcı olur: Seçenek nesnesini yeniden kullanmak ve kaynakları doğru şekilde kapatmak bellek sızıntılarını önler.
Büyük PDF’ler için bellek yönetimi
50 MB’den büyük PDF’ler için:
- Birden fazla belgeyi aynı anda yüklemek yerine sıralı olarak işleyin.
- Temizliği sağlamak için try‑with‑resources kullanın.
- Gerekirse yığın boyutunu izleyin ve JVM parametrelerini ayarlayın:
-Xmx2g.
Sık kullanılan barkodları önbellekleme
Aynı barkodla birçok belge imzalıyorsanız, BarcodeSignOptions örneğini önbelleğe alın:
BarcodeSignOptions cachedOptions = new BarcodeSignOptions("STATIC_ID");
cachedOptions.setEncodeType(BarcodeEncodeType.Code128);
Barkod imzalarını ne zaman kullanmalı (ve ne zaman kullanmamalı)
Mükemmel senaryolar:
- Makine‑okunabilir belge tanımlayıcılarına ihtiyacınız var.
- Belgeler otomatik olarak taranacak veya işlenecek.
- Dijital sertifikalar olmadan müdahale‑tespitli izleme istiyorsunuz.
- Mevcut barkod altyapısıyla entegrasyon gerekli.
Uygun olmayan durumlar:
- Hukuki bağlayıcı dijital imzalara ihtiyacınız varsa (bunun yerine dijital sertifikalar kullanın).
- Belgeler yalnızca insanlar tarafından görüntülenecekse (basit bir metin filigranı yeterli olabilir).
- Barkodun sayfayı domine edeceği kadar küçük belgelerle çalışıyorsanız.
- Güvenlik gereksinimleri şifreleme zorunluluğu getiriyorsa—barkodlar görünür ve herkes tarafından taranabilir.
Yaklaşımları birleştirebilir misiniz? Kesinlikle! Birçok sistem, izleme için barkod imzalarını ve yasal geçerlilik için dijital imzaları birlikte kullanır.
Sıkça Sorulan Sorular
S: Aynı PDF’de farklı barkod tipleri kullanabilir miyim?
C: Evet! Her barkod tipi için farklı BarcodeSignOptions ile signature.sign() metodunu birden çok kez çağırın. Çakışmadıklarından emin olun.
S: Özel karakterler içeren barkodları nasıl yönetirim?
C: Code128 çoğu ASCII karakteri sorunsuz işler. Unicode veya karmaşık veri için QR kodlara geçin—UTF‑8 kodlamayı desteklerler.
S: Code128 barkodda saklayabileceğim maksimum veri nedir?
C: Teknik olarak 128 karaktere kadar, ancak 30‑40 karakterin üzerindeki okunabilirlik önemli ölçüde düşer. Daha büyük veri için QR kodları kullanın.
S: Barkod eklemek PDF dosya boyutunu önemli ölçüde artırır mı?
C: Belirgin bir artış yok—barkodlar vektör grafik olduğu için genellikle boyut ve karmaşıklığa bağlı olarak barkod başına sadece 5‑20 KB ekler.
S: Barkodları döndürebilir ya da dikey yerleştirebilir miyim?
C: Evet! Barkodunuzu döndürmek için options.setRotationAngle(90) kullanın; bu, kenar boşluğuna yerleştirmek için kullanışlıdır.
S: Çok sayfalı bir PDF’de barkodların her sayfada görünmesini nasıl sağlarım?
C: Sayfalar üzerinden döngü kurarak imzayı her birine uygulayın. Hangi sayfaların imzalanacağını kontrol etmek için GroupDocs belgelerindeki PagesSetup sınıfına bakın.
S: Barkod tarayıcım oluşturulan barkodu okuyamıyorsa ne yapmalıyım?
C: Öncelikle tarayıcının seçilen barkod tipini desteklediğini doğrulayın. Ardından barkod boyutunu artırın—çoğu tarama sorunu çubukların çok küçük olmasından kaynaklanır. Güvenilir okuma için en az 1 inç (2.54 cm) genişliğe hedefleyin.
Ek Kaynaklar
Dokümantasyon:
İndirmeler ve Lisanslama:
Topluluk ve Destek:
- Destek Forumu - GroupDocs mühendislerinin bulunduğu aktif topluluk
Son Güncelleme: 2026-07-20
Test Edilen Versiyon: GroupDocs.Signature 23.12 (Java)
Yazar: 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);