pdf - Druck aus dem Kontextmenü

  • Ich hoffe, ich bin hier richtig in den Schnipseln.


    Das Vorgestellte entstand, weil ich den Mut hatte, meine Partnerin vom MAC zu SuSE zu migrieren.

    Das ist nun weitgehend abgeschlossen, die Tochter hat ihren alten MAC mit nach England genommen.


    Ein durchaus nützliches, vor allem von meiner Partnerin regelmäßig genutztes Tool fehlte auf dem Leap 15.2:


    PDF-Dateien aus dem Kontextmenü im Dolphin oder Konqueror heraus drucken zu können. Und dies, explizit, auch in Broschürenform.


    Und nachdem ich mich eh sehr über pdftk zur PDF-Manipulation freue (und es rudimentär "beherrsche") und mich mit dem lp - Befehl schon länger mal beschäftigen wollte (systemnah finde ich immer interessant) habe ich Beides in ein Script gepackt. Meine ersten Gehversuche mit kdialog sind auch noch rein gerutscht.


    Vorweg noch: Ich bin Anfänger und das sieht man dem Script sicher auch an.

    Verbesserungsideen nehme ich gerne an. Und auf jeden Fall wäre es schön, wenn jemand Versiertes mal drüber schaut, ob nicht irgendein böser Fehler versteckt ist.


    Lauffähig: Getestet auf Tumbleweed und Leap 15.2 mit KDE - Plasma - 5.xx - Desktop.

    Bitte stets erst Alles lesen, dann machen - manche Info kommt vielleicht erst zwei Zeilen später.


    Teil 0: Schnellstart

    pdfDruck.desktop.txt runterladen und in /home/<user>/.local/share/kservices5/ServiceMenus/ verschieben. Das .txt am Ende löschen, damit es pdfDruck.desktop wird.

    pdfDruck.sh.txt herunter laden und nach /home/<user>/bin/kde/pdfdruck/ verschieben. Das .txt am Ende löschen.

    pdfleer.pdf herunter laden und nach /home/<user>/bin/kde/pdfdruck/ verschieben.

    Das sollte in vielen Fällen funktionieren. So viel ist an dem Script nicht dran, ist eigentlich selbst erklärend.

    Für mehr Infos gibts:


    Teil 1: Kontextmenü zu Dolphin bzw. Konqueror hinzufügen. Inwieweit die Kollegen Nautilus, Krusader und wen es noch alles gibt das integrieren weiß ich nicht.


    Die Datei pdfDruck.desktop runterladen und in /home/<user>/.local/share/kservices5/ServiceMenus/ verschieben.

    <user> bitte durch Deinen Beutzernamen ersetzen. Das .txt am Ende löschen, damit es pdfDruck.desktop wird. Die Datei ist kein Script und muss nicht als ausführbar gekennzeichnet sein.


    Damit sollte im Dolphin / Konqueror dann bei Rechtsklick auf ein .pdf - Dokument im Kontextmenü der Eintrag "pdf - Druck" als Menüpunkt erscheinen.


    Wenn das nicht der Fall ist, oder das Verzeichnis nicht existiert:

    Die Eingabe von kf5-config --path services auf der Konsole gibt die Pfade an, in denen KDE nach diesen .desktop - Dateien sucht.

    Wie in der PATH - Variablen mit : Doppelpunkten getrennt.


    Landet die pdfDruck.desktop im oben angegebenen /home/<user>/... - Verzeichnis, ist das Kontextmenü natürlich nur für diesen User verfügbar.

    Für systemweite Verfügbarkeit muss sie in /usr/share/kservices5/ verschoben werden. - Nicht getestet - . Dafür braucht man root-Rechte.

    Analog zu oben, evtl. einen bei Dir anderen Pfad mit kf5-config --path services heraus finden.


    Teil 2: Script hinzufügen


    Das Script pdfDruck.sh.txt herunter laden und nach /home/<user>/bin/kde/pdfdruck/ verschieben. Das .txt am Ende löschen, damit es pdfDruck.sh wird.

    Wenn das Verzeichnis nicht existiert, vorher erstellen. Das Verzeichnis kann angepasst werden, dazu in Teil 4.

    Das Script muss ausführbar sein. Deshalb eine Konsole öffnen, mit cd /home/<user>/bin/kde/pdfdruck in das Verzeichnis navigieren.

    Mit Eingabe des Befehls chmod +x pdfDruck.sh wird das Script als ausführbar (executable) gekennzeichnet.


    2a) pdfleer.pdf herunter laden und nach /home/<user>/bin/kde/pdfdruck/ verschieben. Das ist eine leere A4-pdf Seite, die im gleichen Verzeichnis wie die pdfDruck.sh liegen muss.


    Damit sollte das Ganze dann funktionieren.


    Teil 3: Erklärung


    Viel zu erklären gibt es da an sich - hoffentlich - nicht.

    Das Script holt sich die verfügbaren Drucker aus der Datei /etc/printcap.

    Beim ersten Aufruf gelangt man automatisch in die Druckerauswahl. Hier einen Drucker auswählen und zum Standarddrucker machen.

    Das bezieht sich nur auf den Standard für dieses Script, also den Kontext-Menü-pdf-Druck, und ändert nichts sonst im System.


    Der Menüeintrag enthält einige Unterpunkte. Die ersten vier drucken das rechts-geklickte Dokument direkt aus. Und zwar

    (1) und (2):

    Einseitig (nur eine Papierseite wird bedruckt) oder doppelseitig, wobei möglicherweise vorhandene Einstellungen des gewählten Druckers ignoriert werden.

    Also auch wenn in den Druckereinstellungen für z.B. "HP-Drucker alpha" einseitiger Druck eingestellt ist, es wird so gedruckt wie im Kontextmenü gewählt.

    (3) und (4):

    Wieder einseitig bzw. doppelseitig, aber auf jeder gedruckten Seite landen zwei Seiten des Originaldokuments. Z.B. für die Archivierung von Kontoauszügen, sofern man die nicht öfters lesen muss, ...

    (5) Broschuere

    Druckt das Dokument so, daß man die DIN A4-Seiten in der Mitte falten kann und dann wie in einer Broschüre durchblättert.

    Jede A4-Seite wird also auf A5 verkleinert.

    Der Spaß hier war, die Formeln raus zu finden, wie die Seiten umnummeriert werden müssen...

    Wer an Sudoku Spaß hat kann sich daran auch probieren.

    (6) Broschuere speichern

    Es wird ein .pdf-Dokument erzeugt in dem die Seiten so umnummeriert sind, daß es als Broschüre ausgedruckt werden kann.

    Das Dokument erscheint als Originaldokument_brosch.pdf im Verzeichnis des Originaldokuments, also direkt darüber, sofern alphabetisch sortiert wird.

    Der Ausdruck muss dann beidseitig und mit der Option zwei Seiten pro Blatt erfolgen, damit das klappt.

    Die Idee war, daß man das evtl. an jemanden schicken kann, der Broschürendruck selbst nicht zur Verfügung hat.

    (7) Druckerauswahl

    Die Punkte (1) bis (5) starten den Ausdruck unmittelbar auf den im Script hinterlegten Standarddrucker.

    Mit der Druckerauswahl kann man den Drucker zunächst wählen. Den gewählten Drucker kann man dann zum neuen Standarddrucker küren.

    Wie das gewählte Dokument gedruckt wird (also 1 - 5) wird dann im nächsten Schritt bestimmt.


    Teil 4: Anpassung


    (1) Kontextmenü

    Die Option erscheint bei Rechtsklick auf .pdf-Dokumente direkt im Kontextmenü.

    Wenn die Zeile 8 in der pdfDruck.desktop deaktiviert wird (löschen oder ein "#" davor setzen) erscheint die Option als Unterpunkt zum Menüeintrag "Aktionen".


    (2) Pfad zu pdfDruck.sh

    Wer das Script pdfDruck.sh an einem anderen Ort ablegen möchte, kann das tun. Dazu muss dann aber in der aufrufenden pdfDruck.desktop der Pfad zum Script angepasst werden. Das passiert in den Zeilen 14, 20, 26, ..., überall wo Exec=.......... steht.

    Der Pfad darf keine Leerzeichen enthalten. Den Pfad in, schwache oder starke, Anführungszeichen zu setzen ( also " oder ') hat bei mir nicht funkioniert!

    Was andere Sonderzeichen betrifft habe ich nicht experimentiert. Grundsätzlich verwende ich in Pfaden, die irgendwie mit Programmausführungen zu tun haben, nur A-Z, a-z, 0-9 und Bindestrich - oder Unterstrich _ .

    Der Pfad muss für jede der Exec=....... - Zeilen geändert werden. Ab einschließlich  " %u"... darf nichts mehr verändert werden. Ein Leerzeichen vor "%u" nicht vergessen.


    Alternativ, für Mutige und Vertrauende:

    - Konsole öffnen, in /home/<user>/.local/share/kservices5/ServiceMenus/ navigieren (oder wo immer die pdfDruck.desktop bei Dir gelandet ist).

    - Eingabe: cp pdfDruck.desktop pdfDruck.desktop.O <mit Enter abschließen> <macht eine Kopie der Datei>

    - Eingabe: sed -i 's:Exec=.*/pdfDruck\.sh\(.*\):Exec=neuer_Pfad/pdfDruck.sh\1:' pdfDruck.desktop <Enter>

    wobei neuer_Pfad der Pfad ist, wo die pdfDruck.sh liegt, ohne Slash / am Ende.

    Damit sollte der Pfad in allen Anweisungen geändert sein. Wenns nicht funktioniert war entweder der Pfad falsch geschrieben (Slash "/" am Ende?, Schreibfehler?) oder es stimmt sonst was nicht. Dann die Kopie der Datei wieder zum Original machen:

    - Eingabe: mv pdfDruck.desktop.O pdfDruck.desktop <Enter>


    Die leere A4-PDF-Seite muss auch in das Verzeichnis mit dem Script pdfDruck.sh verschoben werden.


    (3) Bezeichnung

    Wie der Eintrag im Kontextmenü erscheint lässt sich in der pdfDruck.desktop in Zeile 7 ändern. Einfach ausprobieren.

    Die Namen der SübMenü-Einträge kann man in den Zeilen 11, 17, 23, ..., Name= ändern.

    Da muss sonst auch nichts angepasst werden.


    Ja dann, hoffe ich es funktioniert und gefällt.