webfarben fa59ef5e8a refactor: Improve about dialog with better layout and clickable repository link
- Convert about dialog from messagebox to custom Toplevel window
- Improve text formatting and readability with proper spacing
- Make Git repository link clickable (opens in browser with webbrowser module)
- Better layout with aligned labels and structured information display
- Add close button for better user experience
2026-02-23 18:41:43 +01:00
2026-02-23 10:45:26 +01:00
2026-02-23 10:45:26 +01:00
2026-02-23 10:45:26 +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

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

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

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

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%