Questa pagina può contenere testo tradotto automaticamente.
Crittografa documenti PDF in C# e VB.NET
Con l'aiuto della libreria Docotic.Pdf, puoi crittografare documenti PDF con password o certificati.
La libreria crittografa i documenti protetti usando un algoritmo di crittografia a tua scelta. La libreria supporta gli algoritmi di crittografia RC4 a 40 bit, RC4 a 128 bit, AES a 128 bit e AES a 256 bit. Decidi quali autorizzazioni concedere agli utenti dei file PDF protetti.

Proteggi PDF con password
I documenti PDF protetti da password hanno una password del proprietario e, facoltativamente, una password utente. Tutte le autorizzazioni PDF vengono concesse quando qualcuno apre un file PDF protetto da password con la password del proprietario. Se un documento PDF viene aperto con la password utente o senza alcuna password, vengono concesse solo le autorizzazioni "utente". Ad esempio, l'autore del file PDF crittografato può impedire la stampa agli "utenti", ma il "proprietario" potrà comunque stampare il documento.
Per produrre un documento PDF protetto da password, crea un'istanza della classe PdfStandardEncryptionHandler e configurala secondo necessità. Quindi assegna l'oggetto alla proprietà EncryptionHandler nelle opzioni di salvataggio del documento. La libreria userà il gestore per crittografare il documento PDF durante il salvataggio.
Il seguente frammento di codice mostra come creare un file PDF protetto da password in C#:
using var document = new PdfDocument();
var handler = new PdfStandardEncryptionHandler("owner", "user");
handler.UserPermissions.Flags = PdfPermissionFlags.ModifyContents;
var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
document.Save(outputFileName, saveOptions);
Il codice sopra usa owner come password del proprietario e user come password utente. I visualizzatori PDF richiederanno una password per aprire il file PDF protetto. Ciò accade perché la password utente non è null o una stringa vuota.
Se vuoi avere un file PDF protetto ma desideri consentire a chiunque di aprirlo senza password, usa null o una stringa vuota come password utente.
Proteggi PDF con certificati in .NET
Qualsiasi documento PDF protetto da certificato ha una raccolta di destinatari. La raccolta può contenere qualsiasi numero di elementi. Ogni destinatario descrive un certificato che può essere usato per decrittare il documento PDF protetto. Per ogni destinatario, sono specificate autorizzazioni di accesso PDF. Le autorizzazioni concesse per il documento PDF decrittato dipendono dal certificato usato per rimuovere la protezione del documento.
Alcune autorizzazioni di accesso consentono tutte le operazioni con il file PDF decrittato. I destinatari con tali autorizzazioni li chiamiamo owner nella libreria Docotic.Pdf. I destinatari normali hanno autorizzazioni limitate per il documento PDF decrittato.
Per creare un documento protetto da certificato, inizia creando un'istanza della classe PdfPublicKeyEncryptionHandler. I costruttori senza un parametro permissions creano un oggetto con un destinatario owner. Usa i costruttori con il parametro permissions per ottenere un gestore di crittografia con un destinatario normale.
Puoi aggiungere altri destinatari owner usando i metodi AddOwner. Usa i metodi AddRecipient per aggiungere destinatari normali. Puoi aggiungere al gestore di crittografia tutti gli owner e i destinatari normali necessari.
Quindi istruisci la libreria a usare il gestore durante il salvataggio del documento. Per farlo, assegna l'oggetto alla proprietà EncryptionHandler nelle opzioni di salvataggio del documento.
Il seguente codice mostra come creare un file PDF protetto da certificato in C#. Il codice prepara un gestore con un owner e destinatari normali. In entrambi i casi, i certificati dei destinatari vengono presi dagli archivi di chiavi forniti.
using var document = new PdfDocument();
var handler = new PdfPublicKeyEncryptionHandler("owner-key-store.p12", "password");
var permissions = new PdfPermissions();
permissions.Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.PrintDocument;
handler.AddRecipient("recipient-key-store.p12", "password", permissions);
var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
document.Save(outputFileName, saveOptions);
Limita la modifica di un file PDF
Quando si crittografa un documento PDF, è necessario configurare le autorizzazioni per gli utenti del file. In altre parole, devi specificare l'autorizzazione PDF da concedere per il documento aperto con una password utente o un certificato corrispondente a un destinatario normale.
La libreria Docotic.Pdf fornisce la classe PdfPermissions per le autorizzazioni utente. Questa classe offre due modi per configurare le autorizzazioni. Puoi configurare tutte le autorizzazioni in una sola volta usando la proprietà Flags. L'alternativa è usare proprietà individuali per ogni possibile autorizzazione.
Quando crei un oggetto PdfStandardEncryptionHandler, usa la proprietà UserPermissions per accedere alle autorizzazioni. Con un oggetto PdfPublicKeyEncryptionHandler, usa il costruttore PdfPermissions. Il resto della configurazione è uguale.
Il seguente codice mostra come configurare le autorizzazioni PDF in C#:
// Per impostazione predefinita, gli oggetti delle autorizzazioni consentono tutto.
// È possibile usare la proprietà Flags per concedere solo autorizzazioni specifiche.
var permisssions1 = new PdfPermissions
{
Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.ModifyAnnotations
};
// Oppure è possibile disabilitare solo le autorizzazioni che si desidera negare.
var permisssions2 = new PdfPermissions
{
AssembleDocument = false,
CopyContents = false,
ExtractContents = false,
ModifyContents = false,
PrintDocument = false,
PrintFaithfulCopy = false
};
// Oppure è possibile disabilitare prima tutte le autorizzazioni e quindi abilitare solo quelle
// che si desidera consentire.
var permisssions3 = new PdfPermissions
{
AllowEverything = false,
FillFormFields = true,
ModifyAnnotations = true
};
// Gli oggetti permisssions1, permisssions2 e permisssions3 descrivono
// le stesse autorizzazioni a questo punto.
Crittografa PDF usando AES-256 in .NET
Docotic.Pdf può crittografare documenti PDF con AES-256. Questo algoritmo di crittografia è il più forte supportato dalla libreria. Tieni presente che non tutti i lettori PDF potrebbero supportare l'algoritmo.
Dopo aver creato un oggetto PdfStandardEncryptionHandler o PdfPublicKeyEncryptionHandler, usa la proprietà Algorithm per configurare l'algoritmo di crittografia.
Il seguente codice C# mostra come proteggere un documento PDF con password e crittografarlo usando AES-256:
using var pdf = new PdfDocument();
// ....
var handler = new PdfStandardEncryptionHandler("owner", "user");
handler.Algorithm = PdfEncryptionAlgorithm.Aes256Bit;
var saveOptions = new PdfSaveOptions { EncryptionHandler = handler };
pdf.Save("encrypted", saveOptions);
Crittografia e PDF/A
Non è consentito crittografare file PDF/A. La libreria genera un'eccezione di tipo PdfException quando provi a configurare un gestore di crittografia e ad attivare l'opzione per generare PDF/A nelle opzioni di salvataggio del documento.
PDF/A in breve offre consigli su come proteggere i file PDF/A:
Gli utenti che desiderano proteggere i propri file PDF/A devono proteggere il percorso di archiviazione di questi file. Questo può essere ottenuto, ad esempio, implementando la protezione tramite password per una cartella o un'unità.