LabelPrintAgent

Windows-Tray-Anwendung zum Rendern und Drucken von Etiketten über installierte Windows-Drucker, z. B. einen Dymo LabelWriter.

Aktueller Stand

Der Agent arbeitet jetzt mit lokalen LabelTemplates in C:\ProgramData\LabelPrintAgent\settings.json.

Ein Queue-Job enthält nur noch:

  • barcode_template_id
  • payload_json

Die alte Zuordnung über layout_key gibt es nicht mehr. Stattdessen gilt:

label_print_queue.barcode_template_id
-> lokales LabelTemplate im LabelPrintAgent
-> darin enthaltenes Layout rendern

Die Tabelle barcode_templates wird nicht verändert. Sie bleibt nur die fachliche Referenz für die barcode_template_id.

LabelTemplates

Ein lokales LabelTemplate enthält:

  • barcodeTemplateId
  • name
  • getNumberUrl
  • numberPrintedUrl
  • reservedNumberPayloadKey
  • qrTemplate
  • layout

Das Layout liegt vollständig eingebettet im Template. Es gibt keine separate Layout-Datei und keinen layoutKey mehr.

Nummernserver

getNumberUrl wird per HTTP GET aufgerufen und gibt Plain Text zurück, z. B.:

123

Der Nummernserver liefert keine führenden Nullen. Die Datenbank speichert reserved_number als BIGINT, also z. B. 123.

Führende Nullen entstehen nur über Formatierung im Template:

{reservedNumber:0000000} -> 0000123
{nummer:0000000} -> 0000123

Nach erfolgreichem Windows-Druck wird numberPrintedUrl aufgerufen. Erst wenn diese Bestätigung erfolgreich war, darf der Job als printed markiert werden.

Wenn der Druck erfolgreich war, aber numberPrintedUrl fehlschlägt, bleibt reserved_number erhalten und der Job geht auf error. Beim erneuten Drucken wird dieselbe Nummer wiederverwendet; es wird keine neue Nummer reserviert.

Payload-Erweiterung

Vor dem Rendern wird payload_json erweitert:

  • reservedNumber
  • der konfigurierte reservedNumberPayloadKey, z. B. nummer
  • qr, wenn qrTemplate gesetzt ist
  • jobId
  • barcodeTemplateId

Beispiel:

{
  "reservedNumber": 123,
  "nummer": 123,
  "qr": "bjoernprivat 0000123"
}

Oberfläche

Im Einstellungsdialog gibt es den Tab Label-Templates.

Dort kannst du:

  • Templates anlegen
  • Templates löschen
  • barcodeTemplateId bearbeiten
  • Nummernserver-URLs bearbeiten
  • QR-Template bearbeiten
  • eingebettetes Layout-JSON bearbeiten
  • validieren
  • Vorschau erzeugen
  • Testdruck auslösen

Die Vorschau verwendet eine Dummy-Nummer 123 und reserviert keine Nummer beim Nummernserver.

Dymo-Testdruck

Für den Dymo LabelWriter muss der Drucker in Windows als normaler Drucker eingerichtet sein. Stelle im Dymo-Treiber möglichst das passende Etikettenformat 57 x 32 mm ein.

Testdruck:

  1. Im Tab Drucker den Dymo LabelWriter auswählen.
  2. Speichern klicken.
  3. Im Tab Label-Templates ein Template auswählen.
  4. Vorschau prüfen.
  5. Testdruck klicken.

Typische Fehler:

  • Falscher Drucker gewählt.
  • Falsches Etikettenformat im Dymo-Treiber.
  • Treiber skaliert auf A4/Letter.
  • Etikett ist gedreht: Dymo-Treiber-Labelgröße und physische Orientierung prüfen.

Datenbank

Die SQL-Datei liegt unter:

sql/create_label_print_queue.sql

Beispiel-Insert:

INSERT INTO label_print_queue
(barcode_template_id, payload_json, status)
VALUES
(
  1,
  JSON_OBJECT(
    'titel', 'Beleg privat',
    'beschreibung', 'Tankbeleg',
    'datum', '2026-05-07'
  ),
  'pending'
);

Noch offen

Der automatische MySQL-Worker ist noch nicht aktiv verdrahtet. Die dafür benötigten Modell-, Repository-, Nummernserver- und Druckprozessor-Klassen sind vorbereitet.

S
Description
No description provided
Readme 273 KiB
2026-05-31 20:21:53 +00:00
Languages
C# 100%