staging.inyokaproject.org

KDE Servicemenü "PDF zusammenstellen"

Status: Ungelöst | Ubuntu-Version: Kubuntu 22.10 (Kinetic Kudu)
Antworten |

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Dies ist ein KDE Servicemü um im KDE Dateimanager Dolphin mehrere PDFs auszuwählen und in einem Rutsch zu einem PDF zusammenzuführen.

Der Name des produzierten PDFs ist dann: Dateiname1+Datename2_merged.pdf

Benötigt wird: KDE, libnotify-bin und pdftk-java. Falls nicht installiert:

sudo apt-get install libnotify-bin pdftk-java

Der Inhalt der Datei /home/USERNAME/.local/share/kservices5/ServiceMenus/pdf_collate.desktop:

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf
Actions=01_pdf collate_pages;
X-KDE-Submenu= PDF collate ==>
X-KDE-Submenu[de]=PDF zusammenstellen ==>
Icon=application-pdf

[Desktop Action 01_pdf collate_pages]
Icon=application-pdf
Name=PDFs collate
Name[de]=PDFs zusammenstellen
Exec=[ -f "`echo "%F" | grep .pdf | xargs basename -s .pdf | xargs echo | sed -e s'/ /+/'g -e s'/[.]*$/_merged.pdf/I'`" ] && notify-send -i window-close.png "STOP! `echo "%F"| grep .pdf | xargs basename -s .pdf | xargs echo | sed -e s'/ /+/'g -e s'/[.]*$/.pdf/I'`File exists!" ; [ ! -f "`echo "%F" | grep .pdf | xargs basename -s .pdf | xargs echo | sed -e s'/ /+/'g -e s'/[.]*$/_merged.pdf/I'`" ] && pdftk %F cat output `echo "%F"| grep .pdf | xargs basename -s .pdf | xargs echo | sed -e s'/ /+/'g -e s'/[.]*$/_merged.pdf/I'` && notify-send -i dialog-ok-apply.png "PDF: `echo "%F"| grep .pdf | xargs basename -s .pdf | xargs echo | sed -e s'/ /+/'g -e s'/[.]*$/_merged.pdf/I'` Ready!" 

USERNAME im Dateipfad muss durch den eigenen Usernamen ersetzt werden.

Dann noch zur Sicherheit einmal kbuildsycoca5 durchlaufen lassen:

kbuildsycoca5 --noincremental

Dann sollte es auch schon funktionieren. Wenn die entsprechende Ausgabe der PDF Datei Dateiname1+Datename2_merged.pdf existiert, stoppt das Servicemenü und gibt ein Warn-Pop-Up aus.

Die Test-Datei die ich verwendet hatte, war diese:

https://www.orimi.com/pdf-test.pdf

Google spuckte mir das als Testdatei für PDF aus. Es ist mit Acrobat Distiller 7.0.5 (Windows) erstellt und war PDF-Version 1.6.

Chip88

Anmeldungsdatum:
16. Juni 2008

Beiträge: 560

@ trollsportverein, vielen Dank für das tolle Servicemenü!

Ich habe es direkt bei mir implementiert, wobei mir folgendes Problem aufgefallen ist: Unter dem Pfad Schule/Schuljahr 2022 - 2023/Fach A/Klasse X/ habe ich zwei PDF - Dateien: 1 a.pdf und 2 b.pdf.

Wenn ich die zusammenführen möchte, erhalte ich als Output eine Datei mit folgendem Dateinamen: Schuljahr+2022+-+1+a+Schuljahr+2022+-+2+b_zusammen.

Ich gehe davon aus, dass die Leerzeichen in den Ordnernamen den inkorrekten Dateinamen verursachen.

Wie ließe sich das korrigieren bzw. wie muss Dein Exec - Befehl angepasst werden, damit Leerzeichen auch als solche gelesen & im Output beibehalten werden?

Danke im Voraus für Deine Rückmeldung!

Chip88

Anmeldungsdatum:
16. Juni 2008

Beiträge: 560

@ trollsportverein, würde das gern nochmal anstoßen. 😎

Danke im Voraus für Deine Unterstützung!

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Chip88 schrieb:

@ trollsportverein, würde das gern nochmal anstoßen. 😎

Ja mach mal. ☺ Wer Leezeichen in Verzeichnisnamen und Dateinamen in Umlauf bringt, darf es auch selbst ausbaden.

Überlege mal selbst, Du hast 8 Leerzeichen, woher soll sed wissen, wo Du das Pluszeichen hin haben willst? sed findet 8 Leerzeichen und ersetzt die mit dem Pluszeichen. Gefordert war der Leerzeichenwildwuchs nicht:

Chip88 schrieb:

Diese drei Dateien werden zusammengefasst.

file1.pdf

file2.pdf

file3.pdf

Als Output wird bisher eine Datei merged.pdf erstellt.

Ich würde aber gern, dass die Output - Datei file1_merged.pdf heißt.

Ließe der Code sich so anpassen, dass der Name der Output - Datei file1+file2+file3_merged.pdf lautet?

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 2627

Weihnachten steht vor der Tür. 🎅🏻 🎄

Das neue:

  • /home/USERNAME/.local/share/kservices5/ServiceMenus/pdf_collate.desktop

Mit Mut zur Lücke. 😉

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf
Actions=01_pdf collate_pages;
X-KDE-Submenu= PDF collate ==>
X-KDE-Submenu[de]=PDF zusammenstellen ==>
Icon=application-pdf

[Desktop Action 01_pdf collate_pages]
Icon=application-pdf
Name=PDFs collate
Name[de]=PDFs zusammenstellen
Exec=[ -f "`echo "%N" | grep .pdf | xargs -d "\n" basename -s .pdf | sed -e s'/\\.pdf /\\ +\\  /'g -e s'/[.]*$/_merged.pdf/I'`" ] && notify-send -i window-close.png "STOP! `echo "%N" | grep .pdf | xargs -d "\n" basename -s .pdf | sed -e s'/\\.pdf /\\ +\\  /'g -e s'/[.]*$/_merged.pdf/I'` File exists!" ; [ ! -f "`echo "%N" | grep .pdf | xargs -d "\n" basename -s .pdf | sed -e s'/\\.pdf /\\ +\\  /'g -e s'/[.]*$/_merged.pdf/I'`" ] && pdftk %N cat output "`echo "%N" | grep .pdf | xargs -d "\n" basename -s .pdf | sed -e s'/\\.pdf /\\ +\\  /'g -e s'/[.]*$/_merged.pdf/I'`" && notify-send -i dialog-ok-apply.png "PDF: `echo "%N" | grep .pdf | xargs -d "\n" basename -s .pdf | sed -e s'/\\.pdf /\\ +\\  /'g -e s'/[.]*$/_merged.pdf/I'` Ready!"

USERNAME im Dateipfad muss durch den eigenen Usernamen ersetzt werden.

Für die Benachrichtigungen braucht es libnotify-bin.

sudo apt-get install libnotify-bin

Dann noch zur Sicherheit einmal kbuildsycoca5 durchlaufen lassen:

kbuildsycoca5 --noincremental

Dann sollte es auch schon funktionieren. Wenn die entsprechende Ausgabe der PDF Datei Dateiname 1 + Dateiname 2_merged.pdf existiert, stoppt das Servicemenü und gibt ein Warn-Pop-Up aus.

Antworten |