Главное Авторские колонки Вакансии Вопросы
Выбор редакции:
417 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как сделать цифровую подпись PDF в Java

В этой статье я расскажу о том, как выполнять цифровую подпись PDF-документов в Java.
Мнение автора может не совпадать с мнением редакции

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

  • Добавление невидимой цифровой подписи в PDF
  • Добавление видимой цифровой подписи в PDF

Установка файла Spire.Pdf.jar

Spire.PDF for Java — это профессиональная Java-библиотека для чтения, создания и работы с PDF-файлами в Java-приложениях.

Если вы создали Maven-проект, вы можете легко импортировать jar в свое приложение, используя следующие конфигурации. Для проектов, не использующих Maven, загрузите jar-файл по этой ссылке и добавьте его в качестве зависимости в свое приложение.


Добавление невидимой цифровой подписи в PDF

Следующий фрагмент кода показывает, как добавить невидимую цифровую подпись в PDF с помощью Spire.PDF for Java.

import com.spire.pdf.PdfDocument;

import com.spire.pdf.security.PdfCertificate;

import com.spire.pdf.security.PdfCertificationFlags;

import com.spire.pdf.security.PdfSignature;

public class AddInvisibleSignature {

public static void main(String[] args) {

//Create a PdfDocument object

PdfDocument doc = new PdfDocument();

//Load a sample PDF file

doc.loadFromFile("C:\Users\Administrator\Desktop\Java PDF.pdf");

//Load a pfx certificate

PdfCertificate cert = new PdfCertificate("C:\Users\Administrator\Desktop\MyCertificate.pfx«, «e-iceblue»);

//Create a PdfSignature object

PdfSignature signature = new PdfSignature(doc, doc.getPages().get(doc.getPages().getCount() - 1), cert, «MySignature»);

//Set the document permission to forbid changes but allow form fill

signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);

signature.setDocumentPermissions(PdfCertificationFlags.Allow_Form_Fill);

//Save to another PDF file

doc.saveToFile("output/InvisibleSignature.pdf");

doc.close();

}

}

Добавление видимой цифровой подписи в PDF

Следующий фрагмент кода показывает, как добавить видимую цифровую подпись в PDF с помощью Spire.PDF for Java.

import com.spire.pdf.PdfDocument;

import com.spire.pdf.graphics.PdfFont;

import com.spire.pdf.graphics.PdfFontFamily;

import com.spire.pdf.graphics.PdfFontStyle;

import com.spire.pdf.graphics.PdfImage;

import com.spire.pdf.security.GraphicMode;

import com.spire.pdf.security.PdfCertificate;

import com.spire.pdf.security.PdfCertificationFlags;

import com.spire.pdf.security.PdfSignature;

import java.awt.*;

import java.awt.geom.Point2D;

import java.awt.geom.Rectangle2D;

public class AddVisibleSignature {

public static void main(String[] args) {

//Create a PdfDocument object

PdfDocument doc = new PdfDocument();

//Load a sample PDF file

doc.loadFromFile("C:\Users\Administrator\Desktop\Java PDF.pdf");

//Load a pfx certificate

PdfCertificate cert = new PdfCertificate("C:\Users\Administrator\Desktop\MyCertificate.pfx«, «e-iceblue»);

//Create a PdfSignature object and specify its position and size

PdfSignature signature = new PdfSignature(doc, doc.getPages().get(0), cert, «MySignature»);

Rectangle2D rect = new Rectangle2D.Float();

rect.setFrame(new Point2D.Float((float) doc.getPages().get(0).getActualSize().getWidth() - 320, (float) doc.getPages().get(0).getActualSize().getHeight() - 140), new Dimension(270, 100));

signature.setBounds(rect);

//Set the graphics mode

signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);

//Set the signature content

signature.setNameLabel("Signer:");

signature.setName("Gary");

signature.setContactInfoLabel("ContactInfo:");

signature.setContactInfo("02881705109″);

signature.setDateLabel("Date:");

signature.setDate(new java.util.Date());

signature.setLocationInfoLabel("Location:");

signature.setLocationInfo("Chengdu");

signature.setReasonLabel("Reason: ");

signature.setReason("The certificate of this document");

signature.setDistinguishedNameLabel("DN: ");

signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());

signature.setSignImageSource(PdfImage.fromFile("C:\Users\Administrator\Desktop\handwrittenSignature.png"));

//Set the signature font

signature.setSignDetailsFont(new PdfFont(PdfFontFamily.Helvetica, 10f, PdfFontStyle.Regular));

//Set the document permission

signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);

signature.setCertificated(true);

//Save to file

doc.saveToFile("output/VisibleSignature.pdf");

doc.close();

}

}

Заключение

В этой статье мы узнали, как использовать Spire.PDF for Java для цифровой подписи PDF-документов. Кроме того, эта библиотека поддерживает и другие функции обработки PDF, такие как:

Преобразование PDF в изображения в Java

Преобразование PDF в Word в Java

Шифрование PDF-документов в Java

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.