138 lines
4.2 KiB
Markdown
138 lines
4.2 KiB
Markdown
|
||
# PDF Export und Druckskript
|
||
|
||
Dieses Python-Skript lädt eine PDF-Datei von einer externen API herunter, verarbeitet die PDF, teilt sie in Abschnitte (z. B. für verschiedene Versanddienstleister wie DHL, DPD, UPS), speichert die getrennten Abschnitte und druckt sie auf vordefinierten Druckern. Das Skript ist darauf ausgelegt, Bestellungen und Versandlabels automatisch zu verarbeiten und zu drucken.
|
||
|
||
---
|
||
|
||
## Anforderungen
|
||
|
||
### 1. **Python und Bibliotheken**
|
||
|
||
Das Skript verwendet mehrere Python-Bibliotheken, die du zuerst installieren musst:
|
||
|
||
- `requests`: Zum Herunterladen der PDF von der API
|
||
- `PyMuPDF (fitz)`: Für das Bearbeiten und Verarbeiten von PDFs
|
||
- `pywin32`: Für die Kommunikation mit Windows-Druckern
|
||
- `Pillow (PIL)`: Für Bildverarbeitung und das Drucken
|
||
- `pyinstaller` *(optional)*: Zum Erstellen einer `.exe`-Datei
|
||
|
||
Installiere die Abhängigkeiten mit:
|
||
|
||
```bash
|
||
pip install requests PyMuPDF pywin32 Pillow
|
||
```
|
||
|
||
---
|
||
|
||
### 2. **Druckertreiber**
|
||
|
||
Die verwendeten Drucker müssen unter Windows installiert und korrekt benannt sein. Stelle sicher, dass die Namen exakt mit denen in der Windows-Gerätesteuerung übereinstimmen.
|
||
|
||
---
|
||
|
||
### 3. **Konfiguration über die Windows-Registry**
|
||
|
||
Die Konfiguration (API-URL, Druckernamen) erfolgt **nicht mehr über eine `.env`-Datei**, sondern über die Registry unter folgendem Pfad:
|
||
|
||
```
|
||
HKEY_CURRENT_USER\Software\PDFExporter
|
||
```
|
||
|
||
#### Benötigte Einträge:
|
||
|
||
| Schlüsselname | Bedeutung |
|
||
|-----------------|-------------------------------------|
|
||
| `APIKey` | Die URL der PDF-API |
|
||
| `LabelPrinter` | Name des Druckers für Versandlabels |
|
||
| `OrderPrinter` | Name des Druckers für Bestellungen |
|
||
|
||
#### Beispiel:
|
||
|
||
Du kannst die Konfiguration über ein begleitendes GUI-Tool setzen oder manuell über `regedit.exe`.
|
||
|
||
#### Automatischer Registry-Check:
|
||
|
||
Das Skript prüft beim Start, ob alle drei Registry-Werte vorhanden sind. Falls nicht, wird ein Hinweis ausgegeben und das Skript beendet sich automatisch.
|
||
|
||
---
|
||
|
||
## Funktionsweise
|
||
|
||
Das Skript arbeitet in folgenden Schritten:
|
||
|
||
1. **PDF herunterladen**: Holt eine PDF-Datei von der API-URL aus der Registry.
|
||
2. **PDF-Verarbeitung**: Trennt die PDF-Datei nach erkannten Label-Abschnitten (z. B. DHL, DPD, UPS).
|
||
3. **Dateien speichern**:
|
||
- Bestellungen im Verzeichnis `./orders`
|
||
- Versandlabels im Verzeichnis `./label`
|
||
4. **PDFs drucken**:
|
||
- Labels → `LabelPrinter`
|
||
- Bestellungen → `OrderPrinter`
|
||
|
||
---
|
||
|
||
## Verwendung
|
||
|
||
1. Stelle sicher, dass die Registry-Werte korrekt gesetzt sind.
|
||
2. Führe das Skript einfach per:
|
||
|
||
```bash
|
||
python pdf_export.py
|
||
```
|
||
|
||
Optional kannst du auch eine PDF-Datei direkt übergeben, um nur zu drucken:
|
||
|
||
```bash
|
||
python pdf_export.py pfad\zu\deiner_datei.pdf
|
||
```
|
||
|
||
---
|
||
|
||
## Erstellen einer ausführbaren `.exe`-Datei
|
||
|
||
Mit **PyInstaller** kannst du eine `.exe` erstellen:
|
||
|
||
```bash
|
||
pip install pyinstaller
|
||
pyinstaller --onefile pdf_export.py
|
||
```
|
||
|
||
Die `.exe` findest du anschließend im `dist`-Ordner. Sie kann auf jedem Windows-PC mit korrekt gesetzter Registry verwendet werden – eine `.env`-Datei ist **nicht mehr notwendig**.
|
||
|
||
---
|
||
|
||
## Erstellung eines Installers mit Inno Setup
|
||
|
||
Zur einfachen Verteilung kannst du mit [**Inno Setup**](https://jrsoftware.org/isinfo.php) einen Windows-Installer erstellen.
|
||
|
||
### Schritte:
|
||
|
||
1. Lade und installiere Inno Setup von:
|
||
[https://jrsoftware.org/isinfo.php](https://jrsoftware.org/isinfo.php)
|
||
|
||
2. Passe die mitgelieferte Datei `install_script.iss` an (Installationspfad, Namen, evtl. Registry-Werte).
|
||
|
||
3. Öffne `install_script.iss` in Inno Setup und klicke auf **"Compile"**, um den Installer zu erzeugen.
|
||
|
||
Der Installer kopiert die `.exe` in das Zielverzeichnis und kann bei Bedarf auch Registry-Werte direkt setzen.
|
||
|
||
---
|
||
|
||
## Fehlerbehebung
|
||
|
||
- **Fehlende Registry-Einträge**
|
||
→ Öffne die GUI-Konfiguration oder setze die Werte manuell in `HKEY_CURRENT_USER\Software\PDFExporter`.
|
||
|
||
- **Drucker wird nicht gefunden**
|
||
→ Stelle sicher, dass der Druckername exakt mit dem Windows-Namen übereinstimmt.
|
||
|
||
- **PDF wird nicht heruntergeladen**
|
||
→ Prüfe die API-URL in der Registry und deine Internetverbindung.
|
||
|
||
---
|
||
|
||
## Lizenz
|
||
|
||
Dieses Projekt ist unter der MIT-Lizenz veröffentlicht. Siehe die [LICENSE](LICENSE)-Datei für Details.
|