SkillAgentSearch skills...

Zebrash

Library for rendering ZPL (Zebra Programming Language) files as raster images

Install / Use

/learn @ingridhq/Zebrash
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Zebrash

⚠️ Warning

As I am leaving Ingrid, I am stepping back from being the maintainer of this project. This repository will remain public, but I will no longer be reviewing pull requests, responding to issues, or releasing updates.

It is possible that this project will get a new maintainer from Ingrid in the future. In the meantime, you are welcome to open PRs or issues, though please note that they are unlikely to be reviewed. You are also free to fork this project, as it is released under the MIT license.

Sincerely, Fedir Kryvytskyi

Library for rendering ZPL (Zebra Programming Language) files as raster images

  • Partially based on https://github.com/BinaryKits/BinaryKits.Zpl
  • Uses slightly modified implementations of:
    • PDF417, Aztec, Code 2 of 5 and EAN13 barcodes from https://github.com/boombuler/barcode/
    • Code 128, Code 39, QR Code and DataMatrix from https://github.com/makiuchi-d/gozxing

Description

This library emulates subset of ZPL engine and allows you to view most of the ZPL labels that are used by carriers such as Fedex, UPS or DHL as PNGs without the need to possess physical Zebra-compatible printer. Think of https://labelary.com/viewer.html except it is completely free for commercial use, has no API limits and can easily be self-hosted or plugged into existing Go application so you don't need to send labels with real customers information to some 3rd-party servers

Example of the output (more examples can be found inside testdata folder):

UPS label

Usage:


	file, err := os.ReadFile("./testdata/label.zpl")
	if err != nil {
		t.Fatal(err)
	}

	parser := zebrash.NewParser()

	res, err := parser.Parse(file)
	if err != nil {
		t.Fatal(err)
	}

	var buff bytes.Buffer

	drawer := zebrash.NewDrawer()

	err = drawer.DrawLabelAsPng(res[0], &buff, drawers.DrawerOptions{
		LabelWidthMm:         101.6,
		LabelHeightMm:        203.2,
		Dpmm:                 8,
		EnableInvertedLabels: true,
		GrayscaleOutput:      true
	})
	if err != nil {
		t.Fatal(err)
	}

	err = os.WriteFile("./testdata/label.png", buff.Bytes(), 0744)
	if err != nil {
		t.Fatal(err)
	}

View on GitHub
GitHub Stars57
CategoryDevelopment
Updated1d ago
Forks22

Languages

Go

Security Score

95/100

Audited on Mar 30, 2026

No findings