← Alle Beiträge

2026-10-21

Auftragsspezifische Kennzeichnung auf Basis einer Etikettendruck-API erstellen

Auftragsspezifische Kennzeichnung auf Basis einer Etikettendruck-API erstellen
pdf labels barcodes label merge browser based graphical layout editor google sheets addin microsoft excel addon electronic shelf labels esl barcode3 labels label editor

Auftragsspezifische Etikettierung auf Basis einer Etikettendruck-API aufbauen

Maya ist freiberufliche Entwicklerin mit einem Drei-Wochen-Vertrag und einem sehr konkreten Problem. Ihr Kunde betreibt einen kleinen E-Commerce-Shop und versendet zwischen 80 und 400 Bestellungen pro Tag. Jedes Paket, das das Lager verlässt, braucht ein Etikett mit Bestellnummer, SKU, einem scannbaren Barcode und der Kundenadresse. Heute exportiert jemand eine CSV-Datei, öffnet ein Etikettendesign-Tool, tippt Felder neu ab und drückt auf Drucken. Bei 20 Bestellungen ist das eine lästige Pflicht. Bei 300 ist es ein Vollzeitjob, und die Fehler gehen direkt an die Kunden.

Also baut Maya ein Fulfillment-Dashboard, und das letzte fehlende Puzzleteil ist die Ausgabe. Ihr Instinkt sagt ihr, den Renderer selbst zu schreiben: einen Barcode generieren, ein PDF layouten, einen Treiber finden, der die native Sprache des Druckers akzeptiert. Zwei Tage später hat sie ein PDF, das gut aussieht, und einen Barcode, der vielleicht sieben von zehn Malen scannt. In diesem Moment taucht die eigentliche Frage auf. Nicht „Kann ich ein Etikett im Code rendern?“, sondern „Auf welche Etikettendruck-API für auftragsspezifische Etikettierung sollte ich aufbauen, und wie strukturiere ich die Integration, damit der Kunde das Design ändern kann, ohne ein Ticket zu eröffnen?”

Das ist das Playbook, mit dem sie hätte anfangen sollen.

Warum auftragsspezifische Etikettierung für Entwickler ein anderes Kaliber ist

Ein Produktetikett ist eine Vorlage. Ein Auftragsetikett ist ein Datensatz. Diese Unterscheidung verändert alles daran, wie man baut.

  • Jedes Etikett ist einzigartig. Die Daten variieren pro Bestellung, pro Position, pro Kunde, pro Carrier. Es gibt keinen Pfad „dasselbe Etikett 500-mal drucken", auf den man optimieren könnte.
  • Die Datenquelle ist keine Tabellenkalkulation. Sie liegt in Ihrem Order-Management-System, Ihrer Lagerverwaltungssoftware oder einer API, die Sie bereits aus dem Dashboard aufrufen.
  • Designänderungen sind ständig. Das Marketing möchte ein Logo verschieben, der Kunde möchte eine andere Barcode-Größe, ein neuer Carrier braucht sein eigenes Layout. Wenn das Layout im Anwendungscode lebt, ist jede dieser Änderungen ein Deploy.
  • Fehler sind teuer. Ein Barcode, der nicht scannt, oder eine Adresse, die um eine Zeile verschoben ist, bedeutet ein zurückgesendetes Paket und ein Support-Ticket.

Herkömmliche Etikettendesign-Software geht davon aus, dass ein Mensch davor sitzt. Das funktioniert, bis der Mensch zum Engpass oder zur Fehlerquelle wird. Was Entwickler stattdessen brauchen, ist eine einmal entworfene Vorlage plus eine programmatische Möglichkeit, Auftragsdaten zur Druckzeit einzuspeisen — Barcodes, die im Flug generiert werden, bedingte Formatierung, verschiedene Ausgabeziele. Für den Endnutzer, der einfach nur professionell aussehende Etiketten möchte, ist genau dieser Mechanismus die Garantie dafür, dass jedes Etikett konsistent und markenkonform herauskommt, ohne dass jemand Designkenntnisse braucht.

Wenn Ihre Auftragsdaten bereits in Tabellenkalkulationen statt in einer Datenbank liegen, sind die Mechanismen von Nachschlagetabellen und Datendateien in How to Create Labels from Excel Data Files and Lookup Tables beschrieben. Dieser Artikel geht von einem API-First-Ablauf aus.

Ein praktisches Playbook: Von den Auftragsdaten zum gedruckten Etikett

Hier ist die Reihenfolge. Sie funktioniert mit jeder ernstzunehmenden Etikettenplattform; die konkreten Schritte unten beschreiben, wie es mit dem Next Generation Label Printing System (RSJ LPSNG) aussieht, der verwalteten Option, die den größten Teil der Infrastruktur verbirgt.

Schritt 1: Das Template einmalig im Etiketten-Studio entwerfen

Öffnen Sie die Web-UI und bauen Sie das Etikett so, wie es ein Designer tun würde: Logo, Typografie, fester Rechtstext, Carrier-Kennzeichnungen. Erstellen Sie für jedes variable Element einen benannten Platzhalter, statt einen literalen Wert einzutippen — order_number, sku, barcode, ship_to, weight.

Die Namen sind wichtig. Sie sind der Vertrag zwischen dem Artwork und Ihrem Code. Sobald sie existieren, kann sich das Design zehnmal ändern, ohne dass eine einzige Zeile Ihrer Anwendung angepasst werden muss.

Schritt 2: Einen Druckauftrag mit Auftragsdaten als JSON übermitteln

Die Web-Service-API nimmt Druckaufträge entgegen. Sie senden die Auftragsdaten, referenzieren das Template und geben an, was Sie zurückbekommen möchten: PDF, PNG oder einen direkten Druck.

{
  "template": "order-label-4x6",
  "output": { "format": "pdf" },
  "data": {
    "order_number": "SO-2026-104412",
    "sku": "TSHIRT-BLK-L",
    "barcode": "SO-2026-104412-TSHIRT-BLK-L",
    "ship_to": "M. Weber\nBahnhofstr. 12\n78462 Konstanz\nDE"
  }
}

Aus Ihrem Service heraus ist das ein Aufruf pro Bestellung — oder ein Batch-Aufruf pro Kommissionierwelle:

// Illustrative request shape. The exact endpoint and payload fields for your
// instance are in the Web Service Interface reference.
const res = await fetch(`${process.env.LPSNG_BASE_URL}/job`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${await token()}`,
  },
  body: JSON.stringify(job),
});

if (!res.ok) throw new Error(`label job failed: ${res.status}`);
const { pdfUrl } = await res.json();

Das Template wird über den Namen referenziert, sodass Mayas Dashboard niemals Layout-Code enthält. Wenn der Kunde einen größeren Barcode verlangt, bearbeitet jemand das Template, und nichts wird neu deployt.

Schritt 3: Die unschöne Formatierung in Feldskripte auslagern

Echte Auftragsdaten sind hässlich. Datumsangaben kommen als ISO-Strings an, Namen kommen in gemischter Groß-/Kleinschreibung, Adressen brauchen eine länderspezifische Reihenfolge. Statt alles in Ihrer Anwendung zu normalisieren, hängen Sie einen Python-Skriptblock an das Feld, das ihn braucht — die Field Script API erlaubt es einem Skript, einen Feldwert vor dem Drucken zu lesen und zu verändern.

# Illustrative. A field script has access to the field value and the job data;
# the exact signature is documented in the Python API reference.

ship_to = "\n".join(filter(None, [
    data["customer"]["name"],
    data["customer"]["street"],
    f'{data["customer"]["zip"]} {data["customer"]["city"]}',
    data["customer"]["country"],
]))

return ship_to.strip()

Hier gehört bedingte Logik hin: ein PRIORITY-Badge, das nur für Express-Bestellungen gerendert wird, ein zweiter Barcode, der nur bei internationalen Sendungen erscheint, ein Datum, das für die Spezifikation des Carriers umformatiert wird. So bleibt die Transformation direkt neben dem Feld, das sie betrifft, statt über Ihre Codebasis verstreut zu sein.

Schritt 4: Mit dem vereinfachten OAuth2-Flow authentifizieren

RSJ LPSNG verwendet OAuth2 — aber ein vereinfachtes Registrierungsprotokoll statt des vollen Tanzes. Externe Systeme werden mit einer einzigen URL verbunden, was genau das ist, was Sie wollen, wenn die integrierende Partei ein Lagerterminal oder eine Basisstation statt eines Browsers ist.

Führen Sie die Registrierung einmal durch, speichern Sie die Anmeldedaten in Ihrem Secret Manager, und lassen Sie Ihren Service nach Bedarf erneuern. Es gibt keinen Grund, einen Authorization-Code-Flow von Hand zu bauen, wenn die Plattform einen kürzeren Weg mitliefert.

Schritt 5: Die Ausgabe je Anwendungsfall wählen

Die API rendert einzelne Etiketten als PDF oder PNG und kann direkt drucken. In der Praxis werden Sie beides mischen:

  • PDF für Packlisten und alles, was archiviert oder per E-Mail versendet wird.
  • PNG für Vorschauen im Dashboard, damit der Bediener das Etikett sieht, bevor er einen Drucklauf startet.
  • Direkter Druck für den normalen Lagerweg, bei dem das Etikett ohne Datei dazwischen an den Thermodrucker geht.

Schritt 6: Das Regal abdecken, nicht nur das Paket

Wenn Ihr Kunde auch ein stationäres Geschäft betreibt, können dieselben Auftragsdaten elektronische Regaletiketten ansteuern. Die herstellerneutrale JSON-Schnittstelle (ESLSEND) aktualisiert ESL-Displays, und es gibt einen separaten Web-Service, um Tags auf Geräten ohne Browser an Artikel zu binden. Der Binding-Workflow bekommt seine eigene Behandlung in How to Connect ESL Tags to Items via API.

{
  "//": "Illustrative shape. The vendor-neutral ESLSEND JSON is specified in the ESL Interface reference.",
  "tags": [
    { "tag": "ESL-0142", "sku": "TSHIRT-BLK-L", "price": "29.90", "currency": "EUR" }
  ]
}

Schritt 7: Eine lokale Notlösung bereithalten

Manche Standorte haben keine zuverlässige Netzwerkverbindung am Packtisch, oder der Kunde weigert sich, einen Server zu betreiben. Der LPSNG Player ist eine eigenständige Kommandozeilen-Druckmaschine: Paket plus Daten rein, PDF/PNG/JSON/Druck/ESL raus.

# Package + data in, PDF/PNG/JSON/print/ESL out.
# See the LPSNG Player reference for the current flag names.
lpsng-player order-label.package order-104412.json --output pdf

Das ist dasselbe Template und derselbe Datenvertrag, laufend auf einem Laptop oder einem Einplatinencomputer.

Was man beim Aufbau auftragsspezifischer Etikettierung vermeiden sollte

  • Layouts nicht in Ihrer Anwendung hart kodieren. In dem Moment, in dem die Etikettengeometrie in Ihrem Quellcode lebt, wird eine Design-Anpassung zu einem Release. Behalten Sie Platzhalter plus ein Template, und lassen Sie das Etiketten-Studio die Pixel besitzen.
  • Barcode-Verifizierung nicht überspringen. Prüfen Sie, dass die Plattform die 1D- und 2D-Formate unterstützt, die Sie tatsächlich brauchen, und testen Sie die Scannbarkeit mit dem echten Scanner auf die echte Entfernung. Die Methode steht in How to Verify Barcodes Before Printing Labels.
  • Bauen Sie keinen eigenen OAuth2-Flow, wenn die Plattform ein vereinfachtes Registrierungsprotokoll anbietet. Das kostet Sie Tage und fügt eine Sicherheitsfläche hinzu, die Sie dann besitzen.
  • Gehen Sie nicht davon aus, dass sich alle Drucker gleich verhalten. Bestätigen Sie, ob der direkte Druck für Ihr Hardwaremodell unterstützt wird, bevor Sie einen Go-live-Termin versprechen. Wo das nicht der Fall ist, gibt es dokumentierte Workarounds — Cloud-Printing unter anderem —, aber das sind Workarounds, nicht der primäre Weg.
  • Fehlerbehandlung nicht vergessen. Was passiert, wenn die API nicht erreichbar ist oder einem Auftragsdatensatz ein Pflichtfeld fehlt? Wiederholen Sie mit Backoff, reihen Sie den Auftrag in eine Warteschlange ein, und zeigen Sie dem Bediener einen expliziten Fehler, statt stillschweigend ein leeres Etikett zu drucken.

Wie RSJ LPSNG als verwaltete Lösung passt

RSJ LPSNG ist eine Plattform für Etikettendesign und -druck mit Web-Service-API, Python-Feldskripting und ESL-Unterstützung. Für Mayas Projekt bedeutet das: Sie besitzt das Dashboard und das Datenmapping, und die Plattform besitzt das Rendering, die Barcode-Generierung, die PDF-Ausgabe und die Druckerkommunikation.

Die Teile, die für auftragsspezifische Etikettierung zählen:

  • Etiketten-Studio für das Template-Design, damit Nicht-Entwickler Layouts anpassen können.
  • Web-Service-API für Druckaufträge und das Rendern einzelner Etiketten als PDF oder PNG, plus direkter Druck.
  • Field Script API für Python-Transformationen pro Feld und bedingte Logik.
  • OAuth2 mit vereinfachter Registrierung, damit das Verbinden eines externen Systems ein einmaliger Schritt ist.
  • Integrationsoptionen, darunter ein Google-Sheets-Add-on, eine Excel-Schnittstelle und eine wiederverwendbare Sidebar, die Sie in eine andere Webanwendung einbetten können.

Auch das Deployment ist flexibel. Es gibt eine gehostete Cloud-Edition für Mehrbenutzerzugriff, eine Embedded-Edition, die das gesamte System auf einem Einplatinencomputer wie einem Raspberry Pi ausführt, und Enterprise-Funktionen für Multi-User-, Multi-Region- und Multi-Device-Umgebungen. Diese Bandbreite ist wichtig für Freelancer: Dieselbe Integration kann in der Cloud-Edition starten und auf eine Embedded-Box beim Kunden umziehen, ohne den Client-Code neu zu schreiben.

FAQ

F: Kann ich die API verwenden, um Etiketten mit Daten aus meinem Order-Management-System zu drucken? A: Ja. Die Web-Service-API nimmt Druckaufträge mit Daten-Payloads entgegen, sodass Sie Bestelldetails (Bestellnummer, SKU, Adresse) senden und Etiketten dynamisch rendern können. Sie entwerfen das Template einmal und übermitteln dann Daten pro Bestellung.

F: Wie gehe ich mit Barcodes um, die pro Bestellung eindeutig sein müssen? A: Verwenden Sie die API, um Barcodes im Flug zu generieren, indem Sie den Barcode-Wert in den Daten-Payload aufnehmen. Das Etikettentemplate kann ein Barcode-Feld haben, das den Wert aufnimmt. Unterstützte 1D- und 2D-Formate sind dokumentiert.

F: Welche Authentifizierungsmethode verwendet die API, und wie komplex ist die Einrichtung? A: RSJ LPSNG verwendet OAuth2 mit einem vereinfachten Registrierungsprotokoll, das externe Systeme mit einer einzigen URL verbindet. Das reduziert die typische OAuth2-Komplexität und erleichtert Entwicklern die Integration.

F: Kann ich das Etiketten-Rendering ohne physischen Drucker testen? A: Ja. Die API kann Etiketten als PDF oder PNG rendern, sodass Sie die Ausgabe in der Vorschau prüfen und verifizieren können, bevor Sie sie an einen Drucker senden. Der LPSNG Player unterstützt ebenfalls die Ausgabe als PDF/PNG zum Testen.

Bauen Sie das Dashboard, nicht den Renderer

Die Lektion in Mayas Geschichte ist nicht, dass das Rendern von Etiketten unmöglich ist. Sie ist, dass das Rendern von Etiketten ein gelöstes Problem ist, und jede Stunde, die für Barcode-Bibliotheken und Druckertreiber aufgewendet wird, ist eine Stunde, die nicht in die Fulfillment-Logik fließt, für die ihr Kunde tatsächlich bezahlt. Entwerfen Sie das Template einmal, halten Sie die Platzhalternamen stabil, speisen Sie Auftragsdaten über die API ein, und lassen Sie die Plattform die Ausgabe übernehmen — PDF für Archive, PNG für Vorschauen, direkter Druck für die Lagerhalle.

Wenn Sie vor derselben Integrationsentscheidung stehen, beginnen Sie mit der Web-Service-Schnittstelle des Next Generation Label Printing System, bauen Sie ein Template mit echten Platzhalternamen und schicken Sie eine einzelne Testbestellung von Anfang bis Ende durch. Diese eine Bestellung sagt Ihnen mehr über die Passung als jeder Funktionsvergleich.

Verwandte Beiträge

EU label: AI-generated content