PDF Belgeleri için Java Barcode İmzası Oluşturma
Giriş
Bu öğreticide, GroupDocs.Signature kullanarak PDF dosyaları için Java barcode imzası oluşturmayı öğreneceksiniz. Ürün kodları, denetim kimlikleri veya herhangi bir yapılandırılmış veriyi bir sözleşmeye eklemeniz gerekse, barcode imzaları makine tarafından okunabilir bilgiyi anında taranabilir hâle getirirken belgeyi kriptografik olarak güvenli tutar. Kurulum, kod, özelleştirme ve en iyi uygulama ipuçları üzerinden geçerek dakikalar içinde PDF’lerinize barcode imzaları eklemeye başlayacaksınız.
Hızlı Yanıtlar
- Java’da barcode imzaları ekleyen kütüphane hangisidir? GroupDocs.Signature for Java.
- Perakende için en uygun barcode türü nedir?
GS1CompositeBar(ürün takibi için sektör standardı). - Üretim için lisansa ihtiyacım var mı? Evet – satın alınmış bir GroupDocs lisansı gereklidir.
- Hem dijital hem de barcode imzaları ekleyebilir miyim? Kesinlikle; güvenlik ve taranabilirlik için birleştirebilirsiniz.
- Kod Java 11 ve sonrası ile uyumlu mu? Evet, API JDK 8+ ile çalışır.
create barcode signature java nedir?
create barcode signature java, Java kodu kullanarak bir PDF içine programatik olarak barcode yerleştirme sürecine denir. GroupDocs.Signature, barcode görüntüsünü oluşturur, sayfada konumlandırır ve imzalı belgeyi tek bir sorunsuz işlemde kaydeder.
Neden Barcode İmzaları Kullanmalı?
Barcode imzaları, yasal olarak imzalanmış bir PDF içinde makine‑okunabilir meta veri sağlar. Anlık görsel doğrulama, tedarik zinciri taramasını kolaylaştırır ve alt sistemlerin dosyayı açmadan yapılandırılmış veri çıkarmasına olanak tanır. 60’tan fazla barcode formatı desteklenir ve GS1CompositeBar, ürün tanımlayıcıları, seri numaraları ve parti kodlarını tek bir kompakt sembolde kodlayabilir—perakende, sağlık ve finans için mükemmeldir.
Önkoşullar
- Java Development Kit: JDK 8 veya daha yeni (Java 11, 17, 21 hepsi çalışır).
- Derleme Aracı: Maven veya Gradle – tercihinize göre seçin.
- IDE: IntelliJ IDEA, Eclipse veya VS Code.
- GroupDocs.Signature kütüphanesi: Aşağıda gösterildiği gibi bağımlılığı ekleyin.
- Lisans: Geliştirme için ücretsiz deneme; üretim için satın alınmış lisans.
Projenize GroupDocs.Signature Ekleme
Maven kullanıcıları için pom.xml dosyanıza şunu ekleyin:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle kullanıcıları için build.gradle dosyanıza şunu ekleyin:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Lisans hakkında: GroupDocs, test ve geliştirme için mükemmel bir ücretsiz deneme sunar. İndirilebilir dosyayı sürümler sayfası adresinden alabilirsiniz. Üretime geçtiğinizde bir lisans satın almanız veya GroupDocs web sitesi üzerinden geçici bir lisans talep etmeniz gerekir. Ayrıntılı API kullanımı için API Referansı, adım‑adım talimatlar için Geliştirici Kılavuzu ve sorularınız için GroupDocs Forumu sayfalarına bakın. Aynı satın alma bağlantısı ayrıca satın alma sayfası olarak listelenmiştir.
Java’da GroupDocs.Signature Nasıl Kurulur?
Signature sınıfı bir belgeyi temsil eder ve imza uygulama, içerik arama ve kaynak yönetimi yöntemleri sağlar. PDF’nizi açmak ve imzalamaya hazırlamak için bir Signature örneği oluşturun. Signature sınıfı, belge yükleme, kaynak işleme ve imzalama iş akışını yöneten GroupDocs.Signature’ın çekirdek bileşenidir; tüm işlemlerin güvenli ve verimli bir şekilde yapılmasını sağlar.
import com.groupdocs.signature.Signature;
// Point to your PDF file
Signature signature = new Signature("path/to/your/document.pdf");
Önemli: Signature nesnesini her kullanım sonrası mutlaka serbest bırakın—bu, dosya tutamaçlarını serbest bırakır ve belleği temizler.
Barcode İmza Seçenekleri Nasıl Yapılandırılır?
BarcodeSignOptions sınıfı, gömeceğiniz barcode’un veri yükünden görsel stile kadar her yönünü tanımlar. Tür, boyut, renk ve konum gibi barcode‑ile ilgili tüm ayarları içeren bir kapsayıcıdır. Aşağıda, bir GTIN ve seri numarası içeren GS1CompositeBar barcode’u oluşturan minimal bir yapılandırma ve okunabilirliği artırmak için kenar boşlukları ve arka plan renklerinin nasıl ayarlanacağını gösteren bir örnek yer alıyor.
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
// Create barcode with GS1 format data
BarcodeSignOptions options = new BarcodeSignOptions("(01)03212345678906/(21)A1B2C3D4E5F6G7H8");
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
"(01)03212345678906/(21)A1B2C3D4E5F6G7H8" dizesi GS1 standardını izler:
(01)= GTIN (küresel ürün tanımlayıcısı)03212345678906= gerçek ürün kodu(21)= seri numarası tanımlayıcısıA1B2C3D4E5F6G7H8= benzersiz seri
QR kodları, Code128, DataMatrix vb. için bu metni istediğiniz gibi değiştirebilirsiniz. 60’tan fazla barcode türü desteklenir—tam liste için GroupDocs belgelerine bakın.
Barcode Nasıl Konumlandırılır ve Özelleştirilir?
Konum ve stil aynı BarcodeSignOptions nesnesi üzerinden kontrol edilir. setTop, setLeft, setWidth ve setHeight ile tam koordinatlar ve boyutlar tanımlanır. setAllPages(true) barcode’u her sayfaya otomatik ekler, setPageNumber(1) ise belirli bir sayfayı hedefler. Barcode’u döndürebilir, arka plan rengi ekleyebilir veya kenar boşluklarını ayarlayarak barcode’un mevcut içeriğin üzerine gelmesini önleyebilirsiniz.
// Set position and apply to all pages
options.setTop(200); // Set vertical position
options.setAllPages(true);
Daha hassas bir yerleşim için barcode’u belirli bir sayfaya bağlayabilir, döndürebilir veya arka plan rengi ekleyebilirsiniz:
options.setLeft(100); // 100 pixels from left edge
options.setTop(200); // 200 pixels from top
options.setWidth(300); // Barcode width in pixels
options.setHeight(100); // Barcode height in pixels
options.setPageNumber(1); // Only sign page 1 (removes setAllPages)
Görsel özelleştirme (ön/arka plan renkleri, kenar boşlukları, metin etiketleri) ek özellikler aracılığıyla yapılabilir:
options.setMargin(new Padding(10)); // Add padding around barcode
options.setBackground(new Background()); // Set background color
options.setForeColor(Color.BLACK); // Barcode color
options.setBackgroundColor(Color.WHITE); // Background color
Belge Barcode ile Nasıl İmzalanır?
Signature örneği üzerindeki sign metodu, yapılandırılmış seçenekleri uygular ve imzalı belgeyi diske yazar. Kaç imzanın uygulandığını ve herhangi bir uyarının olup olmadığını belirten bir SignResult nesnesi döndürür. Bu metod, düşük seviyeli PDF manipülasyonunu kendisi halleder; böylece PDF kütüphaneleriyle doğrudan çalışmanıza gerek kalmaz.
try {
SignResult signResult = signature.sign(outputPath, options);
System.out.println("Document signed successfully!");
System.out.println("Signed document saved to: " + outputPath);
} finally {
if (signature != null) {
signature.dispose();
}
}
Çevreleyen try‑finally bloğu, bir istisna oluşsa bile Signature nesnesinin serbest bırakılmasını garantiler, dosya tutamaç sızıntılarını önler.
SignResult nesnesini inceleyerek başarıyı doğrulayabilirsiniz:
if (signResult.getSucceeded().size() > 0) {
System.out.println("Successfully added " + signResult.getSucceeded().size() + " signature(s)");
}
Tam Çalışan Örnek
Her şeyi bir araya getirerek, bir PDF yükleyen, GS1CompositeBar barcode’u ekleyen ve imzalı dosyayı kaydeden tek bir yöntem:
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.BarcodeSignOptions;
import com.groupdocs.signature.domain.barcodes.BarcodeTypes;
public class BarcodeSigningExample {
public void signPdfWithBarcode(String inputPath, String outputPath) {
Signature signature = null;
try {
// Initialize signature
signature = new Signature(inputPath);
// Configure barcode
BarcodeSignOptions options = new BarcodeSignOptions(
"(01)03212345678906/(21)A1B2C3D4E5F6G7H8"
);
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
options.setTop(200);
options.setAllPages(true);
// Sign and save
SignResult result = signature.sign(outputPath, options);
System.out.println("Signing completed: " + result.getSucceeded().size() + " signature(s) added");
} catch (Exception e) {
System.err.println("Error signing document: " + e.getMessage());
e.printStackTrace();
} finally {
if (signature != null) {
signature.dispose();
}
}
}
}
Bu yöntem üretim‑hazırdır: girdi doğrulaması yapar, kaynakları yönetir ve sonucu raporlar.
Hem Dijital Hem Barcode İmzaları Nasıl Eklenir?
Maksimum güvenlik için önce kriptografik dijital imza ekleyin, ardından barcode’u üstüne yerleştirin. Dijital imza belgenin bütünlüğünü garanti ederken, barcode hızlı görsel doğrulama ve makine‑okunabilir veri sağlar. İlk adım için DigitalSignOptions sınıfını, ardından yukarıdaki gibi BarcodeSignOptions sınıfını kullanın.
// First, add digital signature
DigitalSignOptions digitalOptions = new DigitalSignOptions("certificate.pfx");
digitalOptions.setPassword("cert_password");
signature.sign(outputPath, digitalOptions);
// Then, add barcode on top
BarcodeSignOptions barcodeOptions = new BarcodeSignOptions("DATA");
barcodeOptions.setEncodeType(BarcodeTypes.QR);
signature.sign(outputPath, barcodeOptions);
Ortaya çıkan PDF hem yasal olarak bağlayıcı (dijital imza) hem de herhangi bir barcode tarayıcısı tarafından anında okunabilir.
Farklı Barcode Türleriyle Çalışma
Barcode formatını değiştirmek sadece bir enum değerini değiştirmek kadar basittir. Aşağıda GS1CompositeBar yerine bir QR kodu kullanan örnek yer alıyor:
// Define barcode sign options with sample text
BarcodeSignOptions options = new BarcodeSignOptions("Sample Text");
// Assign specific barcode type
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
Ve aynı değişiklik Code128 lineer barcode için:
options.setEncodeType(BarcodeTypes.QR); // QR code
options.setEncodeType(BarcodeTypes.Code128); // Code 128
options.setEncodeType(BarcodeTypes.DataMatrix); // Data Matrix
Her barcode türünün kendi veri kapasite limitleri vardır—QR kodları binlerce karakter tutabilirken, Code39 alfasayısal karakterlerle sınırlıdır.
Gerçek Dünya Kullanım Senaryoları
Tedarik Zinciri Yönetimi
Gönderi manifestolarına GS1CompositeBar eklemek, depo personelinin sipariş numaralarını, destinasyonları ve parti kodlarını PDF’yi açmadan taramasını sağlar.
BarcodeSignOptions options = new BarcodeSignOptions(
"(01)" + gtin + "/(21)" + serialNumber + "/(10)" + batchNumber
);
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
Sağlık Dokümantasyonu
Onam formlarındaki QR kodları, belgeyi doğru hasta kaydına otomatik olarak dosyalamak için taranabilir.
String patientData = "PATIENT_ID:" + patientId + "|DOC_TYPE:CONSENT|DATE:" + dateString;
BarcodeSignOptions options = new BarcodeSignOptions(patientData);
options.setEncodeType(BarcodeTypes.QR);
Finansal Hizmetler
Barcode içinde kodlanmış işlem kimlikleri, denetçilerin basit bir tarama ile uyumluluğu doğrulamasına olanak tanır.
String complianceData = "TXN:" + transactionId + "|AGENT:" + agentId + "|BRANCH:" + branchCode;
BarcodeSignOptions options = new BarcodeSignOptions(complianceData);
options.setEncodeType(BarcodeTypes.PDF417);
Üretim Kalite Kontrolü
Parti numaraları ve denetçi kimlikleri içeren barcode’larla imzalanan denetim raporları, kök‑neden analizini anında yapar.
String qcData = "BATCH:" + batchNumber + "|INSPECTOR:" + inspectorId + "|RESULT:" + passFailStatus;
BarcodeSignOptions options = new BarcodeSignOptions(qcData);
options.setEncodeType(BarcodeTypes.DataMatrix);
Yaygın Uygulama Sorunları
Sorun 1: “File is already in use” İstisnası
Cevap: Önceki bir Signature örneği serbest bırakılmadıysa dosya kilitli kalır. İmzalama kodunu her zaman try‑finally bloğuna sarın ve signature.dispose() çağırın.
Signature signature = null;
try {
signature = new Signature(filePath);
// ... your code ...
} finally {
if (signature != null) {
signature.dispose();
}
}
Sorun 2: Barcode PDF’de Görünmüyor
Cevap: setTop/setLeft değerlerinin sayfa sınırları içinde olduğundan emin olun, barcode’un genişlik/yüksekliğini artırın ve ön/arka plan renklerinin sayfa arka planıyla kontrast oluşturduğunu kontrol edin.
// Make sure dimensions are reasonable
options.setTop(100); // Not 10000
options.setLeft(100);
options.setWidth(300); // At least 200 pixels for readability
options.setHeight(100);
// Ensure contrast
options.setForeColor(Color.BLACK);
options.setBackgroundColor(Color.WHITE);
Sorun 3: “Invalid Barcode Data” İstisnası
Cevap: GS1 barcode’ları sıkı parantez notasyonu gerektirir. Doğru Uygulama Tanımlayıcılarını (ör. (01), (21)) kullanın ve desteklenmeyen karakterlerden kaçının.
// Correct:
"(01)03212345678906/(21)ABC123"
// Incorrect:
"03212345678906ABC123"
Sorun 4: Büyük PDF’lerde OutOfMemoryError
Cevap: JVM yığınını artırın (-Xmx4G) ve çok büyük belgeler için setAllPages(true) yerine sayfaları tek tek imzalamayı düşünün.
java -Xmx2G -jar your-application.jar
Sorun 5: Barcode Tarama Başarısız
Cevap: Barcode’un en az 200 × 100 px olduğundan, yüksek kontrast renkler kullandığından ve PDF sıkıştırmasıyla bozulmadığından emin olun.
// Increase size
options.setWidth(400);
options.setHeight(150);
// Maximize contrast
options.setForeColor(Color.BLACK);
options.setBackgroundColor(Color.WHITE);
// Add quiet zone (blank space around barcode)
options.setMargin(new Padding(10));
Güvenlik ve Doğrulama
Barcode İmzaları Güvenli mi?
Tek başına bir barcode kriptografik olarak korunmaz, bu yüzden herkes yeni bir barcode oluşturabilir. Hem özgünlük hem de taranabilirlik için dijital imza ile birleştirin. Çift‑imza deseni (önce dijital, sonra barcode) yasal geçerlilik ve operasyonel kolaylık sağlar.
Barcode Verisini Doğrulama
Tarama sonrası, belgenin dijital imzasının hâlâ geçerli olduğunu ve barcode yükünün beklenen desenlerle eşleştiğini kontrol edin. Barcode içeriğini otomatik olarak çıkarmak ve doğrulamak için GroupDocs’ün search() API’sını BarcodeSearchOptions ile kullanın.
public boolean validateScannedBarcode(String scannedData, String documentPath) {
// Verify digital signature first
if (!verifyDigitalSignature(documentPath)) {
return false;
}
// Validate barcode format
if (!scannedData.matches("(01)\\d{14}/(21)[A-Z0-9]+")) {
return false;
}
// Check against database
String productId = extractProductId(scannedData);
return database.productExists(productId);
}
Performans Düşünceleri
Kaynak Yönetimi
Her işlem sonrası Signature nesnelerini mutlaka serbest bırakın:
signature.dispose();
Birçok dosya işlenirken, belge başına yeni bir Signature oluşturup serbest bırakın:
for (String filePath : documentPaths) {
Signature signature = null;
try {
signature = new Signature(filePath);
// ... signing logic ...
} finally {
if (signature != null) {
signature.dispose();
}
}
}
Toplu İşleme
Küçük partiler (< 100 dosya) için sıralı işleme basittir:
for (String path : paths) {
signDocument(path);
}
Daha büyük iş yükleri için paralel işleme hızı artırabilir—ancak I/O baskısını izleyin ve iş parçacıklarını 4‑8 ile sınırlayın:
paths.parallelStream().forEach(path -> signDocument(path));
Büyük PDF’ler için Bellek Optimizasyonu
Yığın boyutunu artırın, sayfaları tek tek işleyin ve her adım sonrası referansları temizleyin. Bu, 50 MB’dan büyük belgelerde OutOfMemoryError oluşmasını önler.
Barcode Seçeneklerini Önbellekleme
Aynı barcode yapılandırmasını birçok dosyada yeniden kullanıyorsanız, BarcodeSignOptions örneğini önbelleğe alın:
// Create once, reuse many times
private static BarcodeSignOptions createStandardBarcodeOptions(String data) {
BarcodeSignOptions options = new BarcodeSignOptions(data);
options.setEncodeType(BarcodeTypes.GS1CompositeBar);
options.setTop(200);
options.setAllPages(true);
return options;
}
İleri Düzey Özellikler
Tek Belgede Birden Çok İmza
Farklı seçenek nesneleriyle sign metodunu birden çok kez çağırarak birkaç barcode (veya dijital imza) ekleyin:
// Add QR code in top-left
BarcodeSignOptions qrOptions = new BarcodeSignOptions("https://example.com");
qrOptions.setEncodeType(BarcodeTypes.QR);
qrOptions.setTop(50);
qrOptions.setLeft(50);
signature.sign(outputPath, qrOptions);
// Add GS1 barcode in bottom-right
BarcodeSignOptions gs1Options = new BarcodeSignOptions("(01)03212345678906");
gs1Options.setEncodeType(BarcodeTypes.GS1CompositeBar);
gs1Options.setTop(700);
gs1Options.setLeft(400);
signature.sign(outputPath, gs1Options);
Dinamik Barcode İçeriği
Barcode verisini belge meta verilerinden, zaman damgalarından veya veritabanı sorgularından üretin:
// Extract data from PDF or database
String orderId = extractOrderIdFromPdf(filePath);
String timestamp = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME);
String barcodeData = String.format("ORDER:%s|TIME:%s", orderId, timestamp);
BarcodeSignOptions options = new BarcodeSignOptions(barcodeData);
Spring Boot ile Entegrasyon
PDF alıp barcode ekleyip imzalı dosyayı döndüren bir REST uç noktası yayınlayın:
@Service
public class DocumentSigningService {
public void signWithBarcode(MultipartFile file, String barcodeData) {
// ... implementation ...
}
}
REST API Örneği
İmzalama servisine delegasyon yapan minimal bir denetleyici:
@PostMapping("/sign-document")
public ResponseEntity<byte[]> signDocument(
@RequestParam("file") MultipartFile file,
@RequestParam("barcode") String barcodeData
) {
// Sign document and return as byte array
}
Sık Sorulan Sorular
S: GS1CompositeBar barcode nedir?
C: GS1CompositeBar, ürün kimlikleri, seri numaraları ve diğer verileri tek bir taranabilir sembolde saklamak için lineer ve 2D bileşenleri birleştiren bir barkoddur; perakende ve lojistikte yaygın olarak kullanılır.
S: GS1CompositeBar dışındaki barcode türlerini kullanabilir miyim?
C: Evet—GroupDocs.Signature 60’tan fazla türü destekler; QR, Code128, DataMatrix, PDF417 ve Aztec dahil. Formatı değiştirmek için setEncodeType() değerini değiştirin.
S: Üretim kullanımında lisansa ihtiyacım var mı?
C: Üretim dağıtımları için geçerli bir GroupDocs lisansı gereklidir. Geliştirme ve test için ücretsiz bir deneme mevcuttur.
S: İmzalı PDF’lerden barcode tarayıcılar okuyabilir mi?
C: Kesinlikle, barcode en az 200 × 100 px ve yeterli kontrast sağlandığı sürece. Akıllı telefon tarama uygulamaları ekranda çalışır; donanım tarayıcıları ise basılı kopyalarda çalışır.
S: İmzalama sırasında hataları nasıl yönetirim?
C: Kodunuzu try‑catch bloklarıyla sarın, tam istisna izlerini kaydedin ve her zaman finally bloğunda signature.dispose() çağırarak kaynakları serbest bırakın.
S: Başka belge formatlarını imzalayabilir miyim?
C: Evet—GroupDocs.Signature DOCX, XLSX, PPTX, görüntüler ve daha fazlasını da destekler. Sadece giriş dosyasının uzantısını değiştirin; API aynı kalır.
S: Dosya boyutu limitleri var mı?
C: Katı bir limit yok, ancak 50 MB üzerindeki belgeler daha büyük bir JVM yığını ve sayfa‑sayfa işleme gerektirebilir.
S: Bulut depolamada bulunan PDF’leri nasıl imzalarım?
C: Dosyayı geçici bir yerel yola indirin, imzayı uygulayın, ardından bulut kovasına geri yükleyin. Geçici dosyaları temizlemeyi unutmayın.
Sonuç
Artık PDF belgeleri için Java barcode imzası oluşturma konusunda eksiksiz, üretim‑hazır bir kılavuza sahipsiniz. Kriptografik dijital imzaları makine‑okunabilir barcode’larla birleştirerek tedarik zinciri, sağlık, finans ve üretim senaryolarında hem yasal geçerlilik hem de operasyonel verimlilik elde edersiniz. Farklı barcode türleriyle denemeler yapın, kodu mevcut hizmetlerinize entegre edin ve büyük ölçekli dağıtımlar için toplu işleme seçeneklerini keşfedin.
Son Güncelleme: 2026-05-21
Test Edilen Versiyon: GroupDocs.Signature 23.10 for Java
Yazar: GroupDocs
String filePath = "YOUR_DOCUMENT_DIRECTORY" + "/sample.pdf";
String fileName = new java.io.File(filePath).getName();
String outputPath = "YOUR_OUTPUT_DIRECTORY" + "/SignedWithBarcodeGS1CompositeBar/" + fileName;
String documentDir = System.getenv("DOCUMENT_DIR");
String outputDir = System.getenv("OUTPUT_DIR");
Signature signature = new Signature(filePath);