Menandatangani dokumen PDF dari Smart Card di Java
Contents
[
Hide
]
Repositori Java saat ini tidak menyertakan contoh penandatanganan kartu pintar berbasis sumber yang berdedikasi di bawah facades/pdffilesignature, tetapi alur kerja berikut menunjukkan pola API khas untuk menandatangani PDF dengan sertifikat yang dipilih dari penyimpanan sertifikat lokal.
Menandatangani dokumen PDF dari kartu pintar
- Buka PDF sumber
Document. - Buat sebuah fasad
PdfFileSignaturedan ikat dokumen PDF sumber. - Ambil sertifikat lokal dan buat yang diperlukan
ExternalSignature. - Konfigurasikan penampilan tanda tangan visual dan targetnya
Rectangle. - Terapkan tanda tangan ke dokumen PDF melalui
PdfFileSignature. - Simpan dokumen PDF yang diperbarui.
- Hubungkan dokumen yang dimuat ke fasad
PdfFileSignaturedenganbindPdf(...). - Ambil sertifikat lokal yang mewakili kredensial kartu pintar dengan memanggil
getLocalCertificate(). - Periksa apakah sertifikat ditemukan. Jika tidak, simpan file output yang tidak diubah dan hentikan alur kerja.
- Buat sebuah
ExternalSignaturedari sertifikat yang dipilih. - Setel gambar tampilan tanda tangan visual dengan
setSignatureAppearance(...). - Panggil
sign(...)dengan halaman target, alasan, kontak, lokasi, flag visibilitas, tanda tanganRectangle, dan objek tanda tangan eksternal. - Simpan PDF yang sudah ditandatangani ke jalur output.
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());
}
}