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:
- REST: Nutzung der REST-Schnittstelle mittels webPDF wsclient
- SOAP: Nutzung der SOAP-Schnittstelle mittels webPDF wsclient
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 RC4RC4_128= 128 bit RC4AES_128= 128 bit AESAES_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.