PDF-Dateien unter Linux einfach zusammenfügen

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:

  1. Skript speichern: Öffne einen Texteditor und füge den obigen Code ein. Speichere die Datei beispielsweise als pdf_zusammenfuegen.sh.
  2. 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.

Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert