توقيع مستندات PDF من بطاقة ذكية في Java
Contents
[
Hide
]
المستودع الحالي لجافا لا يتضمن مثالًا مخصصًا لتوقيع بطاقة ذكية مدعوم بالمصدر تحت facades/pdffilesignature، ولكن سير العمل التالي يُظهر نمط API النموذجي لتوقيع ملف PDF باستخدام شهادة مختارة من مخزن الشهادات المحلي.
توقيع مستند PDF باستخدام بطاقة ذكية
- افتح PDF المصدر Document.
- أنشئ كائنًا من الفئة PdfFileSignature facade وربط مستند PDF المصدر.
- استرجع الشهادة المحلية وأنشئ المطلوب ExternalSignature.
- هيّئ مظهر التوقيع البصري والهدف Rectangle.
- طبّق التوقيع على مستند PDF عبر PdfFileSignature.
- احفظ مستند PDF المحدث.
- اربط المستند المحمَّل بـ واجهة PdfFileSignature مع
bindPdf(...). - استرجع الشهادة المحلية التي تمثل اعتماد البطاقة الذكية عن طريق الاستدعاء
getLocalCertificate(). - تحقّق مما إذا تم العثور على شهادة. إذا لم يتم العثور عليها، احفظ ملف الإخراج غير المعدل وأوقف سير العمل.
- أنشئ كائنًا من الفئة ExternalSignature من الشهادة المحددة.
- عيّن صورة مظهر التوقيع البصري باستخدام
setSignatureAppearance(...). - استدعِ
sign(...)مع الصفحة المستهدفة، السبب، جهة الاتصال، الموقع، علامة الرؤية، التوقيع Rectangle، وكائن التوقيع الخارجي. - احفظ ملف PDF الموقع إلى مسار الإخراج.
public static void signWithSmartCard(Path inputFile, Path outputFile, Path pngFile) {
try (Document document = new Document(inputFile.toString());
PdfFileSignature pdfSignature = new PdfFileSignature()) {
pdfSignature.bindPdf(document);
X509Certificate2 selectedCertificate = getLocalCertificate();
if (selectedCertificate == null) {
System.out.println("Local certificate was not found.");
document.save(outputFile.toString());
return;
}
ExternalSignature externalSignature = new ExternalSignature(selectedCertificate, null);
pdfSignature.setSignatureAppearance(pngFile.toString());
pdfSignature.sign(1, "Reason", "Contact", "Location", true,
new java.awt.Rectangle(100, 100, 200, 200), externalSignature);
pdfSignature.save(outputFile.toString());
}
}