110 lines
4.1 KiB
Markdown
110 lines
4.1 KiB
Markdown
# LabelPrintAgent
|
|
|
|
Windows-Tray-Anwendung für den späteren Etikettendruck aus JSON-Layouts.
|
|
|
|
## Etappe 1
|
|
|
|
Die erste Etappe enthält das lauffähige Grundgerüst:
|
|
|
|
- .NET-9-Windows-Forms-Projekt
|
|
- Tray-Icon mit Kontextmenü
|
|
- Einstellungsdialog mit Tabs:
|
|
- Allgemein
|
|
- Datenbank
|
|
- Drucker
|
|
- Layout
|
|
- Fehlerhafte Druckaufträge
|
|
- lokale Konfiguration unter `C:\ProgramData\LabelPrintAgent\settings.json`
|
|
- automatische Anlage von `C:\ProgramData\LabelPrintAgent`
|
|
- Layout-Ordner unter `C:\ProgramData\LabelPrintAgent\layouts`
|
|
- Log-Ordner unter `C:\ProgramData\LabelPrintAgent\logs`
|
|
- verschlüsselte Passwortspeicherung per Windows DPAPI
|
|
- Auflistung installierter Windows-Drucker
|
|
- Beispiel-Layout `dymo_57x32_standard`
|
|
- Layout-JSON laden und speichern
|
|
|
|
## Etappe 2
|
|
|
|
Die zweite Etappe ergänzt das Layoutmodell und die JSON-Validierung:
|
|
|
|
- typisierte Layoutklassen für Text, Linie, Rechteck und QR-Code
|
|
- JSON-Deserialisierung anhand der Element-Eigenschaft `type`
|
|
- Validierung des Layoutkopfs und aller Elemente
|
|
- Sammlung aller Validierungsfehler statt Abbruch beim ersten Fehler
|
|
- Anzeige der Validierungsfehler im Layout-Tab
|
|
- Speichern nur bei gültigem Layout
|
|
- formatierte Speicherung des Layout-JSON
|
|
|
|
## Etappe 3
|
|
|
|
Die dritte Etappe ergänzt die Rendering-Engine und die Vorschau im Layout-Tab:
|
|
|
|
- Bitmap-Rendering mit 300 dpi
|
|
- Text, Linien, Rechtecke und QR-Codes
|
|
- Platzhalterersetzung wie `{titel}`, `{datum:dd.MM.yyyy}` und `{menge:0.00}`
|
|
- automatische Beispiel-Daten für Vorschauen
|
|
- AutoShrink für Textfelder
|
|
- Warnungen, wenn Platzhalter fehlen oder Text nicht vollständig passt
|
|
|
|
Eine Vorschau erzeugst du im Tab `Layout` mit dem Button `Vorschau`. Zuerst wird das JSON validiert, dann wird das Etikett mit folgenden Beispiel-Daten gerendert:
|
|
|
|
```json
|
|
{
|
|
"titel": "Beleg privat",
|
|
"beschreibung": "Dokument 2026-000123",
|
|
"nummer": "2026-000123",
|
|
"datum": "2026-05-07",
|
|
"menge": 42.5,
|
|
"qr": "bjoernprivat 0000123"
|
|
}
|
|
```
|
|
|
|
## Etappe 4
|
|
|
|
Die vierte Etappe ergänzt den Testdruck über installierte Windows-Drucker:
|
|
|
|
- Druckerliste mit Standarddrucker-Erkennung
|
|
- Prüfung, ob der konfigurierte Drucker noch vorhanden ist
|
|
- Testdruck im Tab `Drucker`
|
|
- Testdruck im Tab `Layout` direkt aus dem aktuell bearbeiteten JSON
|
|
- Ausgabe des gerenderten Bitmaps über `System.Drawing.Printing.PrintDocument`
|
|
- benutzerdefiniertes Papierformat aus dem Layout, beim Beispiel `57 x 32 mm`
|
|
- keine zusätzlichen Druckränder; der Layout-Rand steckt bereits im gerenderten Bitmap
|
|
|
|
Für den Dymo LabelWriter muss der Drucker in Windows bereits als normaler Windows-Drucker eingerichtet sein. Stelle im Dymo-Treiber möglichst ebenfalls das Etikettenformat `57 x 32 mm` bzw. das passende Dymo-Label ein. Die App sendet ein fertiges Bild an den Windows-Drucker; es wird kein ZPL, EPL oder TSPL verwendet.
|
|
|
|
Einen Testdruck machst du so:
|
|
|
|
1. Im Tab `Drucker` den Dymo LabelWriter auswählen.
|
|
2. `Speichern` klicken.
|
|
3. `Testdruck` klicken, um das ausgewählte Beispiel-Layout zu drucken.
|
|
4. Alternativ im Tab `Layout` das JSON bearbeiten und dort `Testdruck` klicken.
|
|
|
|
Typische Fehler:
|
|
|
|
- Falscher Drucker gewählt: im Tab `Drucker` den Dymo LabelWriter auswählen.
|
|
- Falsches Etikettenformat im Treiber: im Windows-Druckertreiber `57 x 32 mm` bzw. das passende Label einstellen.
|
|
- Ausdruck zu groß oder zu klein: prüfen, ob Treiber-Skalierung deaktiviert ist und das Layout `57 x 32 mm` verwendet.
|
|
- Etikett wird gedreht: Treiber-Orientierung und Layout-Orientation `landscape` prüfen.
|
|
|
|
Noch nicht enthalten sind MySQL-Worker und automatische Datenbankabfrage.
|
|
|
|
## Startanleitung
|
|
|
|
1. `LabelPrintAgent.sln` in Visual Studio oder Rider öffnen.
|
|
2. Auf einem Windows-Rechner bauen und starten.
|
|
3. Das Tray-Symbol anklicken oder per Kontextmenü `Einstellungen` öffnen.
|
|
4. Im Tab `Drucker` einen installierten Windows-Drucker auswählen und speichern.
|
|
5. Im Tab `Layout` das Beispiel-Layout prüfen, bearbeiten und speichern.
|
|
6. Im Tab `Layout` oder `Drucker` einen Testdruck auslösen.
|
|
|
|
Beim ersten Start werden die Programmdatenordner und das Beispiel-Layout automatisch angelegt.
|
|
|
|
## Spätere Etappen
|
|
|
|
Die SQL-Datei für die spätere Druckwarteschlange liegt bereits unter:
|
|
|
|
```text
|
|
sql/create_label_print_queue.sql
|
|
```
|