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.
