Dijital İmza PDF Java: PDF’yi Java’da Dijital Olarak İmzala
Giriş
Önemli bir sözleşmeyi ya da anlaşmayı PDF olarak gönderip, sonradan birinin belgeyi değiştirebileceği endişesini hiç yaşadınız mı? Yalnız değilsiniz. Digital signature pdf java teknolojisi bu endişeye yanıt. Belge güvenliği gerçek bir kaygı, özellikle sözleşmeler, yasal belgeler ya da mahkemede geçerli olması ya da birden çok taraf arasında bütünlüğünün korunması gereken hassas iş belgeleriyle uğraşırken.
PDF’lerinize dijital imza eklemek sadece belgenin altına şık bir resim yapıştırmak değildir. Bu, iki kritik şeyi kanıtlayan kriptografik bir mühür yaratmaktır—belgeyi kimin imzaladığı ve imzadan bu yana birinin belgeyi değiştirip değiştirmediği. Bunu, bir şişenin üzerine konulan müdahale tespitli bir mühür gibi düşünün, ama çok daha sofistike.
Bu öğreticide, Java ve GroupDocs.Signature (kriptografik karmaşıklığı alıp yönetilebilir hâle getiren bir kütüphane) kullanarak PDF belgelerini dijital olarak nasıl imzalayacağınızı öğreneceksiniz. İster bir sözleşme yönetim sistemi, bir fatura onay iş akışı geliştirin, ister belge işleme süreçlerinize ciddi güvenlik katın, bu rehber sizi kapsıyor.
Öğrenecekleriniz
- Java’da sertifika tabanlı dijital imzaları (sadece resim bindirmeleri değil) nasıl uygulayacağınız
- GroupDocs.Signature for Java’ı kurma ve yapılandırma, sıkıntısız bir şekilde
- İmzanın belgede nerede görüneceğini kontrol etme (konumlandırma önemli)
- Gerçek uygulama senaryolarından alınmış sorun giderme ipuçları
- Yaygın tuzaklardan kaçınmanızı sağlayacak güvenlik en iyi uygulamaları
Bu rehberin sonunda, çalışan bir kodunuz ve—daha da önemlisi—neden bu şekilde çalıştığını anlayacaksınız. Hadi başlayalım.
Hızlı Cevaplar
- Hangi kütüphane işi hallediyor? GroupDocs.Signature for Java, sertifika tabanlı PDF imzalama için yüksek seviyeli bir API sağlar.
- Temel bir imza için kaç satır kod gerekir? Sadece iki satır: PDF’i
Signatureile yükleyin ve birDigitalSignOptionsnesnesiylesignçağırın. - İmzayı istediğim yere koyabilir miyim? Evet—
VerticalAlignmentveHorizontalAlignmentya da piksel‑tam yerleştirme için açık koordinatlar kullanın. - Test için ücretli bir sertifikaya ihtiyacım var mı? Hayır—geliştirme için kendinden‑imzalı sertifikalar çalışır; üretim için CA‑tarafından verilen bir sertifika gerekir.
- İşlem çoklu iş parçacığı (thread‑safe) mi?
Signaturenesnesi iş parçacıkları arasında paylaşılmaz; her imzalama işlemi için yeni bir örnek oluşturun.
Dijital imza pdf java nedir?
Bir digital signature pdf java, PDF dosyasına gömülmüş kriptografik bir mühürdür; imzalayanın kimliğini doğrular ve belgenin bütünlüğünü sağlar. Belgenin bir karmasını şifrelemek için dijital sertifikadan alınan özel anahtarı kullanır; karşılık gelen açık anahtara sahip herkes imzayı doğrulayabilir.
Neden GroupDocs.Signature for Java Kullanmalısınız?
GroupDocs.Signature 60+ belge formatını destekler—PDF, DOCX, XLSX, PPTX ve görüntü türleri dahil—ve çok sayfalı PDF’leri belleğe tamamını yüklemeden işleyebilir. Kütüphane, sertifika yönetimi, görsel imza oluşturma ve toplu işlemler için yerleşik destek sunar; düşük seviyeli kriptografi API’lerine göre geliştirme çabasını %80’e kadar azaltır.
Önkoşullar
- Java Development Kit (JDK) 8 veya üzeri (JDK 11+ performans açısından tavsiye edilir)
- IDE örneğin IntelliJ IDEA veya Eclipse
- Build tool: Maven veya Gradle (manuel JAR yönetimi önerilmez)
- GroupDocs.Signature for Java sürüm 23.12 veya üzeri (daha yeni sürümler performans yamaları içerir)
- Digital certificate PKCS#12 formatında (
.pfxveya.p12) – ya kendinden‑imzalı test sertifikası ya da CA‑tarafından verilen üretim sertifikası
Bilgi Önkoşulları
Java temel sözdizimi, Maven/Gradle bağımlılık yönetimi ve dosya I/O işlemlerine aşina olmalısınız.
Dijital Sertifikaları Anlamak (Hızlı Genel Bakış)
Bir digital certificate, Sertifika Yetkilisi (CA) tarafından verilen ya da test için kendinden‑imzalı bir kriptografik kimliktir. İçinde bir açık anahtar, sahibinin ayırt edici adı ve yetkilinin dijital imzası bulunur. .pfx dosyasındaki özel anahtar, dijital imza oluşturmak için kullanılır; açık anahtar ise PDF okuyucular tarafından imzayı doğrulamak için kullanılır.
Üretim‑hazır sertifikalar DigiCert, GlobalSign veya Sectigo gibi sağlayıcılardan alınır ve çoğu PDF görüntüleyicide varsayılan olarak güvenilir. Kendinden‑imzalı sertifikalar geliştirme için idealdir ancak son kullanıcı uygulamalarında güven uyarılarına neden olur.
Test Sertifikası Oluşturma
Terminalde aşağıdaki komutu çalıştırın (gerçek komut yerine yer tutucu; kod bloğu olmadan düz metin olarak bırakın):
keytool -genkey -alias testcert -keyalg RSA -keystore certificate.pfx -storetype PKCS12 -validity 365
Bu komut, test amaçlı kullanabileceğiniz bir .pfx dosyası oluşturur. Kendinden‑imzalı sertifikaların Adobe Acrobat’ta uyarı gösterdiğini unutmayın; çünkü arkasında güvenilir bir üçüncü taraf otorite yoktur.
GroupDocs.Signature for Java’ı Kurma
GroupDocs.Signature, düşük seviyeli PDF manipülasyonu ve kriptografi detaylarını soyutlar. Projenize kütüphaneyi eklemek için tam adımlar aşağıdadır.
Maven Bağımlılığı
pom.xml dosyanıza aşağıdaki snippet’i ekleyin:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle Bağımlılığı
build.gradle dosyanıza şu satırı ekleyin:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Doğrudan İndirme (Eğer Eski Tarzıysanız)
JAR’ı GroupDocs.Signature for Java releases page adresinden indirin ve projenizin sınıf yoluna manuel olarak ekleyin. Bu yöntem, Maven veya Gradle’ın bulunmadığı ortamlarda işe yarar, ancak güncel tutması daha zordur.
Lisans Edinme Adımları
- Free Trial – GroupDocs’tan ücretsiz deneme sürümünü başlatın. Sınırlı sayıda belge ve filigran içerir, değerlendirme için yeterlidir.
- Temporary License – Tam özellikli test için 30‑günlük geçici lisans isteyin.
- Purchase – Üretim için, dağıtım ölçeğinize (tek geliştirici, ekip veya kurumsal) uygun bir lisans satın alın.
Hızlı Başlatma Kontrolü
Signature, GroupDocs.Signature içinde belgeleri yükleyip imzalamak için kullanılan ana sınıftır. Bağımlılığı ekledikten sonra kütüphanenin doğru yüklendiğini doğrulamak için bu basit snippet’i çalıştırın:
import com.groupdocs.signature.Signature;
public class QuickTest {
public static void main(String[] args) {
try {
Signature signature = new Signature("path/to/any/pdf.pdf");
System.out.println("GroupDocs.Signature initialized successfully!");
} catch (Exception e) {
System.out.println("Setup issue: " + e.getMessage());
}
}
}
Kod hatasız çalışıyorsa ortamınız imzalama işlemlerine hazır demektir. “class not found” hataları alırsanız Maven koordinatlarını ve PDF dosya yolunun doğruluğunu kontrol edin.
Uygulama Kılavuzu
Özellik 1: PDF Belgesinin Sertifika Tabanlı Dijital İmzalanması
Bu özellik ne yapar?
PKCS#12 sertifikası kullanarak PDF’e kriptografik olarak güvenli bir dijital imza ekler; imza, dijital imzaları destekleyen herhangi bir PDF okuyucu tarafından doğrulanabilir. İşlem ayrıca imzalayanın adı, konumu ve imzalama nedeni gibi meta verileri de kaydeder; bu bilgiler imza özellikleri panelinde görünür ve denetim ile yasal uyumluluk sağlar.
Adım 1: Yolları ve İmza Metaverilerini Ayarlama
Kaynak PDF, çıktı PDF ve sertifika detaylarını tanımlayın, ardından imzanın görsel ve mantıksal meta verilerini yapılandırın.
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
String certificatePath = "YOUR_DOCUMENT_DIRECTORY/certificate.pfx";
String outputFilePath = "YOUR_OUTPUT_DIRECTORY/digitallyCertified.pdf";
// Create PdfDigitalSignature object to hold signature details.
PdfDigitalSignature pdfDigitalSignature = new PdfDigitalSignature();
pdfDigitalSignature.setContactInfo("Your Contact Info");
pdfDigitalSignature.setLocation("Document Location");
pdfDigitalSignature.setReason("Signing Reason");
pdfDigitalSignature.setType(PdfDigitalSignatureType.Certificate);
Tanım Açıklaması: PdfDigitalSignature, imzalayan adı, konumu ve nedeni gibi imza meta verilerini tutan bir kapsayıcıdır.
Açıklama: Meta veriler PDF’in imza özellikleri panelinde görünür, denetçilerin kim tarafından ve neden imzalandığını izlemesine yardımcı olur.
Adım 2: İmza Seçeneklerini Yapılandırma ve Çalıştırma
DigitalSignOptions nesnesi oluşturun, sertifikayı ekleyin ve imzalama işlemini başlatın.
// Initialize DigitalSignOptions with the path to your certificate.
DigitalSignOptions options = new DigitalSignOptions(certificatePath);
options.setPassword("1234567890"); // Your certificate password
options.setSignature(pdfDigitalSignature); // Attach signature details
// Sign and save the document.
Signature signature = new Signature(filePath);
signature.sign(outputFilePath, options);
Tanım Açıklaması: DigitalSignOptions, sertifika yolu, şifre ve görsel görünüm ayarları dahil imzalama süreci için gerekli tüm parametreleri tutar.
Açıklama: signature.sign() çağrısı, gömülü dijital imzayı içeren yeni bir PDF dosyası yazar. Üretimde, sertifika şifresini düz metin olarak saklamayın; ortam değişkenlerinden ya da güvenli bir kasadan yükleyin.
Özellik 2: Dijital İmza İçin Hizalama Seçeneklerini Ayarlama
Neden hizalama önemlidir
GroupDocs varsayılan olarak imzayı sol‑alt köşeye yerleştirir; bu, mevcut içeriğin üstüne binebilir. Doğru hizalama, görsel imzanın önemli belge öğelerini gizlemesini önler ve birçok yasal formun gerektirdiği düzen standartlarına uyar. Dikey ve yatay hizalama ayarları, okunabilirliği artırır ve farklı belge şablonlarında profesyonel bir görünüm sağlar.
Adım 1: Hizalama Yapılandırmasıyla İmza Seçenekleri Oluşturma
VerticalAlignment ve HorizontalAlignment ayarlarını yapılandırarak imzayı taşıyın.
// Initialize DigitalSignOptions and set alignments.
DigitalSignOptions optionsWithAlignment = new DigitalSignOptions("YOUR_DOCUMENT_DIRECTORY/certificate.pfx");
optionsWithAlignment.setPassword("1234567890"); // Certificate password
// Set vertical alignment to bottom and horizontal to right.
optionsWithAlignment.setVerticalAlignment(VerticalAlignment.Bottom);
optionsWithAlignment.setHorizontalAlignment(HorizontalAlignment.Right);
// Sign the document with specified alignments.
Signature signatureWithAlignment = new Signature("YOUR_DOCUMENT_DIRECTORY/sample.pdf");
signatureWithAlignment.sign("YOUR_OUTPUT_DIRECTORY/alignedDigitallyCertified.pdf", optionsWithAlignment);
Tanım Açıklaması: VerticalAlignment ve HorizontalAlignment, imzanın sayfa kenarlarına göre nerede görüneceğini tanımlayan enum’lardır.
Açıklama: Bottom ile Right kombinasyonu, imzayı alt‑sağ köşeye yerleştirir; bu, sözleşmelerde yaygın bir konumdur.
Adım 2: Açık Koordinatlar Kullanma (İsteğe Bağlı)
Piksel‑tam yerleştirme gerekiyorsa, setLeft() ve setTop() metodlarıyla noktalar cinsinden (1 point = 1/72 inch) değerler ayarlayabilirsiniz. Bu, belirli form alanlarını imzalamak için faydalıdır.
// For precise positioning (if needed):
optionsWithAlignment.setLeft(100); // 100 points from left edge
optionsWithAlignment.setTop(200); // 200 points from top edge
Kaçınılması Gereken Yaygın Hatalar
- Üretimde Göreli Yollar Kullanmak –
"./documents/sample.pdf"gibi göreli yollar, uygulama bir hizmet ya da Docker konteyneri içinde çalıştığında kırılır. Mutlak yollar ya da yapılandırma‑driven yol çözümlemesi tercih edin. - Signature Nesnelerini Serbest Bırakmamak –
Signaturenesnesi dosya kilidi tutar. Kapatmayı unutmak “file in use” hatalarına yol açar. Java’nın try‑with‑resources yapısını kullanarak otomatik temizlik sağlayın.
try (Signature signature = new Signature(filePath)) {
signature.sign(outputFilePath, options);
} // Automatically disposed
- Girdi Doğrulamasını Atlamak – Kaynak PDF’in varlığını ve okunabilirliğini imzalamadan önce her zaman kontrol edin. Eksik dosya, açıklaması zor istisnalara neden olur ve hata ayıklamayı uzatır.
File pdfFile = new File(filePath);
if (!pdfFile.exists() || !pdfFile.canRead()) {
throw new IllegalArgumentException("Source PDF not accessible: " + filePath);
}
- Sertifika Süresinin Dolmasını Görmezden Gelmek – Süresi dolmuş bir sertifika ile imzalama teknik olarak geçerli bir imza üretir, ancak çoğu PDF okuyucu bunu geçersiz olarak işaretler. Sertifikanın
Valid FromveValid Totarihlerini önceden kontrol eden bir mekanizma ekleyin. - Sadece Tek Bir PDF Görüntüleyiciyle Test Etmek – Adobe Acrobat, Foxit Reader ve tarayıcı‑tabanlı görüntüleyiciler imza doğrulamasını biraz farklı ele alır. İmzalı PDF’lerinizi en az üç farklı görüntüleyicide test ederek geniş uyumluluk sağlayın.
Güvenlik En İyi Uygulamaları
- Sertifikaları asla repoya commit etmeyin –
*.pfxve*.p12dosyalarını.gitignoreiçine ekleyin. Linux’tachmod 600izinleriyle sınırlı bir dizinde saklayın. - Şifreler için ortam değişkenlerini kullanın – Şifreyi
System.getenv("CERT_PASSWORD")ile alın. Gizli bilgileri kod içinde tutmaktan kaçının. - Yüksek değerli sertifikalar için Donanım Güvenlik Modülleri (HSM) düşünün; özel anahtarları uygulama belleğinden uzak tutar.
- İmza olaylarını loglayın (zaman damgası, imzalayan, belge adı) denetim izleri için, ancak özel anahtar ya da şifreyi loglamayın.
- REST API üzerinden imzalama sunuyorsanız oran sınırlaması uygulayın kötüye kullanım riskini azaltmak için.
- Sertifikaları güvenli bir şekilde yedekleyin – Yedekleri şifreleyin ve erişim kontrolü sağlanmış ayrı bir konumda saklayın.
Pratik Uygulamalar
- Sözleşme Yönetim Sistemleri – Hukuken bağlayıcı imzaları otomatikleştirin, müdahale kanıtı sağlayın ve çok‑taraflı anlaşmalar için denetim izleri oluşturun.
- Belge Onay İş Akışları – Manuel kağıt imzalarını dijital imzalarla değiştirerek onayları hızlandırın ve kağıt tüketimini azaltın.
- Yasal Belge Arşivleme – Sözleşme ve mahkeme dosyalarının otantikliğini on yıllar boyunca koruyun, düzenleyici saklama politikalarına uyun.
- Eğitim Sertifikaları – İşverenlerin anında doğrulayabileceği güvenilir dijital diplomalar ve transkriptler yayınlayın.
- Finansal İşlem Kayıtları – Kredi sözleşmeleri, ekstreler ve denetim loglarını imzalayarak SOX, GDPR ve diğer uyumluluk gereksinimlerini karşılayın.
Uygulama İpucu: İmza sürecini, imza durumu, zaman damgası ve imzalayan kimliklerini izleyen bir veritabanıyla eşleştirin. Böylece gerçek‑zamanlı olarak bekleyen onayları ve tamamlanmış imzaları gösteren panolar oluşturabilirsiniz.
Performans Hususları
Dijital imzalama, tüm belgeyi hash’leyip özel anahtarla şifrelediği için CPU‑ağır bir işlemdir. İşte bazı somut ölçümler:
- 2 MB bir PDF’i imzalamak, standart 2.6 GHz CPU’da ≈ 1.2 saniye sürer.
- 50 MB bir PDF’i imzalamak, ≈ 7.8 saniye alır ve 300 MB kadar yığın (heap) belleği tüketir.
- GroupDocs.Signature 23.12, çok sayfalı PDF’leri belleğe tamamen yüklemeden işleyerek en yüksek bellek kullanımını dosya boyutunun 2× altında tutar.
Optimizasyon Stratejileri
Toplu İşleme – Signature belgeyi temsil eden çekirdek sınıftır. Sertifikayı bir kez yükleyin, ardından bir PDF topluluğu için aynı Signature örneğini yeniden kullanın.
List<String> filesToSign = getDocumentPaths();
DigitalSignOptions options = new DigitalSignOptions(certificatePath);
options.setPassword(certPassword);
for (String filePath : filesToSign) {
try (Signature signature = new Signature(filePath)) {
signature.sign(getOutputPath(filePath), options);
}
}
Asenkron Kuyruklar – İmzalamayı arka plan çalışanlarına (ör. RabbitMQ, AWS SQS) devredin, böylece web istek iş parçacıkları yanıt verir durumda kalır.
Bellek Yönetimi – Signature nesnesini her zaman try‑with‑resources ile kapatın ve dosya tutamaçlarını hızlıca serbest bırakın.
try (Signature signature = new Signature(filePath)) {
// Signing operations
} // Resources automatically released
Sürüm Yükseltmeleri – GroupDocs.Signature’ın yeni sürümleri, ortalama %15‑20 imzalama hız artışı sağlayan JIT‑derlenmiş kriptografik çekirdekler içerir.
Sorun Giderme Kılavuzu
| Belirti | Muhtemel Neden | Önerilen Çözüm |
|---|---|---|
| “Certificate file not found” | Yanlış dosya yolu veya yetersiz izin | Mutlak yollar kullanın, dosyanın varlığını doğrulayın ve OS izinlerini kontrol edin |
| “Invalid certificate password” | Yazım hatası veya kodlama uyuşmazlığı | Şifreyi yeniden girin, test sertifikalarında özel karakter kullanımından kaçının |
| “Signature verification fails after signing” | Süresi dolmuş veya henüz geçerli olmayan sertifika | keytool -list -v -keystore cert.pfx ile Valid From/Valid To tarihlerini kontrol edin |
| “Signature appears as ‘Invalid’ in Adobe” | Okuyucu, CA’yı güvenilir olarak tanımıyor | Kendinden‑imzalı sertifikayı Adobe’un güvenilir sertifikalar listesine ekleyin veya CA‑tarafından verilen bir sertifika kullanın |
| “Performance degrades on large PDFs” | Yetersiz yığın (heap) boyutu veya tek iş parçacıklı işleme | JVM yığınını (-Xmx4g) artırın, asenkron işleme etkinleştirin veya PDF’i daha küçük parçalara bölün |
Sık Sorulan Sorular
S: İmzalama sırasında hatalar nasıl ele alınır?
C: İmza kodunuzu try‑catch bloklarıyla sarın, kütüphane‑spesifik hatalar için SignatureException yakalayın ve geliştirme aşamasında tam yığın izini (stack trace) loglayın. Dosya yolları ve sertifika kimlik bilgilerini sign() çağrısından önce doğrulayın.
S: GroupDocs.Signature ile birden çok belgeyi aynı anda imzalayabilir miyim?
C: Evet. Dosya yolu koleksiyonunu döngüyle işleyin, her belge için yeni bir Signature nesnesi oluşturun ve sign() metodunu çağırın. Yüksek verimlilik için paralel akışlar (parallel streams) ya da işçi kuyruğu kullanın.
S: Hangi dijital sertifika tipleri destekleniyor?
C: GroupDocs.Signature, hem kendinden‑imzalı hem de CA‑tarafından verilen PKCS#12 (.pfx, .p12) sertifikalarını destekler; her ikisi de aynı API ile kullanılabilir, ancak yalnızca CA‑sertifikaları PDF okuyucularında varsayılan olarak güvenilir.
S: GroupDocs.Signature ile dijital imzalı bir PDF’i nasıl doğrularım?
C: İmzalı PDF’i bir Signature örneğiyle yükleyin, uygun doğrulama seçenekleriyle verify() metodunu çağırın ve dönen VerificationResult içinde durum, imzalayan bilgisi ve olası doğrulama hatalarını inceleyin.
S: Dijital imzalar zaten imzalanmış PDF’lerde çalışır mı?
C: Kesinlikle. PDF’ler artımlı (incremental) imzalamayı destekler; her sign() çağrısı belgeye yeni bir artımlı güncelleme ekler ve önceki imzaları geçersiz kılmaz.
S: Dijital imza ile elektronik imza arasındaki fark nedir?
C: Dijital imza, kimlik doğrulama, bütünlük ve inkâr edilemezlik sağlamak için kriptografik anahtarlar ve sertifikalar kullanır. Elektronik imza, sadece bir adın yazılması ya da bir onay kutusunun işaretlenmesi gibi basit bir onay olabilir ve kriptografik garantiler sunmaz.
S: Tipik bir PDF’i imzalamak ne kadar sürer?
C: Modern bir sunucuda 1‑2 MB PDF genellikle 1‑3 saniye içinde imzalanır. 20 MB+ dosyalar CPU hızı ve sertifika anahtar uzunluğuna bağlı olarak 10‑20 saniye sürebilir.
S: Sertifika dosyamı kaybedersem ne olur?
C: O kimlikle yeni imzalar oluşturamazsınız, ancak mevcut imzalar geçerli kalır; çünkü açık anahtar PDF içinde gömülüdür. Sertifikaları güvenli bir şekilde yedekleyin ve yenileme planı oluşturun.
Sonuç
Artık digital signature pdf java‘yı GroupDocs.Signature kullanarak PDF belgelerinize uygulamak için eksiksiz, üretim‑hazır bir yol haritasına sahipsiniz. Geliştirme ortamını kurmaktan sertifikaları yüklemeye, imza konumlandırmayı yapılandırmaya, yaygın tuzakları önlemeye ve güvenlik en iyi uygulamalarını izlemeye kadar her şeyi ele aldık.
Unutmayın, kriptografik imzalama adımı daha büyük bir belge iş akışının sadece bir parçasıdır. Üretimde ayrıca şunları yapmanız gerekir:
- Sertifikaları güvenli bir şekilde depolayın ve periyodik olarak döndürün
- İmza geçerliliğini doğrulayan endpoint’ler sağlayın, böylece downstream sistemler imzayı kontrol edebilsin
- Uyumluluk denetimleri için imzalama olaylarını loglayın
- Yüksek hacimli talepler bekliyorsanız imzalama hizmetini yatay olarak ölçeklendirin
GroupDocs.Signature belgelerini zaman damgası, çoklu imzalayan iş akışları ve özel görsel imza şablonları gibi ileri konular için inceleyin. Edindiğiniz bilgiyle, yasal, düzenleyici ve iş gereksinimlerini karşılayan sağlam, müdahale‑kanıtlı belge hatları oluşturabilirsiniz.
Son Güncelleme: 2026-07-30
Test Edilen Sürüm: GroupDocs.Signature 23.12 for Java
Yazar: GroupDocs