Files
pdf_to_ics/README.md
webfarben e11d518dad README.md erweitert: GUI- und CLI-Version dokumentiert
- Beide Versionen (GUI und CLI) klar vorgestellt
- GUI-Features und Drag & Drop hervorgehoben
- Verwendungsanleitung für beide Versionen
- Projektstruktur und technische Details ergänzt
- Links zu weiteren Dokumentationen hinzugefügt
2026-02-23 12:04:01 +01:00

211 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.
```bash
./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](GUI_README.md))
### 2. **CLI-Version** (Kommandozeile)
Textbasiertes Menü für die Kommandozeile.
```bash
./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:**
```bash
./start_gui.sh
```
Siehe [GUI_README.md](GUI_README.md) für Tkinter-Installation.
**Für CLI-Version:**
```bash
./start.sh
```GUI-Version (Empfohlen)
1. Starten Sie die GUI:
```bash
./start_gui.sh
```
2. Fügen Sie PDF-Dateien hinzu:
- Klicken Sie auf " PDF hinzufügen", oder
- Ziehen Sie PDF-Dateien in die Liste (Drag & Drop)
**Interaktives Menü:**
```bash
./start.sh
```
Dann wählen Sie im Menü die gewünschte Option.
### Erweiterte Nutzung (Python-Modul)abe-Verzeichnis (optional)
4. 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:
```bash
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:
```bash
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:
```python
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`:
```python
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
- **[GUI_README.md](GUI_README.md)** - Ausführliche GUI-Dokumentation und Tkinter-Installation
- **[QUICKSTART.md](QUICKSTART.md)** - Schnellanleitung für den Import in verschiedene Kalender
- **[ZUSAMMENFASSUNG.md](ZUSAMMENFASSUNG.md)** - Projekt-Übersicht und technische Details