111 lines
3.0 KiB
Markdown
111 lines
3.0 KiB
Markdown
# 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.
|
|
|
|
## 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
|
|
✅ Benutzerfreundliche Oberfläche
|
|
|
|
## 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
|
|
|
|
- **Abhängigkeiten**: pdfplumber, icalendar, pytz, pypdf2
|
|
- **Python-Version**: 3.6+
|
|
- **Format**: iCalendar 2.0 (RFC 5545)
|
|
|
|
## Lizenz
|
|
|
|
Dieses Tool ist zur privaten Verwendung gedacht.
|