Podpis cyfrowy w formacie PDF umożliwia zabezpieczenie dokumentu przed udostępnieniem go zainteresowanym stronom. Fałszowanie treści podpisanego cyfrowo dokumentu PDF można łatwo wykryć i zweryfikować. Aby programowo podpisywać cyfrowo dokumenty PDF, pokażę, jak dodawać i weryfikować podpisy cyfrowe w formacie PDF przy użyciu języka Java. Omówimy następujące scenariusze związane z podpisami cyfrowymi w plikach PDF.

Biblioteka Java do cyfrowego podpisywania plików PDF

Do dodawania i weryfikowania podpisów cyfrowych w formacie PDF będziemy używać Aspose.PDF for Java. Wraz z innymi funkcjami manipulacji PDF, Aspose.PDF for Java pozwala bezproblemowo dodawać i weryfikować podpisy cyfrowe w plikach PDF. Możesz pobrać plik JAR API lub zainstalować go w swojej aplikacji opartej na Maven.

Magazyn:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Zależność:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.6</version>
</dependency>

Dodaj podpis cyfrowy do pliku PDF przy użyciu języka Java

Poniżej przedstawiono kroki dodawania podpisu cyfrowego do dokumentu PDF za pomocą Aspose.PDF for Java.

Poniższy przykładowy kod pokazuje, jak podpisać cyfrowo plik PDF przy użyciu języka Java.

// Utwórz obiekt dokumentu
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);
// Ustaw wygląd podpisu
signature.setSignatureAppearance("aspose-logo.png"); 
// Utwórz dowolny z trzech typów podpisu
signature.certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// Zapisz plik PDF podpisany cyfrowo
signature.save("Digitally Signed PDF.pdf");

Podpisuj cyfrowo pliki PDF za pomocą serwera znaczników czasu przy użyciu języka Java

Aspose.PDF for Java umożliwia również dodawanie podpisów cyfrowych do plików PDF za pomocą serwera TimeStamp. Służy do tego klasa TimestampSettings. Poniższy przykładowy kod pokazuje, jak dodać podpis cyfrowy do pliku PDF z serwerem TimeStamp przy użyciu języka Java.

// Utwórz obiekt dokumentu
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);
// Ustaw wygląd podpisu
signature.setSignatureAppearance("aspose-logo.png"); 
// Utwórz dowolny z trzech typów podpisu
signature.sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// Zapisz plik PDF podpisany cyfrowo
signature.save("Digitally Signed PDF.pdf");

Zweryfikuj podpis cyfrowy w pliku PDF przy użyciu języka Java

Gdy otrzymasz plik PDF podpisany cyfrowo, możesz dość łatwo zweryfikować jego podpis. Poniżej przedstawiono kroki weryfikacji podpisanego cyfrowo pliku PDF.

Poniższy przykładowy kod pokazuje, jak zweryfikować dokument PDF podpisany cyfrowo przy użyciu języka Java.

// Utwórz podpis pliku PDF
PdfFileSignature pdfSign = new PdfFileSignature();
// Zwiąż PDF
pdfSign.bindPdf("Digitally Signed PDF.pdf");
// Zweryfikuj podpis za pomocą nazwy podpisu
if (pdfSign.verifySigned("Signature1"))
{
	if (pdfSign.isCertified()) // Certified?
	{
		if (pdfSign.getAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
		{
			// Zrób coś
		}
	} 
}

Wniosek

W tym artykule nauczyłeś się dodawać podpis cyfrowy do pliku PDF przy użyciu języka Java. Ponadto widzieliśmy, jak w kilku krokach zweryfikować plik PDF podpisany cyfrowo. Możesz dowiedzieć się więcej o Java PDF API, korzystając z dokumentacji, a także próbek kodu źródłowego hostowanych na GitHub.

Zobacz też