Цифровая подпись в PDF позволяет защитить документ перед тем, как он будет передан заинтересованным лицам. Подделка содержимого PDF-документа с цифровой подписью может быть легко обнаружена и проверена. Чтобы программно подписать PDF-документы цифровой подписью, я покажу вам, как добавлять и проверять цифровые подписи в PDF-файлах с помощью Java. Мы рассмотрим следующие сценарии, связанные с цифровыми подписями в PDF-файлах.

Библиотека 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-файла с цифровой подписью.

В следующем примере кода показано, как проверить документ 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.

Смотрите также