PDF Kopfzeile / Fußzeile nummerieren – Version 1.0

Nummerierung und Vorschau:
- `Vorschau` zeigt jede Seite mit der aktuell gewählten Nummer, Position, Schriftgröße und den Randabständen.
- Mit den Schaltflächen in der Vorschau kann vor dem Speichern durch alle PDF-Seiten geblättert werden.
- Über die Seitenauswahl kann direkt zu einer beliebigen Seite, beispielsweise Seite 40, gesprungen werden.
- Jede PDF erhält auf allen Seiten ihre eigene Anhangnummer.
- Eine fortlaufende Seitennummer kann gleichzeitig zusätzlich eingeblendet werden und zählt über sämtliche PDFs hinweg weiter.
- Startnummer und Position dieser zusätzlichen Seitennummer sind unabhängig von der Anhangnummer wählbar.
- Die Seitennummer kann wahlweise über alle Anhänge fortlaufen oder bei jedem Anhang neu beginnen.
- Liegen Anhang- und Seitennummer an derselben Position, erscheinen sie kollisionsfrei in der Reihenfolge
  `Anhangnummer    Seitennummer`.
- Die Startnummer ist frei wählbar, beispielsweise `5` für `Beilage 5`.
- Horizontaler und vertikaler Randabstand können getrennt und mit einer Nachkommastelle in Millimeter eingestellt werden.

Zusammenführen und Vorlagen:
- `Zusätzlich alle PDFs zusammenführen` erstellt neben den nummerierten Einzeldateien die Datei
  `PDF_Ausgabe/Alle_Anhänge_nummeriert.pdf` in der sichtbaren Reihenfolge.
- Unter `Nummerierungsvorlage` lassen sich alle Nummerierungsoptionen einschließlich Startnummer,
  Randabständen, seitenweiser Zählung und Zusammenführung unter einem eigenen Namen speichern.
- Vorlagen können geladen oder nach Rückfrage gelöscht werden.

Lizenzprüfung und Fehlerberichte:
- Die in der EULA erlaubte Privatnutzung funktioniert weiterhin ohne Lizenznummer.
- Der Lizenzschlüssel wird oben über `Lizenz > Lizenzschlüssel eingeben…` hinterlegt.
- Er wird sichtbar eingegeben und portabel in `lizenz.json` neben der EXE gespeichert. Diese Datei kann zusammen mit dem
  Programmordner auf einen anderen Computer kopiert werden.
- Die Lizenz-API ist fest in `services.py` hinterlegt und erhält `license_key` und `current_version`.
- Der Fehlerbericht-Endpunkt auf mueller-tech.ch ist fest hinterlegt und kann nicht durch lokale
  Einstellungen oder Environment-Variablen verändert werden.
- Der Lizenz-Endpunkt liefert `valid`, `status`, `expires_at`, `seats` und `product.id`.
- Nur Status `valid`, Produkt-ID `1`, ein zukünftiges Ablaufdatum und mindestens ein Lizenzplatz
  werden akzeptiert. Der Offline-Cache endet spätestens mit dem serverseitigen Ablaufdatum.
- Der Error-Endpunkt erhält bereinigte technische Fehlerdaten. PDF-Inhalte, Dateinamen und die
  vollständige Lizenznummer werden nicht übertragen. Lokal wird zusätzlich `error.log` angelegt.
- Nach erfolgreicher Online-Prüfung gilt ein lokaler Offline-Cache für 7 Tage.
- Unter `Hilfe > Fehlerbericht senden…` kann das bereinigte lokale Fehlerprotokoll nach einer Vorschau
  und ausdrücklichen Bestätigung manuell übertragen werden.
- Lizenzschlüssel, lokale Pfade und PDF-Dateinamen werden vor dem Versand entfernt.

Updates und Versionsanzeige:
- Unter `Hilfe` zeigt `Über PDF-Nummerierer` die installierte Programmversion an.
- Das Infofenster enthält den Copyright-Hinweis für Müller Tech.
- `Hilfe > Nach Updates suchen…` verwendet die fest hinterlegte Update-API.
- Die Anfrage enthält immer `product_id` und `current_version`; ein vorhandener License Key ist optional.
- Für dieses Programm ist die feste Produkt-ID `1` hinterlegt.
- Update-Erkennung, Download-URL und `sha256` funktionieren auch ohne Lizenz.
- Eine neue Version wird nicht ungefragt installiert. Nach Bestätigung öffnet das Programm die sichere Download-Seite.

Neu in v8:
- Explorer-artiger Schnellzugriff in der Ordnerauswahl
- Desktop, Benutzerordner, Dokumente und Downloads
- lokale Windows-Laufwerke automatisch erkannt
- gemappte Netzlaufwerke automatisch erkannt und gekennzeichnet
- UNC-Netzwerkpfade wie \\server\freigabe direkt öffnen
- PDF-Liste bleibt zur Kontrolle sichtbar, bevor der Ordner übernommen wird

Build unter Windows:
1. `build_windows.bat` starten und die gewünschte Versionsnummer eingeben.
2. Alternativ die Version direkt übergeben: `build_windows.bat 1.2.0`.
3. EXE und `PDF-Nummerierer_1.2.0_windows-x64.zip` werden im dist-Ordner erzeugt. Das ZIP enthält auch diese README.txt.

Build unter Linux (x86-64):
1. Im Terminal `chmod +x build_linux.sh` ausführen.
2. `./build_linux.sh` starten und die gewünschte Versionsnummer eingeben.
3. Alternativ: `./build_linux.sh 1.2.0`.
4. Das portable Programm und `PDF-Nummerierer_1.2.0_linux-x86_64.zip` werden erzeugt. Das ZIP enthält auch diese README.txt.

Build unter macOS:
1. Das Projekt auf einen Mac kopieren und dort ein Terminal im Projektordner öffnen.
2. `chmod +x build_macos.sh` ausführen.
3. `./build_macos.sh` starten und die gewünschte Versionsnummer eingeben – oder `./build_macos.sh 1.2.0`.
4. App-Bundle und `PDF-Nummerierer_1.2.0_macOS.zip` werden erzeugt. Das ZIP enthält auch diese README.txt.

Hinweis für macOS:
- Das `.app` muss auf macOS gebaut werden; ein macOS-Build von Linux oder Windows aus ist mit PyInstaller nicht möglich.
- Für eine öffentliche Weitergabe sollte die App zusätzlich mit einer Apple Developer ID signiert und notarisiert werden.
- Einstellungen, Lizenz und Fehlerprotokoll liegen unter macOS in
  `~/Library/Application Support/Müller Tech/PDF-Nummerierer` und verändern dadurch nicht das signierte App-Bundle.

Unter Windows und Linux werden die Einstellungen als settings.json neben dem Programm gespeichert.
