كيفية إنشاء توقيع رقمي PDF في Java باستخدام GroupDocs.Signature
مقدمة
هل أرسلت عقدًا مهمًا عبر البريد الإلكتروني، ثم انتظرت أيامًا حتى يقوم شخص ما بطباعته، توقيعه، مسحه ضوئيًا، وإرساله مرة أخرى؟ نعم، كلنا مررنا بذلك. في عالمنا الرقمي السريع اليوم، هذا التأخير ليس مجرد إزعاج—إنه قاتل للإنتاجية.
إنشاء توقيع رقمي PDF في Java يحل هذه المشكلة بأناقة. التوقيعات الرقمية ملزمة قانونيًا في معظم الولايات القضائية، أكثر أمانًا من العلامات اليدوية، ويمكن تطبيقها في ثوانٍ بدلاً من أيام. بالنسبة لمطوري Java الذين يبنون بوابات عقود، خطوط موافقة فواتير، أو أي نظام يتعامل مع مستندات سرية، معرفة كيفية إنشاء توقيع رقمي PDF في Java أمر أساسي، ليس اختياريًا.
في هذا الدرس ستتعلم كيفية إضافة توقيع رقمي إلى مستند PDF باستخدام GroupDocs.Signature for Java، واحدة من أبسط مكتبات توقيع PDF المتاحة لـ Java. سواء كنت تقوم بأتمتة سير عمل العقود، تأمين سجلات الموظفين، أو بناء منصة توقيع متعددة الأطراف، هذا الدليل يغطي احتياجاتك.
ما ستتعلمه
- كيفية تحميل وإعداد مستندات PDF للتوقيع الرقمي
- تكوين خيارات التوقيع الرقمي باستخدام الشهادات والمظهر المخصص
- تنفيذ سير عمل التوقيع الكامل مع معالجة الأخطاء المناسبة
- أفضل ممارسات الأمان لإدارة الشهادات
- متى تختار GroupDocs.Signature على مكتبات Java الأخرى
- استكشاف الأخطاء الشائعة التي قد تواجهها فعليًا
دعنا نغيّر طريقة التعامل مع توقيع المستندات في تطبيقات Java الخاصة بك.
إجابات سريعة
- ما هي الفئة الرئيسية للتوقيع؟
Signatureهو نقطة الدخول لجميع عمليات التوقيع. - هل أحتاج إلى ترخيص مدفوع؟ النسخة التجريبية المجانية تكفي للتطوير؛ الترخيص الإنتاجي مطلوب للاستخدام التجاري.
- هل يمكنني توقيع مستندات غير PDF؟ نعم—Word، Excel، الصور، والمزيد مدعومة بنفس الـ API.
- كم عدد الصيغ التي يدعمها GroupDocs.Signature؟ أكثر من 30 صيغة إدخال وإخراج، بما في ذلك PDF، DOCX، XLSX، PNG، وJPG.
- ما نسخة Java المطلوبة؟ JDK 8 أو أعلى؛ المكتبة متوافقة مع Java 11، 17، وما بعدها.
ما هو إنشاء توقيع رقمي PDF؟
التوقيع الرقمي PDF هو ختم تشفير مدمج في PDF يثبت هوية الموقع ويضمن أن المستند لم يتغير منذ التوقيع. هذه التقنية تمكّن من اتفاقيات إلكترونية قابلة للإنفاذ قانونيًا مع الحفاظ على عملية توقيع سريعة وخالية من الورق.
كيف تنشئ توقيعًا رقميًا PDF في Java؟
حمّل ملف PDF باستخدام فئة Signature، قم بتكوين كائن DigitalSignOptions باستخدام شهادة PFX الخاصة بك، اضبط معلمات المظهر الاختيارية، واستدعِ sign() لإنشاء PDF موقع جديد. العملية بالكامل عادةً لا تتطلب أكثر من ثلاث أسطر من الشيفرة وتستغرق أقل من ثانية للمستندات ذات الحجم العادي.
لماذا نستخدم GroupDocs.Signature لـ Java؟
تم تصميم GroupDocs.Signature للمطورين الذين يحتاجون إلى طريقة سريعة وموثوقة لإضافة توقيعات رقمية عبر أنواع متعددة من المستندات دون الحاجة إلى خبرة عميقة في PDF. توفر دعمًا جاهزًا لأكثر من 30 صيغة، معالجة طوابع بصرية مدمجة، وأداءً من فئة الشركات، مما يجعلها مثالية للتطبيقات المؤسسية مقارنة بالمكتبات ذات المستوى الأدنى.
- تغطية الصيغ: يدعم GroupDocs.Signature أكثر من 30 صيغة مستند (PDF، DOCX، XLSX، PPTX، PNG، JPG، BMP، GIF، وغيرها).
- الأداء: توقيع PDF مكوّن من 5 صفحات (≈1 MB) يستغرق متوسطًا 350 ms على معالج 2.8 GHz عادي، بينما iText غالبًا ما يتطلب إعدادًا إضافيًا للوصول إلى سرعة مماثلة.
- بساطة الـ API: جميع عمليات التوقيع تُنفّذ عبر كائن
Signatureواحد، مما يقلل الكود المتكرر حتى 60 % مقارنة بالمكتبات ذات المستوى الأدنى.
اختر GroupDocs.Signature إذا كنت تحتاج إلى دعم متعدد الصيغ، API بسيط، وموثوقية من فئة الشركات.
فكر في Apache PDFBox عندما تكون مقيدًا ببيئة مفتوحة المصدر وتحتاج فقط إلى معالجة أساسية للـ PDF.
فكر في iText إذا كنت تحتاج إلى ميزات متقدمة لإنشاء PDF تتجاوز التوقيع.
المتطلبات المسبقة
المكتبات المطلوبة
- GroupDocs.Signature for Java – الإصدار 23.12 (مستقر ومختبر جيدًا)
- Java Development Kit (JDK) – الإصدار 8 أو أعلى
إعداد البيئة
- بيئة تطوير متكاملة مثل IntelliJ IDEA، Eclipse، أو VS Code مع ملحقات Java
- Maven أو Gradle لإدارة الاعتمادات (الأمثلة أدناه)
- شهادة رقمية صالحة بصيغة PFX/PKCS#12
ملاحظة حول الشهادة
إذا لم تكن لديك شهادة بعد، يمكنك إنشاء شهادة موقعة ذاتيًا باستخدام أداة keytool. تذكر أن الشهادات الموقعة ذاتيًا صالحة للاختبار فقط ولا تُعتمد في بيئات الإنتاج.
إعداد GroupDocs.Signature لـ Java
إدراج المكتبة في مشروعك سهل. اختر أداة البناء التي تفضلها:
Maven
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Gradle
implementation 'com.groupdocs:groupdocs-signature:23.12'
للتنزيل المباشر (إذا لم تستخدم أداة بناء)، زر إصدارات GroupDocs.Signature for Java.
الحصول على الترخيص
GroupDocs.Signature تجاري، لكن لديك خيارات مرنة:
- تجربة مجانية – مثالية لمشاريع إثبات المفهوم؛ لا تحتاج إلى بطاقة ائتمان.
- ترخيص مؤقت – ترخيص تطوير لمدة 30 يومًا للاختبار الموسع.
- شراء – الاستخدام الإنتاجي يتطلب ترخيصًا مدفوعًا؛ الأسعار تختلف حسب نوع النشر.
بعد إضافة الاعتماد، تحقق من إعدادك بتهيئة بسيطة:
import com.groupdocs.signature.Signature;
public class InitializeSignature {
public static void main(String[] args) {
Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY/sample.pdf");
// Now you're ready to use GroupDocs.Signature for Java!
System.out.println("GroupDocs.Signature initialized successfully!");
}
}
نصيحة احترافية: استبدل "YOUR_DOCUMENT_DIRECTORY/sample.pdf" بمسار PDF فعلي. إذا لم تُطرح أي استثناءات، فأنت جاهز للتوقيع.
دليل التنفيذ
لنُنشئ سير عمل التوقيع خطوة بخطوة. كل قسم يركز على ميزة محددة، موضحًا ليس فقط كيف تعمل بل لماذا قد تحتاجها.
الخطوة 1: تحميل مستند PDF الخاص بك
قبل أن تتمكن من التوقيع، يجب تحميل PDF إلى الذاكرة. فكر في ذلك كفتح مستند Word قبل تحريره.
تهيئة وتحميل المستند
import com.groupdocs.signature.Signature;
public class LoadDocumentFeature {
public static void main(String[] args) throws Exception {
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
Signature signature = new Signature(filePath);
// The document is now loaded and ready for signing.
}
}
مرساة التعريف – فئة Signature هي نقطة الدخول الأساسية للـ API التي تمثل مستندًا جاهزًا لعمليات التوقيع.
المكتبة تكتشف صيغة الملف تلقائيًا، لذا يعمل نفس الكود مع Word، Excel، وملفات الصور.
ملاحظة شائعة: إذا كان PDF محميًا بكلمة مرور، قدم كلمة المرور في المُنشئ:
Signature signature = new Signature(filePath, new LoadOptions("yourPassword"));
الخطوة 2: تكوين خيارات التوقيع الرقمي
هنا تحدد كيف سيظهر التوقيع وأين سيظهر. يمكن أن تكون التوقيعات الرقمية غير مرئية (بيانات تشفير فقط) أو مرئية بط stamp مخصص.
تكوين مظهر التوقيع
import com.groupdocs.signature.options.sign.DigitalSignOptions;
public class SetupDigitalSignOptionsFeature {
public static void main(String[] args) {
String certificatePath = "YOUR_DOCUMENT_DIRECTORY/certificate.pfx";
String imagePath = "YOUR_DOCUMENT_DIRECTORY/image.png";
DigitalSignOptions options = new DigitalSignOptions(certificatePath);
options.setImageFilePath(imagePath);
// Set signature location and other properties
options.setLeft(100);
options.setTop(100);
options.setPageNumber(1);
options.setPassword("1234567890");
}
}
مرساة التعريف – DigitalSignOptions يجمع جميع الإعدادات المطلوبة لإنشاء توقيع رقمي، بما في ذلك مسار الشهادة، المظهر البصري، وإحداثيات الموضع.
- certificatePath – مسار ملف PFX الذي يحتوي على المفتاح الخاص (احفظه بأمان!).
- imagePath – ط stamp بصري اختياري (مثل شعار الشركة).
- setLeft / setTop – إحداثيات X وY بالبكسل من الزاوية العليا اليسرى.
- setPageNumber – رقم الصفحة المستهدفة (1 = الصفحة الأولى).
- setPassword – كلمة مرور لفتح ملف PFX.
متى تجعل التوقيعات مرئية: استخدم توقيعات مرئية للعقود التي يحتاج أصحاب المصلحة إلى رؤية اسم الموقع أو الشعار. بالنسبة للعمليات الداخلية، تبقى التوقيعات غير مرئية لتظل المستندات نظيفة مع توفير دليل تشفير.
نصائح الإحداثيات: ابدأ بـ left=50, top=50 واضبط حسب الحاجة. يمكنك أيضًا استخدام setHorizontalAlignment() و setVerticalAlignment() للموضع النسبي (مثل أسفل اليمين).
الخطوة 3: توقيع المستند
الآن لحظة الحقيقة—تطبيق التوقيع الرقمي.
عملية التوقيع الكاملة
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.domain.SignResult;
import java.io.File;
import java.nio.file.Paths;
public class SignDocumentWithDigitalFeature {
public static void main(String[] args) throws Exception {
String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.pdf";
String outputFilePath = new File("YOUR_OUTPUT_DIRECTORY",
"SignWithDigital/" + Paths.get(filePath).getFileName().toString()).getPath();
Signature signature = new Signature(filePath);
DigitalSignOptions options = new DigitalSignOptions("YOUR_DOCUMENT_DIRECTORY/certificate.pfx");
options.setImageFilePath("YOUR_DOCUMENT_DIRECTORY/image.png");
options.setLeft(100);
options.setTop(100);
options.setPageNumber(1);
options.setPassword("1234567890");
SignResult result = signature.sign(outputFilePath, options);
System.out.println("Document signed successfully!");
System.out.println("Signatures applied: " + result.getSucceeded().size());
}
}
مرساة التعريف – طريقة sign() تنشئ PDF موقعًا جديدًا في المسار المحدد وتعيد كائن SignResult يحتوي على تفاصيل العملية.
نقاط رئيسية:
- يبقى PDF الأصلي دون تغيير؛ يُكتب ملف جديد.
SignResultيخبرك ما إذا كان التوقيع ناجحًا ويقدم بيانات التعريف الخاصة به.
معالجة الأخطاء التي قد ترغب في إضافتها:
try {
SignResult result = signature.sign(outputFilePath, options);
if (result.getSucceeded().size() > 0) {
System.out.println("Success! Signed document saved to: " + outputFilePath);
}
} catch (Exception e) {
System.err.println("Signing failed: " + e.getMessage());
e.printStackTrace();
}
مشاكل شائعة وكيفية تجنبها
بعد مساعدة عشرات المطورين على تنفيذ توقيع PDF، هذه هي القضايا التي تظهر غالبًا:
- مشكلات مسار الشهادة – استخدم مسارات مطلقة أو اضبط classpath بشكل صحيح.
- عدم تطابق كلمة مرور الشهادة – تحقق من كلمة مرور PFX؛ لا توجد طريقة لاستردادها.
- دليل الإخراج غير موجود – أنشئه مسبقًا:
new File(outputDirectory).mkdirs();
- وجود ملف مسبقًا – اختر الإحلال أو إنشاء أسماء ملفات بإصدار:
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String outputFile = "contract_signed_" + timestamp + ".pdf";
- مشكلات الذاكرة مع PDFs الكبيرة – للملفات التي تتجاوز 50 MB، زد حجم heap للـ JVM (
-Xmx512mأو أعلى). - انتهاء صلاحية الشهادة – تحقق من الصلاحية قبل التوقيع؛ الشهادات المنتهية لا تُنتج توقيعات قابلة للتحقق.
- صيغة صورة غير مدعومة – يدعم GroupDocs PNG، JPG، BMP، وGIF. حول الصيغ غير المدعومة إلى PNG.
- موضع التوقيع خارج الصفحة – تأكد من أن الإحداثيات داخل أبعاد الصفحة (A4 ≈ 595 × 842 px عند 72 DPI).
حالات استخدام واقعية
1. سير عمل موافقة الفواتير
السيناريو: نظام المحاسبة يولد PDFs تحتاج موافقة المدير المالي قبل إرسالها للعملاء.
التنفيذ: توليد الفاتورة، نقر المدير على “موافق”، تطبيق توقيع رقمي، حفظ PDF الموقع، وإرساله تلقائيًا عبر البريد.
الأهمية: يوفر مسار تدقيق غير قابل للتغيير ويقضي على الطباعة والمسح الضوئي اليدوي.
2. إدارة عقود الموظفين
السيناريو: الموارد البشرية تجمع توقيعات على عقود العمل، اتفاقيات عدم الإفشاء، وإقرارات السياسات.
التنفيذ: رفع قالب العقد، نقر الموظف على “قبول”، النظام يطبق شهادة الموظف، يوقع المدير، ويحفظ المستند المنفذ في سجل الموظف.
الفائدة: لا ورق، توقيعات فورية مع طوابع زمنية، واتفاقيات قابلة للإنفاذ قانونيًا.
3. تصديق المستندات تلقائيًا
السيناريو: خدمة تحقق تصدق نسخًا من المستندات الأصلية.
التنفيذ: رفع الأصل، تطبيق ط stamp “نسخة مصدقة” مرئية مع طابع زمني ورمز تحقق فريد، ثم إرجاع PDF المصدق.
النتيجة: يمكن للمستلمين التحقق فورًا من الأصالة باستخدام التوقيع المدمج.
4. توقيع عقود متعدد الأطراف
السيناريو: عقود العقارات تتطلب توقيع المشتري، البائع، والوكيل.
التنفيذ: يوقع الطرف الأول، يحفظ النظام الـ PDF، ثم يحمل الطرف التالي الملف الموقع مسبقًا ويضيف توقيعه. يحتفظ GroupDocs بجميع التوقيعات الموجودة.
ملاحظة تقنية: حمّل الـ PDF الموقع باستخدام كائن Signature جديد وكرر خطوات التوقيع.
أفضل ممارسات الأمان
التوقيعات الرقمية آمنة بقدر أمان إدارة الشهادات. اتبع هذه الإرشادات:
تخزين الشهادة
- أبدًا لا تضع ملفات
.pfxفي نظام التحكم بالإصدار؛ أضف*.pfxإلى.gitignore. - أبدًا لا تكشف الشهادات في دلائل ويب عامة.
- نعم خزن الشهادات في مدير أسرار مخصص (AWS KMS، Azure Key Vault، HashiCorp Vault).
- استخدم متغيرات البيئة لكلمات المرور وحدد أذونات الملفات (
chmod 600). - جدد الشهادات قبل انتهاء صلاحيتها للحفاظ على الثقة.
إدارة كلمة المرور
// Bad - hardcoded password
options.setPassword("1234567890");
// Better - environment variable
options.setPassword(System.getenv("CERT_PASSWORD"));
// Best - secure configuration management
options.setPassword(configService.getSecureValue("certificate.password"));
التحقق من الشهادة
// Check if certificate is still valid
X509Certificate cert = // load certificate
Date now = new Date();
if (now.before(cert.getNotBefore()) || now.after(cert.getNotAfter())) {
throw new Exception("Certificate is expired or not yet valid");
}
تسجيل التدقيق
logger.info("Document signed: user={}, document={}, timestamp={}",
username, documentId, Instant.now());
// Don't log: certificate passwords, full file paths, PII
اعتبارات الأداء
عند توقيع PDFs على نطاق واسع، ضع هذه النصائح في الاعتبار:
إدارة الذاكرة
- PDFs الصغيرة (< 10 MB) – النهج في الذاكرة كما هو موضح أعلاه يعمل بشكل مثالي.
- PDFs الكبيرة (> 50 MB) – فكر في استخدام واجهات البث لتجنب تحميل الملف بالكامل.
- المعالجة الدفعية – أعد استخدام كائن
Signatureواحد عند توقيع مستندات متعددة بنفس الشهادة.
نصيحة بث بسيطة (بدون كتلة شيفرة، مجرد وصف): استخدم Signature مع InputStream واكتب الناتج إلى OutputStream لتقليل استهلاك الذاكرة.
مؤشرات زمنية للمعالجة (GroupDocs.Signature 23.12)
- PDF من 1‑5 صفحات (< 1 MB): 200‑500 ms
- PDF من 20‑50 صفحة (5‑10 MB): 1‑2 s
- PDF من 100+ صفحة (> 20 MB): 3‑5 s
هذه الأرقام تفترض معالج 2.8 GHz وذاكرة 8 GB.
نصائح تحسين
- حمّل الشهادة مرة واحدة وأعد استخدام نفس
DigitalSignOptionsلملفات متعددة. - استخدم
ExecutorServiceفي Java لتوقيع المستندات بشكل متوازي. - أنشئ دلائل الإخراج مسبقًا لتقليل زمن I/O داخل حلقة التوقيع.
- حلل JVM بأدوات مثل VisualVM لتحديد الاختناقات الفعلية.
دليل استكشاف الأخطاء وإصلاحها
خطأ “ملف الشهادة غير موجود”
الأعراض: FileNotFoundException عند تهيئة DigitalSignOptions.
الحلول: تحقق من المسار المطلق، أذونات الملف، واطبع دليل العمل باستخدام System.out.println(new File(".").getAbsolutePath()).
خطأ “كلمة مرور الشهادة غير صالحة”
الأعراض: استثناء أثناء التوقيع.
الحلول: تأكد من صحة كلمة المرور (حساسة لحالة الأحرف)، وتطابقها مع ما استُخدم لإنشاء الـ PFX، أو أنشئ شهادة جديدة إذا فقدت كلمة المرور.
التوقيع يظهر في موقع خاطئ
الأعراض: التوقيع المرئي غير موضعه بشكل صحيح.
الحلول: تذكر أن الإحداثيات تبدأ من (0,0) في الزاوية العليا اليسرى. تحقق من رقم الصفحة المستهدفة (الصفحة الأولى = 1). استخدم setHorizontalAlignment() / setVerticalAlignment() للموضع الموثوق.
خطأ عام “فشل توقيع المستند”
الأعراض: رسالة خطأ غامضة دون سبب واضح.
الحلول: فعّل تسجيل مفصل عبر System.setProperty("com.groupdocs.signature.debug", "true")، تأكد من عدم فساد الـ PDF، تحقق من أذونات الكتابة، وتأكد من صلاحية الشهادة.
التوقيع غير مرئي في قارئ PDF
الأعراض: التوقيع ينجح لكن لا يظهر ط stamp بصري.
الحلول: تأكد من أن options.setImageFilePath(imagePath) يشير إلى PNG/JPG صالح، وتأكد من أن الإحداثيات داخل حدود الصفحة، وتحقق من إعدادات القارئ (بعض القارئات تخفي التوقيعات افتراضيًا).
OutOfMemoryError مع PDFs كبيرة
الأعراض: تعطل JVM أو رمي OutOfMemoryError.
الحلول: زد حجم heap (-Xmx1024m أو أعلى)، عالج PDFs الكبيرة على دفعات، وأغلق كائنات Signature فور الانتهاء.
الأسئلة المتكررة
س: ما هي فوائد استخدام التوقيعات الرقمية مع GroupDocs.Signature لـ Java؟
ج: توفر التوقيعات الرقمية إنفاذًا قانونيًا، تحققًا تشفيريًا، توقيعًا فوريًا (ثوانٍ مقابل أيام)، ومسار تدقيق كامل يوضح من وقع ومتى وأي شهادة استُخدمت. GroupDocs يبسط التنفيذ دون الحاجة لمعرفة عميقة بـ PDF.
س: كيف أختار الإصدار المناسب من GroupDocs.Signature لمشروعي؟
ج: استخدم أحدث إصدار ثابت (حالياً 23.12) للمشاريع الجديدة للحصول على إصلاحات الأخطاء وتحسينات الأداء. راجع ملاحظات الإصدار قبل ترقية التطبيقات القائمة لتجنب تغييرات كسرية.
س: هل يمكنني توقيع مستندات غير PDF باستخدام GroupDocs.Signature؟
ج: بالتأكيد. الـ API يدعم Word، Excel، PowerPoint، وصيغ الصور الشائعة. فئات Signature و DigitalSignOptions تعمل عبر جميع الأنواع المدعومة.
س: هل يمكن أتمتة عملية التوقيع لدفعات من المستندات؟
ج: نعم. يمكنك حلق عبر دليل، تطبيق نفس DigitalSignOptions على كل ملف، وحفظ النتائج. للسيناريوهات ذات الإنتاجية العالية، استخدم التدفقات المتوازية أو ExecutorService وخصص ذاكرة heap كافية.
س: كيف يمكنني التحقق من أن PDF تم توقيعه رقميًا؟
ج: افتح PDF الموقع في Adobe Acrobat Reader وابحث عن لوحة التوقيع على اليسار. انقر على توقيع لعرض تفاصيل الشهادة وحالة التحقق. برمجيًا، توفر GroupDocs.Signature أيضًا واجهات للتحقق.
س: هل أحتاج إلى شهادات مختلفة للتطوير، الاختبار، والإنتاج؟
ج: نعم. استخدم شهادات موقعة ذاتيًا للتطوير والاختبار، واحصل على شهادة صادرة من سلطة شهادة موثوقة للإنتاج لضمان ثقة الأطراف الخارجية.
س: هل يمكن لأكثر من شخص توقيع نفس المستند؟
ج: نعم. حمّل الـ PDF الموقع مسبقًا، أضف كائن DigitalSignOptions جديد، واستدعِ sign() مرة أخرى. كل توقيع يحتفظ بطابع زمني وشهادة خاصة به، مما يخلق مسار تدقيق كامل.
الخلاصة
أصبح لديك الآن خارطة طريق كاملة وجاهزة للإنتاج لإنشاء توقيعات رقمية PDF في Java. من إعداد GroupDocs.Signature إلى معالجة ملفات كبيرة، تأمين الشهادات، وتوسيع العملية لتشمل دفعات، يزودك هذا الدليل بالقدرة على دمج توقيع إلكتروني موثوق به في أي تطبيق Java.
الخطوات التالية
- حمّل GroupDocs.Signature وابدأ بالتجربة المجانية.
- جرّب خيارات المظهر المختلفة وإعدادات الإحداثيات.
- ادمج تدفق التوقيع في خدماتك الحالية—نقاط API، وظائف خلفية، أو إجراءات واجهة المستخدم.
- استكشف الميزات المتقدمة مثل توقيعات QR‑code، طوابع باركود، وتوقيع البيانات الوصفية.
القطعات البرمجية المرفقة جاهزة للتنفيذ (فقط استبدل مسارات الملفات وكلمات المرور). أضف معالجة أخطاء قوية وتخزينًا آمنًا للبيانات لتتناسب مع بيئة الإنتاج، وستكون قادرًا على توقيع PDFs بثقة.
آخر تحديث: 2026-06-11
تم الاختبار مع: GroupDocs.Signature 23.12 لـ Java
المؤلف: GroupDocs
// Good - explicit resource management
try (Signature signature = new Signature(filePath)) {
signature.sign(outputPath, options);
} // Automatically cleaned up