Da ich angefangen Paperless-ngx zu benutzen, und mein Scanner immer nur einzelne Dateien machen kann, habe ich eine einfache Möglichkeit gesucht mehrere PDFs zu einer zu vereinen. Die meisten Programme waren mir dazu einfach zu schwer und umständlich und so habe ich mir ein Script (mithilfe von KI) zusammengestöpselt.
Mit diesem Skript kannst du unter Linux mehrere PDF-Dateien bequem zu einer einzigen Datei zusammenfügen – ganz ohne Terminalkenntnisse.
Meine Anleitung hier sollte für alle Debain und Derivate gehen, ich selbst benutzte es auf Mint.
🔧 Voraussetzungen
Bevor du beginnst, stelle sicher, dass folgende Programme installiert sind:
- pdfunite: Ein Werkzeug zum Zusammenführen von PDF-Dateien.
- Zenity: Ermöglicht grafische Dialoge in Shell-Skripten.
Installation (für Debian/Ubuntu-basierte Systeme):
sudo apt update sudo apt install poppler-utils zenity
🖥️ Das Skript
Erstelle ein neues Skript mit folgendem Inhalt:
#!/bin/bash # PDF-Zusammenführung mit grafischer Oberfläche # Überprüfen, ob pdfunite installiert ist if ! command -v pdfunite &> /dev/null; then zenity --error --title="Fehler" --text="pdfunite ist nicht installiert. Bitte installiere es zuerst." exit 1 fi # Überprüfen, ob Zenity installiert ist if ! command -v zenity &> /dev/null; then zenity --error --title="Fehler" --text="Zenity ist nicht installiert. Bitte installiere es zuerst." exit 1 fi # PDF-Dateien im aktuellen Verzeichnis sammeln files=( *.pdf ) if [ ${#files[@]} -eq 0 ]; then zenity --error --title="Fehler" --text="Keine PDF-Dateien im aktuellen Verzeichnis gefunden." exit 1 fi # Dateiauswahl-Dialog (Mehrfachauswahl erlaubt) selected_files=$(zenity --file-selection --multiple --separator=":" --title="Wähle die PDF-Dateien zum Zusammenführen aus" --file-filter="*.pdf") # Abbruch prüfen if [ -z "$selected_files" ]; then zenity --warning --title="Abbruch" --text="Es wurden keine Dateien ausgewählt." exit 1 fi # Anzahl der ausgewählten Dateien prüfen IFS=":" read -r -a files_array <<< "$selected_files" if [ ${#files_array[@]} -lt 2 ]; then zenity --error --title="Fehler" --text="Bitte wähle mindestens zwei PDF-Dateien aus." exit 1 fi # Ausgabe-Dateinamen abfragen output_filename=$(zenity --entry --title="Ausgabedateiname" --text="Bitte gib den Namen für die zusammengeführte PDF-Datei ein:" --entry-text="output.pdf") if [ -z "$output_filename" ]; then zenity --warning --title="Abbruch" --text="Kein Ausgabedateiname eingegeben." exit 1 fi # Endung .pdf anhängen, falls nicht vorhanden if [[ "$output_filename" != *.pdf ]]; then output_filename="${output_filename}.pdf" fi # Zielordner auswählen output_folder=$(zenity --file-selection --directory --title="Wähle den Zielordner für die zusammengeführte Datei") if [ -z "$output_folder" ]; then zenity --warning --title="Abbruch" --text="Kein Zielordner ausgewählt." exit 1 fi # Pfad zusammenbauen output_path="${output_folder}/${output_filename}" # Prüfen, ob die Zieldatei bereits existiert if [ -e "$output_path" ]; then zenity --question --title="Datei existiert" --text="Die Datei '$output_path' existiert bereits. Möchtest du sie überschreiben?" if [ $? -ne 0 ]; then zenity --info --title="Abbruch" --text="Vorgang abgebrochen. Keine Dateien wurden zusammengeführt." exit 1 fi fi # Zusammenführen mit Fortschrittsanzeige ( sleep 1 pdfunite "${files_array[@]}" "$output_path" ) | zenity --progress --title="Zusammenfügen..." --text="Dateien werden zusammengeführt..." --pulsate --no-cancel --auto-close # Prüfen, ob das Zusammenführen erfolgreich war if [ $? -eq 0 ]; then zenity --info --title="Erfolg" --text="Dateien wurden erfolgreich zusammengeführt:\n$output_path" else zenity --error --title="Fehler" --text="Beim Zusammenführen der Dateien ist ein Fehler aufgetreten." fi
Anleitung:
- Skript speichern: Öffne einen Texteditor und füge den obigen Code ein. Speichere die Datei beispielsweise als
pdf_zusammenfuegen.sh
. - Ausführbar machen: Öffne ein Terminal und navigiere zum Speicherort der Datei. Führe folgenden Befehl aus:
chmod +x pdf_zusammenfuegen.sh
In der Hoffnung für den einen oder anderen eine Hilfe oder Anregung zu sein.
Solltet ihr Fragen, Tipps oder Anregungen haben solltet bin ich gerne dafür offen.