Verschlüsselung und Passwörter bearbeiten mit der wsclient Bibliothek

Mindestanforderungen

  • Java-Version: 7
  • webPDF-Version: 7
  • wsclient-Version: 1

In diesem Beitrag stellen wir die Security-Operation der Toolbox-Webservices von webPDF vor und zeigen die Nutzung mit der wsclient-Bibliothek.

Wichtiger Hinweis: Das folgende Coding-Beispiel basiert auf der webPDF-wsclient-Bibliothek.

REST- oder SOAP-Session erzeugen

Für den Aufruf des Webservices sollten Sie zunächst eine REST- oder SOAP-Session erzeugt haben. Über die WebServiceFactory können Sie entweder ein ToolboxWebService-Objekt (SOAP) oder ein ToolboxRestWebService-Objekt (REST) erzeugen.

SOAP:

ToolboxWebService toolboxWebService =
WebServiceFactory.createInstance(
session, WebServiceType.TOOLBOX
);

REST:

ToolboxRestWebService toolboxWebService =
WebServiceFactory.createInstance(
session, WebServiceType.TOOLBOX
);

Über setDocument() übergeben Sie dem Webservice-Objekt ein RestDocument oder SoapDocument.

Weiterführende Beiträge:

Webservice-Parameter

Für schreibende Zugriffe auf ein Dokument ist häufig das aktuelle open- und/oder permission-Passwort erforderlich. Diese Werte setzen Sie direkt am erzeugten ToolboxWebService-Objekt:

toolboxWebService.getPassword().setOpen("password");
toolboxWebService.getPassword().setPermission("password");

Ist das Dokument nicht passwortgeschützt, können Sie diesen Schritt überspringen.

Der Toolbox-Webservice

Der Toolbox-Webservice ist ein Endpunkt Ihres webPDF-Servers und bündelt Operationen, mit denen sich PDF-Dokumente direkt bearbeiten lassen. Eine dieser Operationen ist Security.

Die Security-Operation ermöglicht es, Sicherheits- und Zugriffseinstellungen sowie die Verschlüsselung eines PDF-Dokuments zu ändern.

So fügen Sie eine Security-Operation hinzu:

SecurityType security = new SecurityType();
toolboxWebService.getOperation().add(security);

Die Parametrisierung erfolgt über das Objekt Security.

Der Modus "encrypt"

Der erste Modus erlaubt, Sicherheitseinstellungen hinzuzufügen oder zu ändern. Dafür erzeugen Sie ein EncryptType-Objekt und fügen es der Operation hinzu:

EncryptType encrypt = new EncryptType();
security.setEncrypt(encrypt);

Am Objekt Encrypt stehen unter anderem folgende Parameter zur Verfügung:

canAssemble (Standardwert: false)

Legt fest, ob das Dokument umgestaltet werden darf (z. B. Seiten löschen, einfügen oder drehen).

encrypt.setCanAssemble(true);

canExtractContent (Standardwert: false)

Legt fest, ob Inhalte entnommen und kopiert werden dürfen.

encrypt.setCanExtractContent(true);

canExtractContentForAccessibility (Standardwert: false)

Legt fest, ob Inhalte für Barrierefreiheitszwecke entnommen und kopiert werden dürfen.

encrypt.setCanExtractForAccessibility(true);

canFillInForm (Standardwert: false)

Legt fest, ob Formulare ausgefüllt und Dokumente signiert werden dürfen.

encrypt.setCanFillInForm(true);

canModify (Standardwert: false)

Legt fest, ob Inhalte der Dokumentenseiten verändert werden dürfen.

encrypt.setCanModify(true);

canModifyAnnotations (Standardwert: false)

Legt fest, ob Anmerkungen und Annotationen bearbeitet werden dürfen.

encrypt.setCanModifyAnnotations(true);

canPrint (Standardwert: false)

Legt fest, ob das Dokument gedruckt werden darf.

encrypt.setCanPrint(true);

canPrintHighRes (Standardwert: false)

Legt fest, ob das Dokument hochauflösend gedruckt werden darf.

encrypt.setCanPrintHighRes(true);

Das Objekt "password" (encrypt-Modus)

Über das Objekt Password werden Passwort und Verschlüsselung gesetzt:

EncryptType.Password password = new EncryptType.Password();
encrypt.setPassword(password);

encryptionKey (Standardwert: "RC4_128")

Legt das Verschlüsselungsverfahren fest:

  • RC4_40 = 40 bit RC4
  • RC4_128 = 128 bit RC4
  • AES_128 = 128 bit AES
  • AES_256 = 256 bit AES
password.setEncryptionKey(PdfEncryptionKeyType.AES_128);

Bitte beachten Sie: AES_256 funktioniert nur, wenn in der JVM die Java Cryptography Extension (JCE) mit "Unlimited Strength" aktiviert ist.

open (Standardwert: "")

Setzt das Passwort, das beim Öffnen des PDF-Dokuments abgefragt wird.

password.setOpen("password");

permission (Standardwert: "")

Setzt das Passwort für Bearbeitungsaktionen (z. B. Entfernen von Seiten). Wenn Zugriffsberechtigungen gesetzt werden sollen, darf dieses Passwort nicht leer sein.

password.setPermission("password");

Während das open-Passwort zum Öffnen/Entschlüsseln zwingend relevant ist, hängt die Durchsetzung des permission-Passworts vom verwendeten Anzeigeprogramm oder Editor ab.

Der Modus "decrypt"

Der zweite Modus der Security-Operation entfernt jegliche Verschlüsselung aus dem Dokument. Weitere Parameter sind dafür nicht erforderlich.

security.setDecrypt(new DecryptType());

Beispiel für den Webservice-Aufruf

Nachfolgend ein ausführlicheres Beispiel für den SOAP-Aufruf:

try (
// Aufbau einer Session mit dem webPDF-Server (hier SOAP):
SoapSession session = SessionFactory.createInstance(
WebServiceProtocol.SOAP,
new URL("https://localhost:8080/webPDF/")
);

// Bereitstellen des Quelldokuments und Zieldokuments:
SoapDocument soapDocument = new SoapDocument(
new File("Pfad des Quelldokuments").toURI(),
new File("Pfad des Zieldokuments")
)
) {
// Webservice-Aufruf und Verarbeitung
} catch (ResultException | MalformedURLException ex) {
// Fehlerbehandlung
}

webPDF-Dokumentation

Bitte beachten Sie auch unser Nutzerhandbuch mit der Dokumentation zur Security-Parameterstruktur sowie der Dokumentation zu Errorcodes und möglichen Fehlern.

Hinweis: Alle Parameter sind mit Standardwerten vorbelegt. Wenn ein Standardwert bereits dem gewünschten Verhalten entspricht, muss der Parameter nicht explizit gesetzt werden.

Weitere Coding-Beispiele zur wsclient-Bibliothek finden Sie hier.