Arbeiten mit pdf aus dem Kontextmenü des Dateimanagers / Sudo Null IT News

Der wunderbare Dateimanager Dolphin ist für jeden gut. Und zwei Bedienfelder und eine Vielzahl von Kontextmenüs, die die Verarbeitung verschiedener Befehle und Aufgaben beschleunigen. Aber was ist, wenn Sie schnell und einfach mehrere einseitige PDF-Dateien zusammenstellen müssen? Installieren Sie aus diesem Grund keine schwere Software, die anschließend äußerst selten verwendet wird. Natürlich nicht. Lassen Sie uns einfach die Möglichkeiten unseres Managers erweitern, indem wir dem Kontextmenü ein paar Elemente hinzufügen. Darüber hinaus ist es überhaupt nicht schwierig, dies zu tun. Aber zuerst müssen Sie ein paar Skripte für genau diese Verarbeitung von PDF-Dateien schreiben. Fangen wir also an.

Arbeiten mit pdf-Dateien

Zur Verarbeitung von Dateien verwenden wir das Konsolenprogramm pdftk. Da das Skript in das Kontextmenü eingebettet wird, verwenden wir das Dienstprogramm zenity, um Informationen über Fehler und den Fortschritt der Ausführung anzuzeigen. Wir werden auch Popup-Nachrichten benötigen, Notify-Send wird dafür verantwortlich sein.

pdfmark – PDF-Dateien zusammenführen und Lesezeichen hinzufügen

Da einige Argumente an das Skript übergeben werden, müssen Sie überprüfen, was und wie viel über die Befehlszeile übergeben wurde. Und da es nicht so viele Argumente gibt, schreiben wir die Prüfung in zwei Zeilen. Zuerst prüfen wir den Hilfeaufruf mit den Tasten -h und –help. Die zweite Zeile prüft nur die Anzahl der übertragenen Dateien, es macht keinen Sinn, eine Datei zu verarbeiten.

Als nächstes erstellen wir ein temporäres Verzeichnis und erstellen darin bereits eine Lesezeichendatei für die zukünftige kombinierte PDF-Datei. Fügen wir den Titel des Dokuments durch den Namen des Verzeichnisses hinzu, aus dem wir die Datei kombinieren. Wir verwenden den Benutzernamen als Namen des Autors des Dokuments. Lesezeichen nach Dateinamen zur Lesezeichendatei hinzufügen. Wir führen zusammen, fügen Lesezeichen hinzu, überprüfen den Erfolg der Operation anhand des Vorhandenseins der endgültigen Datei und zeigen die entsprechenden Meldungen an. Löschen Sie das temporäre Verzeichnis vor dem Beenden.

pdfmark: bookmarks and union{ NumberPage=1 echo “InfoBegin” echo “InfoKey: Title” echo “InfoValue: ${WorkDir}” echo “InfoBegin” echo “InfoKey: Author” echo “InfoValue: ${USER^}” echo ” NumberOfPages: ${#Dateiliste[@]}” für Lesezeichen in “${MarkList[@]}”; do echo “BookmarkBegin” echo “BookmarkTitle: ${BookMark}” echo “BookmarkLevel: 1” echo “BookmarkPageNumber: ${NumberPage}” ((NumberPage += 1)) done } >>”${TmpDir}” /file.info # Ausgewählte Dokumente zusammenführen und Lesezeichen hinzufügen (pdftk “${@}” cat output “${TmpDir}”/”${WorkDir}”.pdf && pdftk “${TmpDir}”/”${WorkDir} “.pdf update_info “${TmpDir}”/file.info Ausgabe “${WorkDir}.pdf”) | zenity –progress –title=”${msg_title}” –text=”${msg_progress}” – -pulsate –width=500 –no-cancel –auto-close –auto-kill

pdf_service_menu – Menü zur Bearbeitung von PDF-Dateien

Das zweite Skript führt mehr Operationen mit PDF-Dateien durch. Liste der verfügbaren Operationen:

  • burst – ermöglicht es Ihnen, das gesamte Dokument in Seiten zu zerlegen;

  • extrahieren – extrahiert die angegebenen Seiten aus dem Dokument;

  • entfernen – entfernt eine Reihe von Seiten aus einem Dokument;

  • cat – kombiniert Dokumente;

  • add – fügt die ausgewählten Dokumente in der Reihenfolge hinzu, in der sie ausgewählt wurden;

  • Stempel – setzt einen Stempel auf die Dokumentseiten;

  • pdf2jpg – ermöglicht es Ihnen, Dokumentseiten in jpg zu konvertieren;

  • info – zeigt Informationen über das Dokument an;

Hier verwenden wir kdialog als grafische Dialoge. Im Wesentlichen die gleiche Zenität, aber näher an kde. Und es wird vom Design her viel besser zu Dolphin passen.

Es macht keinen Sinn, einfache Funktionen wie Burst, Extract und dergleichen zu beschreiben. Dort ist alles einfach und übersichtlich.

Interessant ist die Remove-Funktion, die eine Reihe von Seiten aus einem Dokument entfernt. pdfkt unterstützt das Löschen von Seiten nicht. Aber es kann sowohl Seiten einzeln als auch eine Reihe von Seiten extrahieren. Mit diesem Trick entfernen wir eine Reihe von Seiten.

Zunächst müssen Sie den Seitenbereich definieren. Wir fragen den Benutzer über kdialog nach den Bereichsgrenzen. Und wir bestimmen die Nummer der letzten Seite im Dokument. Es wird benötigt, um die Grenzen des Dokuments nicht zu überschreiten.

pdf_service_menu: kdialog – Seitenbereichemsg_remove_title=”Seiten entfernen…” msg_remove_range=”Seitenbereich aus Dokument entfernen\n\”${filename}\”\n\nAnweisung:\n\nDas Schlüsselwort \”end\” kann sein Wird verwendet, um auf die letzte\nSeite des Dokuments anstelle einer Seitenzahl zu verweisen.Bezieht sich auf eine Seite, wobei\ndie letzte Seitenzahl weggelassen wird.\n\nBeispiele:\n\n2 – Seite 2 löschen;\n3-45 – Seiten löschen 3 bis 45; \n5-end – Seiten 5 bis zuletzt entfernen.\n\nGeben Sie den Bereich der zu entfernenden Seiten ein:” range=”$(kdialog –icon viewpdf –title “${msg_remove_title}” –inputbox ” ${msg_remove_range}” “2-end”)” || Rückkehr 1. . . totalpages=”$(pdftk “${@}” dump_data | grep “NumberOfPages” | cut -d” ” -f 2-)”

Dann prüfen wir die Start- und Endseitenbereiche. Wir müssen sicherstellen, dass wir die Grenzen des Dokuments nicht überschreiten.

pdf_service_menu: page rangesfirst=”${range%-*}” if [ “${first}” = “end” ]; then first=”${totalpages}” else first=”${first//[^[0-9]]/}” wenn [ -z “${first}” ]; dann first=1 sonst if [ “${first}” -eq 0 ]; dann zuerst=1 elif [ “${first}” -gt “${totalpages}” ]; dann first=”${totalpages}” fi fi fi . . . last=”${range#*-}” wenn [ “${last}” = “end” ]; then last=”${totalpages}” else last=”${last//[^[0-9]]/}” wenn [ -z “${last}” ]; dann last=”${totalpages}” elif [ “${last}” -lt “${first}” ]; dann last=”${first}” elif [ “${last}” -gt “${totalpages}” ]; dann last=”${totalpages}” fi fi

Nach allen vorbereitenden Operationen bestimmen wir die Grenzen der Bereiche zum Extrahieren von Seiten.

pdf_service_menu: zu extrahierende Seitenbereiche# Seitenbereich range1 definieren if [ “${first}” -eq 1 ]; then range1=” elif [ “${first}” -eq 2 ]; then range1=”1″ else range1=”1-$((first – 1))” fi # Seitenbereich definieren range2 if [ “${last}” -eq “${totalpages}” ]; then range2=” elif [ “${last}” -eq “$((totalpages – 1))” ]; then range2=”${totalpages}” else range2=”$((last + 1))-${totalpages}” fi

Als nächstes prüfen wir, dass wir nicht alle Seiten aus dem Dokument löschen, wir geben an, wo die endgültige Datei gespeichert werden soll. Und wir führen die Extraktion von Seiten in den gefundenen Bereichen durch.

Skripte mit dem Kontextmenü verbinden

Die Skripte sind fertig, sie müssen noch mit dem Dolphin-Kontextmenü verbunden werden. Wir schreiben eine einfache Desktop-Datei, in die wir unsere Funktionen malen, und werfen sie in das ServiceMenus-Verzeichnis.

Fazit

Alle Skripte und Funktionen wurden ausschließlich aus den Aufgaben geschrieben, die am häufigsten zu lösen waren. Stempel wurde später zu Versuchszwecken hinzugefügt und ist geblieben. info – fügt auch nicht viel Funktionalität hinzu. Und auch alle anderen Funktionen werden recht häufig genutzt und sind gefragt. Bevor Sie diese Skripte verwenden, müssen Sie sicherstellen, dass alle in den Skripten verwendeten Pakete installiert sind. pdftk beispielsweise muss separat installiert werden.

Alle Skripte und Desktop-Dateien sind verfügbar unter github. Es gibt auch ein einfaches install.sh-Skript zum Kopieren von Skripten in Benutzerverzeichnisse.

Similar Posts

Leave a Reply

Your email address will not be published.