# LabelPrintAgent Windows-Tray-Anwendung zum Rendern und Drucken von Etiketten aus JSON-Layouts. ## Stand Der erste lauffähige Schritt enthält: - .NET-9-Windows-Forms-Projekt mit Tray-Icon - Einstellungsdialog mit Tabs für Allgemein, Datenbank, Drucker, Layout und Fehlerjobs - lokale Konfiguration unter `C:\ProgramData\LabelPrintAgent\settings.json` - verschlüsselte Passwortspeicherung per Windows DPAPI - Druckerauswahl über installierte Windows-Drucker - Layout-JSON unter `C:\ProgramData\LabelPrintAgent\layouts` - Beispiel-Layout `dymo_57x32_standard` - Rendering mit 300 dpi als Bitmap - Vorschau und Testdruck über `PrintDocument` - Serilog-Dateilogs unter `C:\ProgramData\LabelPrintAgent\logs` - vorbereiteter MySQL-Worker ohne automatischen Retry ## Öffnen und Starten 1. `LabelPrintAgent.sln` in Visual Studio oder Rider öffnen. 2. Auf einem Windows-Rechner bauen und starten. 3. Tray-Symbol anklicken, um die Einstellungen zu öffnen. 4. Im Tab `Drucker` den Dymo LabelWriter auswählen. 5. Im Tab `Layout` das Beispiel-Layout öffnen, `Vorschau` klicken und danach `Testdruck`. ## Datenbank Die Tabelle kann mit folgendem Skript angelegt werden: ```sql sql/create_label_print_queue.sql ``` Der Worker lädt nur Jobs mit `status = 'pending'`. Vor dem Druck wird der Job auf `printing` gesetzt. Bei Erfolg setzt er `printed`, `printed_at` und `printer_name`. Bei Fehlern setzt er `error`, speichert `error_message` und erhöht `attempts`. Fehlerhafte Jobs werden nicht automatisch wiederholt. Im Tab `Fehlerhafte Druckaufträge` können sie manuell erneut auf `pending` gesetzt oder als `deleted` markiert werden. ## Layout-Platzhalter Text- und QR-Werte unterstützen Platzhalter aus `payload_json`: ```text {titel} {nummer} {datum:dd.MM.yyyy} {menge:0.00} ``` Formatangaben werden über C#-Formatstrings ausgewertet.