ZplBox converts HTML/PDF to ZPL.

Use your favorite web framework to design ZPL Labels far simpler and more sophisticated as native ZPL will ever can do!

ZplBox on GitHub
ZplBox is maintained by meiXXI
Licensed under AGPL-3.0 license

Description

ZplBox utilizes an embedded Chromium engine to render your web content as PNG, enabling you to use the full web technology stack to create your labels. PDF documents are converted to PNG using Apache PDFBox. You can submit your content either as a file or by referencing an external URL.

Once your content is rendered as a PNG, it is transformed into a monochrome image and encoded as a ZPL-native ASCII hexadecimal string. The resulting ZPL label consists solely of this ASCII hexadecimal string, embedded in a Graphic Field (^GF), and is returned in the response or directly forwarded to the label printer (ZPL Print Server).

This approach opens up new possibilities that are nearly impossible with native ZPL, including:

  • Images: Embed and scale images flexibly using default web technologies.
  • Fonts: You can use any fonts supported by web frameworks.
  • Text / Typography: You can use any methods you use in web design.
  • Special Characters: No restrictions regarding special characters anymore.
  • ...

ZPL Print Server

ZplBox can function as a cloud, edge, or local ZPL print server, allowing you to hide all ZPL-specific logic from your developers by abstracting it through standard web interfaces like REST or HTML. By using one of the "**/print/{TCP_ADDRESS}" endpoints, ZplBox generates ZPL labels from the provided input and forwards them directly to the specified TCP address.
ZPLBox Print Server Architecture
Figure: ZplBox as ZPL Print Server

Quick Start

1. Start ZplBox as Docker container

ZplBox is designed as a Docker container what can be started using the following command:
docker run -p 8080:8080 ghcr.io/meixxi/zplbox:latest

2. Open ZplBox UI

ZplBox comes with an intuitive user interface (UI) designed to help you get started with ZplBox and its API effortlessly. The UI allows you to manually convert HTML and PDF files to ZPL (Zebra Programming Language) and send the generated ZPL labels directly to a printer. You can access the interface at http://localhost:8080.
Image: Screen of the ZplBox User Interface

Support

We’d love for you to join us on GitHub Discussions, where our community comes together to share ideas, ask questions, and solve problems. Whether you’re looking for help, want to share your thoughts, or simply connect with others who are passionate about this project, you’re in the right place. Every contribution, big or small, makes a difference, and we’re excited to have you participate! Dive into the conversation, share your insights, and help us grow together!

Get Expert Support for ZplBox

Need help with ZplBox? Schedule a Google Meet session with the developer for personalized support and tailored solutions. Flexible timing, direct access to specialists, and secure, confidential meetings. Book your session now!

API Reference

Example

Here is a first curl example of submitting an UPS test label to the API. You will find more, automatically generated, examples in the ZplBox user interface.
curl --request POST \
     --url http://localhost:8080/v1/html2zpl \
     --header 'content-type: application/json' \
     --data '{ "url":"http://localhost:8080/labels/ups-example.html", "widthPts":812, "heightPts":1624 }'
NOTE: You can copy the generated ZPL Code to https://labelary.com/viewer.html to get a visual representation of the output.

Open API Specification (swagger.yml)

maintained by meiXXI