La firma digitale in PDF ti consente di proteggere il documento prima che venga condiviso con le parti interessate. La falsificazione del contenuto di un documento PDF firmato digitalmente può essere facilmente rilevata e verificata. Per firmare digitalmente i documenti PDF in modo programmatico, ti mostrerò come aggiungere e verificare le firme digitali in PDF utilizzando Java. Tratteremo i seguenti scenari relativi alle firme digitali nei PDF.

Libreria Java per firmare digitalmente PDF

Per aggiungere e verificare le firme digitali in PDF, utilizzeremo Aspose.PDF per Java. Insieme ad altre funzionalità di manipolazione dei PDF, Aspose.PDF per Java consente di aggiungere e verificare le firme digitali nei PDF senza problemi. Puoi scaricare il JAR dell’API o installarlo nella tua applicazione basata su Maven.

Archivio:

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

Dipendenza:

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

Aggiungi la firma digitale a un PDF utilizzando Java

Di seguito sono riportati i passaggi per aggiungere una firma digitale a un documento PDF utilizzando Aspose.PDF per Java.

  • Crea un’istanza della classe Document e inizializzala con il percorso del documento PDF.
  • Inizializza la classe PdfFileSignature e passa ad essa l’oggetto Document.
  • Crea un’istanza della classe PKCS7 e inizializzala con il percorso di un certificato e la password.
  • Inizializza la classe DocMDPSignature per il tipo di firma MDP.
  • Definisci un Rettangolo per apporre la firma sulla pagina del documento.
  • Firma digitalmente il documento PDF utilizzando il metodo PdfFileSignature.Certify().
  • Salva il PDF firmato utilizzando il metodo PdfFileSignature.Save().

L’esempio di codice seguente mostra come firmare digitalmente un PDF utilizzando Java.

// Crea un oggetto Documento
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);
// Imposta l'aspetto della firma
signature.setSignatureAppearance("aspose-logo.png"); 
// Crea uno dei tre tipi di firma
signature.certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// Salva il file PDF firmato digitalmente
signature.save("Digitally Signed PDF.pdf");

Firma digitalmente PDF con un server Timestamp utilizzando Java

Aspose.PDF per Java ti consente anche di aggiungere firme digitali a PDF con il server TimeStamp. La classe TimestampSettings viene utilizzata per questo scopo. L’esempio di codice seguente mostra come aggiungere la firma digitale a un PDF con un server TimeStamp utilizzando Java.

// Crea un oggetto Documento
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);
// Imposta l'aspetto della firma
signature.setSignatureAppearance("aspose-logo.png"); 
// Crea uno dei tre tipi di firma
signature.sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// Salva il file PDF firmato digitalmente
signature.save("Digitally Signed PDF.pdf");

Verifica la firma digitale in un PDF utilizzando Java

Quando ricevi un PDF firmato digitalmente, puoi verificarne la firma abbastanza facilmente. Di seguito sono riportati i passaggi per verificare un PDF firmato digitalmente.

L’esempio di codice seguente mostra come verificare un documento PDF con firma digitale utilizzando Java.

// Crea firma file PDF
PdfFileSignature pdfSign = new PdfFileSignature();
// Rilega PDF
pdfSign.bindPdf("Digitally Signed PDF.pdf");
// Verifica la firma utilizzando il nome della firma
if (pdfSign.verifySigned("Signature1"))
{
	if (pdfSign.isCertified()) // Certified?
	{
		if (pdfSign.getAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
		{
			// Fare qualcosa
		}
	} 
}

Conclusione

In questo articolo, hai imparato come aggiungere la firma digitale a un PDF utilizzando Java. Inoltre, abbiamo visto come verificare un file PDF con firma digitale in pochi passaggi. Puoi saperne di più sull’API Java PDF utilizzando la documentazione e gli esempi di codice sorgente ospitati su GitHub.

Guarda anche