Funktionen
Alles, was zwischen Daten und Etikett passiert
Erstellen
Vorlage + Daten (C#-Objekte, JSON, EF Core) → ZPL
Barcode-Generator
144 Symbologien, von Code 128 über GS1 DataBar und QR bis MaxiCode, DotCode und Han Xin. Ausgabe als PNG, SVG, PDF, EPS oder ^GFA. GS1-Validierung inklusive.
Label-Modell
Text, Barcode, Tabelle, Bild, RFID in mm oder Zoll. Ausdrücke mit Element-Referenzen, Validierung, AutoFit, Duplex mit Vorder- und Rückseite. Mehrsprachige Vorlagen mit {t:key} und Kultur pro Druckauftrag. Speichern und Laden als JSON-Vorlage.
Datenbindung
label.For<T>() bindet C#-Objekte, EF-Core-Abfragen und MongoDB- oder LiteDB-Dokumente per LINQ. Dazu JSON (JsonElement) und dynamische Datensätze. Streaming mit konstantem Speicher, asynchron in Stream und PipeWriter.
ZPL-Optimierer
Verkleinert ZPL ohne Pixeländerung: entfernt redundante Befehle und Standardparameter und komprimiert Grafiken neu (Hex, ACS, Z64). Pixelgleich geprüft am gesamten Referenzkorpus.
DPI-Umrechnung
ZplRescaler rechnet Roh-ZPL zwischen 203, 300 und 600 dpi um. ZplGraphicEncoder kodiert Bilder als Hex, ACS, Z64 oder B64 mit 5 Dithering-Verfahren.
Vorschau & Emulation
ZPL/EPL → PNG, PDF, SVG wie ein virtueller Zebra-Drucker
ZPL-II-Renderer
Ausgabe als PNG, JPEG, WebP, BMP, GIF, PDF, GRF, HTML, EPS, TIFF (CCITT G3/G4, LZW, Deflate, PackBits, mehrseitig), PCL (mono, grau, farbig) und ESC/POS mit NV-Logos. Gespeicherte Formate mit ^DF/^XF, Grafiken, Barcodes, Fonts.
Vektor-Ausgabe
Ganze Labels als SVG und PDF in Vektorform: Text als Glyphen-Umrisse, Barcodes und Rahmen als Pfade, Grafiken als 1-Bit-Bilder. Jedes SVG-Element trägt seine Position im ZPL-Quelltext. Rückgerastert stimmt die Ausgabe mit dem PNG überein (Mittelwert 1,000 bei 2 Dots Toleranz, 126 Labels).
EPL2-Renderer
EPL2 läuft durch dieselbe Engine. ToZpl() konvertiert bestehende EPL-Formulare nach ZPL.
Diagnose & Quellbezug
Strukturierte Diagnosen mit stabilen Codes. Jedes gerenderte Element kennt seine Position im ZPL-Quelltext und lässt sich als JSON ausgeben. Schutzgrenzen für fremdes ZPL.
Geprüfte Genauigkeit
Automatisierter Pixelvergleich gegen druckergenaue Referenzrenderings, im Mittel 0,986 über 169 Testfälle. QR-Codes (^BQ, Modell 2) sind modulgleich mit dem Zebra-Druckbild – Moduswahl, Version, Fehlerkorrektur und Maske, geprüft an über 3.600 Referenzsymbolen. QR-Modell 1 wird als Modell 2 ausgegeben. Barcode-Encoder sind bit-genau gegen bwip-js geprüft.
Weltschriften
HarfBuzz-Shaping und Bidi für Arabisch, Hebräisch, Thai, indische Schriften und CJK.
TCP 9100, USB, Windows-Spooler, CUPS, virtueller Drucker
Druckaufträge
Start-Label, Datensätze, End-Label und Schnitt nach dem letzten Etikett in einem Job. Transport über TCP 9100, seriell, USB, Windows-Spooler oder CUPS. ^MM/^MN/^MT, erweiterter ~HQ-Status, Probelauf.
Virtueller Drucker
ZplVirtualPrinter lauscht auf TCP 9100, rendert eingehende Druckjobs und antwortet auf Statusabfragen. Testen ohne Hardware, auf Wunsch mit simulierten Druckerfehlern und Cutter.
Kommandozeile
Das dotnet-Tool zplcore rendert, konvertiert EPL nach ZPL, druckt, erzeugt Barcodes, formatiert und vergleicht ZPL, prüft Etiketten (comply, verify, check) und schwärzt personenbezogene Daten.
TrueType-Fonts
TTF-Schriften gehen über ~DY in den Druckerspeicher oder werden als Grafik gedruckt (PrintAsGraphic).
Datenquellen
Jede Datenquelle, die C#-Objekte liefert
Die Datenbindung arbeitet mit jedem IEnumerable<T>, IQueryable<T> oder IAsyncEnumerable<T>. Filter und Sortierung laufen in der Datenbank, die Etiketten werden gestreamt. Damit funktionieren alle EF-Core-Provider und jeder Datenbank-Treiber mit LINQ.
Alles, was C# lesen kann
über EF Core, offizielle .NET-Treiber oder eigene Objekte
- Microsoft SQL Server
- Azure SQL
- PostgreSQL
- MySQL
- MariaDB
- Oracle
- SQLite
- MongoDB
- Azure Cosmos DB
- SAP HANA
- IBM Db2 / Informix
- Couchbase
- Firebird
- Amazon DynamoDB
- RavenDB
- Elasticsearch
- OpenSearch
- LiteDB
- Dapper / ADO.NET
- Entity Framework Core
- C#-Objekte / LINQ
- JSON
Beispiel: Logistik-Druckauftrag → Zwölf Sendungen aus SQLite, per EF Core in einen Druckauftrag
Weltschriften
Arabisch, Chinesisch, Hindi, Koreanisch, Japanisch, Russisch: korrekt geformt
TrueType-Schrift in den Druckerspeicher laden oder als Grafik drucken. Diese Ausgaben stammen direkt aus der Engine.










Code
Drei Zeilen C# bis zur Vorschau
var renderer = new ZplRenderer(new ZplRenderSettings { Dpi = 203 }.WithLabelSizeMm(100, 150)); List<byte[]> pngs = renderer.ProcessCommands( "^XA^FO50,50^A0N,40,40^FDHallo Welt^FS^BY2^FO50,120^BCN,80^FD12345^FS^XZ"); renderer.Settings.OutputFormat = ZplOutputFormat.Pdf; File.WriteAllBytes("preview.pdf", renderer.ProcessFile("labels.zpl")[0]);
using ZplCore.Labels; var job = PrintJobTemplate.FromFiles("templates/leading.json", "templates/shipping.json", "templates/trailing.json"); job.JobName = "Tour 7"; job.KeyField = "TrackingNo"; // erster/letzter Schlüssel auf dem End-Label job.CutAfterLastLabel = true; // Schnitt nur nach dem letzten Label job.StoredFormatName = "R:SHIP.ZPL"; // Vorlage einmal, danach nur Feldwerte string zpl = job.For<Shipment>().ToZpl(db.Shipments.Where(s => !s.Printed).Take(50).ToList()); File.WriteAllText("job.zpl", zpl); // 52 Labels in EINER Datei
# samples/WebApiDemo – ASP.NET Core Minimal API dotnet run -c Release --project samples/WebApiDemo # 50.000 Sendungen aus EF Core/SQLite als ZPL streamen curl 'localhost:5080/api/jobs/db/zpl?country=AT&take=50000' -o at.zpl # PDF-Vorschau aus JSON-Datensätzen curl -X POST 'localhost:5080/api/jobs/preview?format=pdf' -H 'Content-Type: application/json' -d @records.json -o preview.pdf # Asynchron über die Queue: 202 Accepted, 429 wenn voll curl -X POST localhost:5080/api/queue -H 'Content-Type: application/json' -d '{"db":{"country":"AT","take":20000},"output":"zpl"}'
var epl = new EplRenderer(new ZplRenderSettings { Dpi = 203 }); List<byte[]> labels = epl.ProcessFile("label.epl"); string zpl = epl.ToZpl(File.ReadAllText("label.epl")); // EPL-Formulare nach ZPL migrieren var bc = new ZplCore.Barcodes.Barcode { Symbology = ZplCore.Barcodes.Symbology.Gs1_128, Code = "(01)09521234543213(10)LOT42", Unit = ZplCore.Barcodes.BarcodeUnit.Millimeter, BarWidth = 0.33, BarHeight = 20, }; File.WriteAllText("gs1.svg", bc.ToSvg());
Ein Paket statt vier
Ein NuGet-Paket für vier Aufgaben
Viele .NET-Teams kaufen für Etiketten gleich mehrere SDKs: einen ZPL-Emulator, einen EPL-Emulator, einen Label-Designer und eine Barcode-Bibliothek. zplCore.com übernimmt ZPL-Rendering, EPL-Rendering, Label-Design und Barcode-Erzeugung in einem SDK, in einer Assembly.
| Einsatzfall | Üblicherweise | zplCore.com |
|---|---|---|
| ZPL → PNG/PDF-Vorschau | ZPL-Emulator-SDK | ZplRenderer |
| EPL2 → Bild, EPL → ZPL-Migration | EPL-Emulator-SDK | EplRenderer · ToZpl() |
| Etiketten im Code entwerfen, Daten binden, drucken | Label-Designer-SDK | Labels.Label · PrintJobTemplate |
| Barcodes als Bild/Vektor, GS1-Prüfung | Barcode-SDK | Barcodes.Barcode · Gs1 |
Sie wechseln von einem anderen SDK? zplCore.com ist keine 1:1-Kopie fremder APIs und hat nicht jede Funktion. Schicken Sie uns Ihre ZPL-Dateien und Anforderungen, dann prüfen wir die Abdeckung vor dem Kauf (siehe auch bekannte Grenzen).

