2026-02-23 10:45:26 +01:00
2026-02-23 10:45:26 +01:00
2026-02-23 10:45:26 +01:00
2026-02-23 20:02:56 +01:00

PDF zu ICS Konverter - Dienstplan Importer

Dieses Tool extrahiert Kalenderdaten aus Dienstplan-PDFs und konvertiert sie in das iCalendar-Format (ICS), das von den meisten Kalenderanwendungen importiert werden kann.

🎯 Zwei Versionen verfügbar

1. GUI-Version (Grafische Oberfläche) - Empfohlen!

Benutzerfreundliche grafische Oberfläche mit Drag & Drop Support.

./start_gui.sh

Features:

  • Drag & Drop für PDF-Dateien
  • 📋 Mehrere PDFs gleichzeitig verarbeiten
  • 📁 Ausgabe-Verzeichnis frei wählbar
  • 📊 Live-Log und Fortschrittsanzeige
  • 💾 Merkt sich letzte Verzeichnisse

Voraussetzung: Tkinter muss installiert sein (siehe GUI_README.md)

2. CLI-Version (Kommandozeile)

Textbasiertes Menü für die Kommandozeile.

./start.sh

Features:

  • Funktioniert überall ohne zusätzliche Abhängigkeiten
  • 🔄 Automatische Verarbeitung aller PDFs im Verzeichnis
  • 📝 Textbasiertes interaktives Menü

Features

Extrahiert Dienstplan-Informationen aus PDFs Erkennt Schicht-Zeitangaben (z.B. 04:51-15:46) Handhabt Nachtschichten korrekt (über Mitternacht hinaus) Erstellt Standard-konforme ICS-Dateien Unterstützt mehrere PDFs gleichzeitig GUI mit Drag & Drop (optional) CLI-Menü für schnelle Nutzung

Installation

Windows (Empfohlen)

  1. Installieren Sie Python 3.10+ und aktivieren Sie bei der Installation die Option "Add Python to PATH".
  2. Öffnen Sie den Projektordner.
  3. Starten Sie die GUI per Doppelklick auf start_gui.cmd.

Beim ersten Start wird automatisch eine virtuelle Umgebung (.venv) erstellt und alle benötigten Pakete installiert.

Alternative (CLI): Doppelklick auf start.cmd.

Falls Python nicht gefunden wird (CMD im Projektordner):

py -3 -m venv .venv --upgrade-deps
.\.venv\Scripts\python.exe gui.py

Schnellstart (Empfohlen)

Für GUI-Version:

./start_gui.sh

Siehe GUI_README.md für Tkinter-Installation.

Für CLI-Version:

./start.sh
```GUI-Version (Empfohlen)

1. Starten Sie die GUI:
   ```bash
   ./start_gui.sh
  1. Fügen Sie PDF-Dateien hinzu:
    • Klicken Sie auf " PDF hinzufügen", oder
    • Ziehen Sie PDF-Dateien in die Liste (Drag & Drop)

Interaktives Menü:

./start.sh

Dann wählen Sie im Menü die gewünschte Option.

Erweiterte Nutzung (Python-Modul)abe-Verzeichnis (optional)

  1. Klicken Sie auf "📄 ICS Datei erstellen"

Die GUI merkt sich Ihre letzten Verzeichnisse für schnelleren Zugriff!

CLI-Version

Schnellstart:

Beide Skripte erstellen automatisch eine Python Virtual Environment und installieren alle benötigten Abhängigkeiten.

Manuelle Installation

Die erforderlichen Dependencies sind bereits installiert. Falls Sie das Projekt neu einrichten:

python3 -m venv .venv
source .venv/bin/activate
pip install pdfplumber icalendar pypdf2 pytz

Verwendung

Schnellstart (CLI)

  1. Kopieren Sie Ihre Dienstplan-PDF-Dateien in ein Verzeichnis
  2. Führen Sie das Skript aus:
python3 pdf_to_ics.py

Das Tool findet automatisch alle .pdf Dateien im aktuellen Verzeichnis und erstellt entsprechende .ics Dateien.

Kommandozeilen-Optionen

# Alle PDFs im aktuellen Verzeichnis konvertieren
python3 pdf_to_ics.py

# PDFs aus einem bestimmten Verzeichnis konvertieren
python3 pdf_to_ics.py --input ./pdfs

# PDFs in anderes Verzeichnis speichern
python3 pdf_to_ics.py --input ./pdfs --output ./ics_dateien

# Ruhetage ausschließen
python3 pdf_to_ics.py --exclude-rest

# Einzelne PDF-Datei konvertieren
python3 pdf_to_ics.py /pfad/zur/datei.pdf

# Mit detaillierter Ausgabe
python3 pdf_to_ics.py --input ./pdfs -v

# Hilfe anzeigen
python3 pdf_to_ics.py --help

Verfügbare Optionen:

Option Kurzform Beschreibung
--input DIR -i Eingabe-Verzeichnis mit PDF-Dateien (Standard: aktuelles Verzeichnis)
--output DIR -o Ausgabe-Verzeichnis für ICS-Dateien (Standard: Eingabe-Verzeichnis)
--exclude-rest -e Ruhetage ausschließen (Ruhe, R56, R36, vRWF48, RWE, vR48)
--verbose -v Detaillierte Ausgabe anzeigen
--help -h Hilfe anzeigen

Erweiterte Nutzung

Sie können auch direkt mit dem Python-Modul arbeiten:

from pdf_to_ics import extract_dienstplan_data, create_ics_from_dienstplan

# PDF verarbeiten
dienstplan = extract_dienstplan_data('meine_pdf.pdf')

# ICS erstellen
create_ics_from_dienstplan(dienstplan, 'mein_kalender.ics')

Dateiformat

ICS-Datei importieren

Die erstellte .ics Datei kann in folgende Kalenderanwendungen importiert werden:

  • Outlook: Datei → Öffnen und exportieren → Importieren
  • Google Kalender: Einstellungen → Kalender importieren
  • iCal/macOS: Doppelklick auf die .ics Datei
  • Thunderbird: Kalender → Kalender importieren
  • Android: Mit einer Kalender-App öffnen
  • LibreOffice: Datei → Öffnen

Struktur der extrahierten Daten

Das Tool extrahiert folgende Informationen aus der PDF:

  • Name und Personalnummer: Des Mitarbeiters
  • Betriebshof: Standort
  • Sollarbeitszeit: Gewünschte Arbeitszeit pro Monat
  • Events: Einzelne Schichten mit:
    • Datum
    • Dienstart (z.B. "36234", "Ruhe", "Dispo")
    • Zeitangabe (falls vorhanden)

Output

Für jede verarbeitete PDF wird eine entsprechende ICS-Datei erstellt:

2026-02-23 DB Köhler00100718_März2026.pdf  →  2026-02-23 DB Köhler00100718_März2026.ics

Die ICS-Datei enthält ein Event für jeden Arbeitstag mit:

  • Titel: Name - Dienstart
  • Beschreibung: Dienstart und Betriebshof
  • Zeit: Mit aktueller Zeitzone (Europe/Berlin)

Fehlerbehebung

Keine Events gefunden?

  • Stellen Sie sicher, dass die PDF das erwartete Tabellenformat hat
  • Überprüfen Sie die Dateiname und die PDF-Struktur

Zeitzone falsch?

  • Die aktuelle Einstellung ist Europe/Berlin
  • Zum Ändern: Bearbeiten Sie die Zeile in pdf_to_ics.py:
    tz = pytz.timezone('Europe/Berlin')  # Ändern SIe diesen Wert
    

Technische Details

Projektstruktur

ICS-Import/
├── pdf_to_ics.py          # Core-Konvertierungslogik
├── gui.py                 # GUI-Version (Tkinter)
├── menu.py                # CLI-Menü
├── start_gui.sh/cmd       # GUI-Startskripte
├── start.sh/cmd           # CLI-Startskripte
├── README.md              # Diese Datei
└── GUI_README.md          # GUI-spezifische Dokumentation

Technische Spezifikationen

  • Abhängigkeiten: pdfplumber, icalendar, pytz, pypdf2
  • Optional für GUI: tkinter (Python-Standard), tkinterdnd2 (Drag & Drop)
  • Python-Version: 3.6+
  • Format: iCalendar 2.0 (RFC 5545)
  • Konfiguration: ~/.pdf_to_ics_config.json (GUI-Einstellungen)

Lizenz

Dieses Tool ist zur privaten Verwendung gedacht.


📚 Weitere Dokumentation

Description
No description provided
Readme 466 KiB
Languages
Python 48.4%
HTML 38.4%
Shell 12.3%
Dockerfile 0.9%