Diese Seite kann automatisch übersetzten Text enthalten.
PDF-Dokumente in C# und VB.NET verschlüsseln
Mithilfe der Docotic.Pdf-Bibliothek können Sie PDF-Dokumente entweder mit Passwörtern oder Zertifikaten verschlüsseln.
Die Bibliothek verschlüsselt geschützte Dokumente mit einem Verschlüsselungsalgorithmus Ihrer Wahl. Die Bibliothek unterstützt RC4 40-Bit, RC4 128-Bit, AES 128-Bit und AES 256-Bit. Sie legen fest, welche Berechtigungen Sie Benutzern geschützter PDF-Dateien gewähren möchten.

PDF mit Passwörtern schützen
Passwortgeschützte PDF-Dokumente haben ein Besitzer- und optional ein Benutzerpasswort. Alle PDF-Berechtigungen werden gewährt, wenn jemand eine passwortgeschützte PDF-Datei mit dem Besitzerpasswort öffnet. Wird ein PDF-Dokument mit dem Benutzerpasswort oder ganz ohne Passwort geöffnet, werden nur „Benutzer“-Berechtigungen gewährt. Beispielsweise kann der Autor der verschlüsselten PDF-Datei das Drucken für „Benutzer“ verbieten, während der „Besitzer“ das Dokument weiterhin drucken kann.
Um ein passwortgeschütztes PDF-Dokument zu erzeugen, erstellen Sie eine Instanz der Klasse PdfStandardEncryptionHandler und konfigurieren Sie sie nach Bedarf. Dann weisen Sie das Objekt der Eigenschaft EncryptionHandler in den Speicheroptionen des Dokuments zu. Die Bibliothek verwendet den Handler beim Speichern des PDF-Dokuments zur Verschlüsselung.
Das folgende Codebeispiel zeigt, wie Sie eine passwortgeschützte PDF-Datei in C# erstellen:
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);
Der obige Code verwendet owner als Besitzerpasswort und user als Benutzerpasswort. PDF-Anzeigeprogramme benötigen ein Passwort, um die geschützte PDF-Datei zu öffnen. Das liegt daran, dass das Benutzerpasswort nicht null oder ein leerer String ist.
Wenn Sie eine geschützte PDF-Datei haben möchten, aber jedem das Öffnen ohne Passwort erlauben wollen, verwenden Sie für das Benutzerpasswort null oder einen leeren String.
PDF mit Zertifikaten in .NET schützen
Jedes zertifikatgeschützte PDF-Dokument hat eine Empfängersammlung. Die Sammlung kann beliebig viele Elemente enthalten. Jeder Empfänger beschreibt ein Zertifikat, das zum Entschlüsseln des geschützten PDF-Dokuments verwendet werden kann. Für jeden Empfänger sind PDF-Zugriffsberechtigungen angegeben. Die gewährten Berechtigungen für das entschlüsselte PDF-Dokument hängen vom Zertifikat ab, das zum Aufheben des Schutzes verwendet wird.
Einige Zugriffsberechtigungen erlauben alle Vorgänge mit der entschlüsselten PDF-Datei. Empfänger mit solchen Berechtigungen bezeichnen wir in der Docotic.Pdf-Bibliothek als Besitzer. Normale Empfänger haben eingeschränkte Berechtigungen für das entschlüsselte PDF-Dokument.
Um ein zertifikatgeschütztes Dokument zu erstellen, erstellen Sie zunächst eine Instanz der Klasse PdfPublicKeyEncryptionHandler. Konstruktoren ohne Berechtigungsparameter erstellen ein Objekt mit einem Besitzerempfänger. Verwenden Sie Konstruktoren mit dem Berechtigungsparameter, um einen Verschlüsselungshandler mit einem normalen Empfänger zu erhalten.
Sie können mit den Methoden AddOwner weitere Besitzerempfänger hinzufügen. Verwenden Sie die Methoden AddRecipient, um normale Empfänger hinzuzufügen. Sie können dem Verschlüsselungshandler bei Bedarf beliebig viele Besitzer und normale Empfänger hinzufügen.
Weisen Sie die Bibliothek dann an, den Handler beim Speichern des Dokuments zu verwenden. Weisen Sie dazu das Objekt der Eigenschaft EncryptionHandler in den Speicheroptionen des Dokuments zu.
Der folgende Code zeigt, wie Sie eine zertifikatgeschützte PDF-Datei in C# erstellen. Der Code bereitet einen Handler mit einem Besitzer und normalen Empfängern vor. In beiden Fällen werden die Zertifikate für die Empfänger aus den angegebenen Schlüsselspeichern entnommen.
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);
Die Bearbeitung einer PDF-Datei einschränken
Beim Verschlüsseln eines PDF-Dokuments müssen Berechtigungen für Benutzer der Datei festgelegt werden. Anders ausgedrückt müssen Sie die PDF-Berechtigungen angeben, die für das Dokument gewährt werden, das mit einem Benutzerpasswort oder einem zu einem normalen Empfänger passenden Zertifikat geöffnet wird.
Die Docotic.Pdf-Bibliothek stellt die Klasse PdfPermissions für Benutzerberechtigungen bereit. Diese Klasse bietet zwei Möglichkeiten zum Festlegen von Berechtigungen. Sie können alle Berechtigungen auf einmal über die Eigenschaft Flags festlegen. Alternativ können Sie für jede mögliche Berechtigung einzelne Eigenschaften verwenden.
Beim Erstellen eines PdfStandardEncryptionHandler-Objekts verwenden Sie die Eigenschaft UserPermissions, um auf die Berechtigungen zuzugreifen. Bei einem PdfPublicKeyEncryptionHandler-Objekt verwenden Sie den PdfPermissions-Konstruktor. Die übrige Konfiguration ist gleich.
Der folgende Code zeigt, wie Sie PDF-Berechtigungen in C# festlegen:
// Standardmäßig erlauben Berechtigungsobjekte alles.
// Sie können die Eigenschaft Flags verwenden, um nur bestimmte Berechtigungen zu gewähren.
var permisssions1 = new PdfPermissions
{
Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.ModifyAnnotations
};
// Oder Sie können nur die Berechtigungen deaktivieren, die Sie verweigern möchten.
var permisssions2 = new PdfPermissions
{
AssembleDocument = false,
CopyContents = false,
ExtractContents = false,
ModifyContents = false,
PrintDocument = false,
PrintFaithfulCopy = false
};
// Oder Sie können zunächst alle Berechtigungen deaktivieren und dann nur die
// Berechtigungen aktivieren, die Sie zulassen möchten.
var permisssions3 = new PdfPermissions
{
AllowEverything = false,
FillFormFields = true,
ModifyAnnotations = true
};
// Die Objekte permisssions1, permisssions2 und permisssions3 beschreiben
// an dieser Stelle dieselben Berechtigungen.
PDF mit AES-256 in .NET verschlüsseln
Docotic.Pdf kann PDF-Dokumente mit AES-256 verschlüsseln. Dieser Verschlüsselungsalgorithmus ist der stärkste, den die Bibliothek unterstützt. Beachten Sie bitte, dass nicht jeder PDF-Reader den Algorithmus unterstützt.
Nachdem Sie ein PdfStandardEncryptionHandler- oder PdfPublicKeyEncryptionHandler-Objekt erstellt haben, verwenden Sie die Eigenschaft Algorithm, um den Verschlüsselungsalgorithmus festzulegen.
Der folgende C#-Code zeigt, wie Sie ein PDF-Dokument mit Passwörtern schützen und mit AES-256 verschlüsseln:
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);
Verschlüsselung und PDF/A
Es ist nicht zulässig, PDF/A-Dateien zu verschlüsseln. Die Bibliothek löst eine Ausnahme vom Typ PdfException aus, wenn Sie versuchen, einen Verschlüsselungshandler einzurichten und die Option zum Erzeugen von PDF/A in den Speicheroptionen des Dokuments zu aktivieren.
PDF/A auf den Punkt gebracht gibt Hinweise dazu, wie PDF/A-Dateien gesichert werden können:
Benutzer, die ihre PDF/A-Dateien schützen möchten, müssen den Speicherort dieser Dateien schützen. Dies kann beispielsweise durch eine Kennwortschutz für einen Ordner oder ein Laufwerk erreicht werden.