PDFs mit Passwort versehen unter KDE 4

Posted by on 01 Sep 2011 | Tagged as: Debian, hyper_ch, KDE, Ubuntu

Heute tauchte auf der Arbeit die Frage auf, wie man denn bequem ein PDF mit einem Passwort versehen könnte um es “sicher” übers Internet zu verschicken. Die einzige sichere Möglichkeit meiner Meinung nach, wäre halt das Email samt Anhang zu verschlüsseln. Aber das stösst im Geschäftsbereich halt auch auf gewisse Probleme. Obwohl, mit der SuisseID sollte das ja in Zukunft bald mal beseitigt sein.

Zuerst dachte ich, Okular müsste das sicherlich können, denn Okular kann ja auch ausgefüllte Formulare in PDFs speichern. Fehlanzeige!

Also istder nächste Weg gewesen ein Shellscript zu basteln, da ich auch über Google nicht fündig wurde. Das war relativ einfach. Jedoch gibts ein Problem. Nicht jeder mag die Kommandozeile.

Blieb mir also nichts weiter übrig als das irgendwie unter KDE zu machen.

Ich dachte mir, bequem wäre es, wenn man einfach ein PDF rechts anklicken könnte, dann ein Kontextmenu auswählen, Passwort eingeben und gut ist.

Ich bin dann relativ schnell in den Service Menu Seiten und KDE Dialog gelandet:

http://techbase.kde.org/Development/Tutorials/Creating_Konqueror_Service_Menus
http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs

Das hat geholfen. Als war die Aufgabe nur noch, das Shellscript in das Service Menu korrekt einzubinden. Zuerst musste ich das Service Menu Verzeichnis erstellen:

mkdir -P ~/.kde/share/kde4/services/ServiceMenus

Danach habe ich einen neue Eintrag angelegt:

touch ~/.kde/share/kde4/services/ServiceMenus/addPDFPasswd.desktop

und schlussendlich mit einigem Probieren die .desktop Datei mit folgendem Inhalt gefüllt:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=addPDFPasswd
 
[Desktop Action addPDFPasswd]
Name=Add Password to PDF
Name[de]=Passwort zu PDF hinzufügen
Icon=application-pdf
Exec=/bin/bash -c 'InputFile="$0"; TmpFile="/tmp/ServiceMenu_addPDFPasswd.pdf"; Program="pdftk"; if command -v $Program > /dev/null 2>&1 ; then Passwd=`kdialog --password "Set password for the PDF:"`; $Program "$InputFile" output "$TmpFile" user_pw "$Passwd"; mv "$InputFile" "$InputFile.org"; mv "$TmpFile" "$InputFile"; kdialog --msgbox "Password added to selected File\nOriginal was was renamed to .old"; else kdialog --error "$Program could not be found. Please install $Program"; fi' %u
 
########################################### The actual script shown nicely #######################################
#
#
#InputFile="$0";
#TmpFile="/tmp/ServiceMenu_addPDFPasswd.pdf";
#Program="pdftk";
#if command -v $Program > /dev/null 2>&1 ;
#then
#       Passwd=`kdialog --password "Set password for the PDF:"`;
#       $Program "$InputFile" output "$TmpFile" user_pw "$Passwd";
#       mv "$InputFile" "$InputFile.org";
#       mv "$TmpFile" "$InputFile";
#       kdialog --msgbox "Password added to selected File\nOriginal was was renamed to .old";
#else
#       kdialog --error "$Program could not be found. Please install $Program";
#fi' %u

Das Script macht nichts anderes als zuerst zu prüfen, ob pdftk installiert ist, falls ja, dann mache es ein passwortgeschütztes PDF im /tmp Verzeichnis, benennt das Orginal PDF um und verschiebt das passwortgeschützte PDF an die Stelle wo zuvor das Original PDF war.

Sollte pdftk nicht installiert sein, kommt eine Fehlermeldung.

Leider musste ich feststellen, dass der Exec Befehl keine Mehrzeiligen Bash Eingaben mag. Deswegen habe ich das eigentlich Script für die bessere Leserlichkeit nochmals unten angefügt udn auskommentiert. Wenn ich was ändern will, mache ich das im schönen Script und zieh dann alles auf eine Zeile zusammen.

Ebenfalls musste ich feststellen, dass KDE offenbar den Inhalt des Scripts einige Zeit speichert. D.h. wenn die .desktop Datei editiert worden ist, muss noch etwas Geduld geübt werden… 10 Sekunden sollten reichen… und dann kann das geänderte Script via Rechtsklick -> Action ausgeführt werden.

Comments are closed.