Diese Seite kann automatisch übersetzten Text enthalten.

Verschlüsseln Sie PDF-Dokumente in C# und VB.NET

Mit Hilfe 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 die Verschlüsselungsalgorithmen RC4 40-Bit, RC4 128-Bit, AES 128-Bit und AES 256-Bit. Sie entscheiden, welche Berechtigungen Sie Benutzern geschützter PDF-Dateien gewähren möchten.

Verschlüsseln Sie PDF-Dokumente in C# und VB.NET

Schützen Sie PDF mit Passwörtern

Passwortgeschützte PDF-Dokumente haben ein Besitzer- und optional 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 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, der „Eigentümer“ kann das Dokument jedoch weiterhin drucken.

Um ein passwortgeschütztes PDF-Dokument zu erstellen, erstellen Sie eine Instanz der Klasse PdfStandardEncryptionHandler und richten Sie sie nach Bedarf ein. Weisen Sie dann das Objekt der Eigenschaft EncryptionHandler in den Dokumentspeicheroptionen zu. Die Bibliothek verwendet den Handler, um das PDF-Dokument beim Speichern zu verschlüsseln.

Der folgende Codeausschnitt zeigt, wie man eine passwortgeschützte PDF-Datei in C# erstellt:

using (PdfDocument document = ...)
{
    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 für das Besitzerkennwort und user für das Benutzerkennwort. PDF-Viewer benötigen ein Passwort, um die gesicherte PDF-Datei zu öffnen. Dies liegt daran, dass das Benutzerkennwort nicht null oder eine leere Zeichenfolge ist.

Wenn Sie eine gesicherte PDF-Datei haben möchten, aber jedem erlauben möchten, sie ohne Passwort zu öffnen, dann verwenden Sie null oder eine leere Zeichenfolge für das Benutzerpasswort.

Schützen Sie PDF mit Zertifikaten in .NET

Jedes zertifikatgeschützte PDF-Dokument verfügt über eine Sammlung von Empfängern. Die Sammlung kann eine beliebige Anzahl von Elementen enthalten. Jeder Empfänger beschreibt ein Zertifikat, mit dem das gesicherte PDF-Dokument entschlüsselt werden kann. Für jeden Empfänger sind PDF-Zugriffsberechtigungen festgelegt. Die für das entschlüsselte PDF-Dokument erteilten Berechtigungen hängen von dem Zertifikat ab, mit dem der Schutz des Dokuments aufgehoben wurde.

Einige Zugriffsberechtigungen erlauben alle Vorgänge mit der entschlüsselten PDF-Datei. Empfänger mit solchen Berechtigungen nennen wir Besitzer in der Docotic.Pdf-Bibliothek. Reguläre Empfänger haben eingeschränkte Berechtigungen für das entschlüsselte PDF-Dokument.

Um ein zertifikatgeschütztes Dokument zu erstellen, beginnen Sie mit der Erstellung einer Instanz der Klasse PdfPublicKeyEncryptionHandler. Konstruktoren ohne Berechtigungsparameter erstellen ein Objekt mit einem Eigentümerempfänger. Verwenden Sie Konstruktoren mit dem Parameter „permissions“, um einen Verschlüsselungshandler mit einem regulären Empfänger zu erhalten.

Sie können mit den Methoden AddOwner weitere Eigentümerempfänger hinzufügen. Verwenden Sie die Methoden AddRecipient, um reguläre Empfänger hinzuzufügen. Sie können dem Verschlüsselungshandler beliebig viele Besitzer und reguläre Empfänger hinzufügen.

Weisen Sie dann die Bibliothek an, beim Speichern des Dokuments den Handler zu verwenden. Weisen Sie dazu das Objekt der Eigenschaft EncryptionHandler in den Dokumentspeicheroptionen zu.

Der folgende Code zeigt, wie Sie eine zertifikatgeschützte PDF-Datei in C# erstellen. Der Code bereitet einen Handler mit einem Eigentümer und regulären Empfängern vor. In beiden Fällen werden Zertifikate für die Empfänger aus den bereitgestellten Schlüsselspeichern entnommen.

using (PdfDocument document = ...)
{
    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);
}

Beschränken Sie die Bearbeitung einer PDF-Datei

Beim Verschlüsseln eines PDF-Dokuments ist es erforderlich, Berechtigungen für Benutzer der Datei einzurichten. Mit anderen Worten: Sie müssen die PDF-Berechtigung angeben, die für das Dokument gewährt werden soll, das mit einem Benutzerkennwort oder einem Zertifikat geöffnet wird, das einem regulären Empfänger entspricht.

Die Bibliothek Docotic.Pdf stellt die Klasse PdfPermissions für Benutzerberechtigungen bereit. Diese Klasse bietet zwei Möglichkeiten zum Einrichten von Berechtigungen. Mit der Eigenschaft Flags können Sie alle Berechtigungen auf einmal einrichten. Die Alternative besteht darin, für jede mögliche Berechtigung individuelle Eigenschaften zu verwenden.

Wenn Sie ein PdfStandardEncryptionHandler-Objekt erstellen, verwenden Sie die Eigenschaft UserPermissions, um auf die Berechtigungen zuzugreifen. Verwenden Sie bei einem PdfPublicKeyEncryptionHandler-Objekt den PdfPermissions-Konstruktor. Der Rest des Setups ist derselbe.

Der folgende Code zeigt, wie PDF-Berechtigungen in C# eingerichtet werden:

// Standardmäßig erlauben Berechtigungsobjekte alles.

// Sie können die Flags-Eigenschaft verwenden, um nur bestimmte Berechtigungen zu erteilen.
var permisssions1 = new PdfPermissions();
permisssions1.Flags = PdfPermissionFlags.FillFormFields | PdfPermissionFlags.ModifyAnnotations;

// Oder Sie können nur die Berechtigungen deaktivieren, die Sie verweigern möchten.
var permisssions2 = new PdfPermissions();
permisssions2.AssembleDocument = false;
permisssions2.CopyContents = false;
permisssions2.ExtractContents = false;
permisssions2.ModifyContents = false;
permisssions2.PrintDocument = false;
permisssions2.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();
permisssions3.AllowEverything = false;
permisssions3.FillFormFields = true;
permisssions3.ModifyAnnotations = true;

// Die Objekte permisssions1, permisssions2 und permisssions3
// beschreiben an dieser Stelle dieselben Berechtigungen.

Verschlüsseln Sie PDF mit AES-256 in .NET

Docotic.Pdf kann PDF-Dokumente mit AES-256 verschlüsseln. Dieser Verschlüsselungsalgorithmus ist der stärkste, der von der Bibliothek unterstützt wird. Bitte beachten Sie, dass möglicherweise 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 einzurichten.

Der folgende C#-Code zeigt, wie man ein PDF-Dokument mit Passwörtern schützt und es mit AES-256 verschlüsselt:

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 erlaubt, 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 Erstellen von PDF/A in den Speicheroptionen eines Dokuments zu aktivieren.

PDF/A in a Nutshell bietet Ratschläge zum Sichern von PDF/A-Dateien:

Benutzer, die ihre PDF/A-Dateien schützen möchten, müssen den Speicherort dieser Dateien schützen. Dies kann beispielsweise durch die Implementierung eines Passwortschutzes für einen Ordner oder ein Laufwerk erreicht werden.