zplCore.comzplCore.com

Download / Get started

Up and running in five minutes

zplCore comes as NuGet packages for .NET 10 and as containers on Docker Hub. Both run right away without a key – the outputs then carry a watermark. For tests without a watermark, request a free trial key.

.NET · Docker · Trial licence · zplCore Capture · Samples on GitHub

.NET

Template and data in, ZPL, PNG and PDF out

1. Create a project

dotnet new console -o hello
cd hello
dotnet add package ZplCore

2. A template and data

# hello.json is the label template, data.json the records
echo '{"unit":"Mm","width":50.8,"height":25.4,"items":[{"type":"text","name":"title","x":3,"y":4,"width":44,"height":6,"fontSize":10,"dataField":"name"}]}' > hello.json
echo '[{"name":"Hello"},{"name":"zplCore"}]' > data.json

3. Program.cs

using System.Text.Json;
using ZplCore;
using ZplCore.Labels;

var label = Label.FromJson(File.ReadAllText("hello.json"), strict: true);
var data = JsonSerializer.Deserialize<List<JsonElement>>(File.ReadAllText("data.json"))!;

string zpl = label.For<JsonElement>().ToZpl(data, dpi: 203);   // one label per record
File.WriteAllText("labels.zpl", zpl);

var renderer = new ZplRenderer(new ZplRenderSettings { Dpi = 203 }.WithLabelSizeMm(50.8, 25.4));
File.WriteAllBytes("label.png", renderer.ProcessCommands(zpl)[0]);   // first label as PNG
renderer.Settings.OutputFormat = ZplOutputFormat.Pdf;
File.WriteAllBytes("labels.pdf", renderer.ProcessCommands(zpl)[0]);  // all labels, one page each

4. Run

dotnet run
# writes labels.zpl, label.png and labels.pdf (two labels, one page each)

Next steps: documentation (label model, data binding, barcodes, printing) · API reference

More .NET samples: one console program per task on GitHub

Samples on GitHub

More code samples: github.com/zplcore/samples

One short console program per task – render ZPL to PNG, PDF, SVG and JPG, lint, format, diff and convert between 203, 300 and 600 dpi, compliance and scan checks, RFID, GS1 and barcodes, images, SVG and PDF to ZPL, EPL2 – plus docker compose, Kubernetes, Helm, AWS ECS/Fargate, Azure Container Apps and Google Cloud Run. Each with a README and screenshots, MIT-licensed.

Open the samples on GitHub

Docker

Server and designer with docker compose

docker compose: server and designer

# compose.yaml
services:
  server:
    image: zplcore/server:1.0.0
    ports: ["8080:8080"]
    volumes: ["./templates:/templates:ro"]
    environment:
      # none = no login, only for a local test; in production apikey or jwt:
      # https://zplcore.com/docs/server/#auth
      ZPLCORE__AUTH__MODE: none
    read_only: true
    tmpfs: [/tmp]
  designer:
    image: zplcore/designer:1.0.0
    ports: ["8081:8080"]
    volumes: ["./templates:/templates:ro"]
    environment:
      # none = no login, only for a local test; in production apikey or jwt:
      # https://zplcore.com/docs/designer/#quickstart-docker
      ZPLCORE_DESIGNER__AUTH__MODE: none
    read_only: true
    tmpfs: [/tmp]

Test it: curl and the designer

# 1. a first template
mkdir templates
echo '{"unit":"Mm","width":50.8,"height":25.4,"items":[{"type":"text","name":"title","x":3,"y":4,"width":44,"height":6,"fontSize":10,"dataField":"name"}]}' > templates/hello.json

# 2. start server and designer
docker compose up -d

# 3. data in, ZPL out – and the same label as PNG
curl -X POST localhost:8080/v1/labels/hello \
  -H 'Content-Type: application/json' \
  -d '{"name":"Hello zplCore"}'
curl -X POST localhost:8080/v1/labels/hello \
  -H 'Content-Type: application/json' \
  -H 'Accept: image/png' -d '{"name":"Hello zplCore"}' -o hello.png

# 4. open the designer in the browser
#    http://localhost:8081/designer/
#    API docs of the server: http://localhost:8080/docs

The example runs without a login (none) – for a local test only. In production use API keys or JWT: authentication of the server · designer.

Everything about templates, data sources, printing and operation: server documentation · designer documentation

Kubernetes, Helm, AWS, Azure and Google Cloud Run: deployment samples on GitHub

Trial licence

Test without a watermark

Without a key every output carries the zplCore.com TRIAL watermark: it gets in the way of barcode checks and exports and costs rendering time. A free trial key removes it for 14 days – full speed, barcodes, PDFs and print data exactly as in production. The same key works for the SDK, the designer, the server, the command line tool and zplCore Capture.

Request a trial keyLicences and prices

zplCore Capture

Migrate labels from other programs

The Windows app takes over labels from NiceLabel, BarTender, TEKLYNX and other label programs as zplCore templates. zplCore Capture is not a public download: request it with the same form (zplCore Capture is ticked already) – you get the trial key and a personal download link.

Request zplCore CaptureAbout the migration