Цифровая подпись в PDF позволяет защитить документ перед тем, как он будет передан заинтересованным лицам. Подделка содержимого PDF-документа с цифровой подписью может быть легко обнаружена и проверена. Чтобы программно подписать PDF-документы цифровой подписью, я покажу вам, как добавлять и проверять цифровые подписи в PDF-файлах с помощью Java. Мы рассмотрим следующие сценарии, связанные с цифровыми подписями в PDF-файлах.
- Библиотека Java для цифровой подписи PDF
- Добавьте цифровые подписи в PDF с помощью Java
- Цифровая подпись PDF с сервером меток времени с использованием Java
- Проверка цифровой подписи в PDF с помощью Java
Библиотека Java для цифровой подписи PDF
Для добавления и проверки цифровых подписей в PDF мы будем использовать Aspose.PDF для Java. Наряду с другими функциями работы с PDF, Aspose.PDF для Java позволяет легко добавлять и проверять цифровые подписи в PDF-файлах. Вы можете скачать JAR-файл API или установить его в свое приложение на основе Maven.
Репозиторий:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Зависимость:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>20.6</version>
</dependency>
Добавить цифровую подпись в PDF с помощью Java
Ниже приведены шаги по добавлению цифровой подписи в документ PDF с помощью Aspose.PDF для Java.
- Создайте экземпляр класса Document и инициализируйте его путем к документу PDF.
- Инициализируйте класс PdfFileSignature и передайте ему объект Document.
- Создайте экземпляр класса PKCS7 и инициализируйте его, указав путь к сертификату и пароль.
- Инициализируйте класс DocMDPSignature для типа подписи MDP.
- Определите Прямоугольник для размещения подписи на странице документа.
- Цифровая подпись PDF-документа с помощью метода PdfFileSignature.Certify().
- Сохраните подписанный PDF-файл, используя метод PdfFileSignature.Save().
В следующем примере кода показано, как подписать PDF-файл цифровой подписью с помощью Java.
// Создать объект документа
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
Rectangle rect = new Rectangle(100, 600, 400, 100);
// Установить внешний вид подписи
signature.setSignatureAppearance("aspose-logo.png");
// Создайте любой из трех типов подписи
signature.certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// Сохранить файл PDF с цифровой подписью
signature.save("Digitally Signed PDF.pdf");
Цифровая подпись PDF с сервером меток времени с использованием Java
Aspose.PDF для Java также позволяет добавлять цифровые подписи в PDF с помощью сервера TimeStamp. Для этой цели используется класс TimestampSettings. В следующем примере кода показано, как добавить цифровую подпись в файл PDF с помощью сервера TimeStamp с помощью Java.
// Создать объект документа
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
pkcs.setTimestampSettings(timestampSettings);
Rectangle rect = new Rectangle(100, 600, 400, 100);
// Установить внешний вид подписи
signature.setSignatureAppearance("aspose-logo.png");
// Создайте любой из трех типов подписи
signature.sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// Сохранить файл PDF с цифровой подписью
signature.save("Digitally Signed PDF.pdf");
Проверка цифровой подписи в PDF с помощью Java
Когда вы получаете PDF-файл с цифровой подписью, вы можете легко проверить его подпись. Ниже приведены шаги для проверки PDF-файла с цифровой подписью.
- Создайте экземпляр класса PdfFileSignature.
- Привяжите файл PDF с помощью метода PdfFileSigntature.bindPdf(string).
- Проверьте действительность подписи с помощью метода PdfFileSignature.verifySigned().
В следующем примере кода показано, как проверить документ PDF с цифровой подписью с помощью Java.
// Создать подпись PDF-файла
PdfFileSignature pdfSign = new PdfFileSignature();
// Связать PDF
pdfSign.bindPdf("Digitally Signed PDF.pdf");
// Подтвердить подпись, используя имя подписи
if (pdfSign.verifySigned("Signature1"))
{
if (pdfSign.isCertified()) // Certified?
{
if (pdfSign.getAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
{
// Сделай что-нибудь
}
}
}
Вывод
В этой статье вы узнали, как добавить цифровую подпись в PDF с помощью Java. Кроме того, мы увидели, как проверить PDF-файл с цифровой подписью за несколько шагов. Вы можете узнать больше о Java PDF API, используя документацию, а также примеры исходного кода, размещенные на GitHub.