Python library for converting PDF and images to Zebra Programming Language (ZPL)
Project description
Zebrafy is a Python 3 library for converting PDF and images to and from Zebra Programming Language (ZPL) graphic fields (^GF).
Zebrafy consists of three conversion tools:
ZebrafyImage — convert an image into valid ZPL
ZebrafyPDF — convert a PDF into valid ZPL
ZebrafyZPL — convert valid ZPL graphic fields into images or PDF
If you want more control over the resulting ZPL data, ZebrafyImage and ZebrafyPDF support the following optional parameters:
Parameter |
Description |
---|---|
format |
ZPL graphic field format type (default "ASCII")
|
invert |
Invert the black and white in the image/PDF output. (True or False, default False) |
dither |
Dither the result instead of hard limit on black pixels. (True or False, default True) |
threshold |
Black pixel threshold for image without dithering (0-255, default 128) |
width |
Width of the image in the resulting ZPL, 0 to use original image/PDF width (default 0) |
height |
Height of the image in the resulting ZPL, 0 to use original image/PDF height (default 0) |
pos_x |
Pixel x position of the graphic field in resulting ZPL (default 0) |
pos_y |
Pixel y position of the graphic field in resulting ZPL (default 0) |
rotation |
Rotates the image by the specified degree (0, 90, 180 or 270, default 0) |
complete_zpl |
Add ZPL header and footer or only get the ZPL graphic field output (True or False, default True) |
Additionally, ZebrafyPDF supports the following optional parameters:
Parameter |
Description |
---|---|
dpi |
Pixels per PDF canvas unit, defines resolution scaling of the PDF image (<72: compress, >72: stretch, default 72) |
split_pages |
Split the PDF into separate ZPL labels for each page (True or False, default False) |
Getting Started
Installation
pip install zebrafy
Dependencies
Pip handles all dependencies automatically. This library is built on top of:
Example Usage
Image to ZPL Graphic Field with ZebrafyImage
Convert image bytes into a complete ZPL string and save to file:
from zebrafy import ZebrafyImage
with open("source.png", "rb") as image:
zpl_string = ZebrafyImage(image.read()).to_zpl()
with open("output.zpl", "w") as zpl:
zpl.write(zpl_string)
Example usage with optional parameters:
from zebrafy import ZebrafyImage
with open("source.png", "rb") as image:
zpl_string = ZebrafyImage(
image.read(),
format="Z64",
invert=True,
dither=False,
threshold=128,
width=720,
height=1280,
pos_x=100,
pos_y=100,
rotation=90,
complete_zpl=True,
).to_zpl()
with open("output.zpl", "w") as zpl:
zpl.write(zpl_string)
Alternatively, ZebrafyImage also accepts PIL Image as the image parameter instead of image bytes:
from PIL import Image
from zebrafy import ZebrafyImage
pil_image = Image.new(mode="RGB", size=(100, 100))
zpl_string = ZebrafyImage(pil_image).to_zpl()
with open("output.zpl", "w") as zpl:
zpl.write(zpl_string)
PDF to ZPL Graphic Field with ZebrafyPDF
Convert PDF bytes into a complete ZPL string and save to file:
from zebrafy import ZebrafyPDF
with open("source.pdf", "rb") as pdf:
zpl_string = ZebrafyPDF(pdf.read()).to_zpl()
with open("output.zpl", "w") as zpl:
zpl.write(zpl_string)
ZebrafyPDF conversion supports the same optional parameters as ZebrafyImage conversion, with the addition of the split_pages parameter to split the PDF pages:
from zebrafy import ZebrafyPDF
with open("source.pdf", "rb") as pdf:
zpl_string = ZebrafyPDF(
pdf.read(),
format="Z64",
invert=True,
dither=False,
threshold=128,
dpi=72,
width=720,
height=1280,
pos_x=100,
pos_y=100,
rotation=90,
complete_zpl=True,
split_pages=True,
).to_zpl()
with open("output.zpl", "w") as zpl:
zpl.write(zpl_string)
ZPL to PDF or Images with ZebrafyZPL
Convert all graphic fields from a valid ZPL file to PIL Images and save to image files:
from zebrafy import ZebrafyZPL
with open("source.zpl", "r") as zpl:
pil_images = ZebrafyZPL(zpl.read()).to_images()
for count, pil_image in enumerate(pil_images):
pil_image.save(f"output_{count}.png", "PNG")
Convert all graphic fields from a valid ZPL file to PDF bytes and save to PDF file:
from zebrafy import ZebrafyZPL
with open("source.zpl", "r") as zpl:
pdf_bytes = ZebrafyZPL(zpl.read()).to_pdf()
with open("output.pdf", "wb") as pdf:
pdf.write(pdf_bytes)
Contributing and Issues
Contributions and bug reports are welcome and can be submitted on the GitHub page.
The project does not yet have a well-defined scope, and I’m open to new feature requests. Features currently in consideration are:
HTML to ZPL conversion by implementing standard HTML elements into ZPL commands
Extract text from a PDF to render it as a native ZPL command instead of graphic field
License
This source is released under the GNU Lesser General Public License v3.0.
Logo
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file zebrafy-1.2.1.tar.gz
.
File metadata
- Download URL: zebrafy-1.2.1.tar.gz
- Upload date:
- Size: 2.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc0f9c7bb2d94c8a5b80b8f51af23ca5d6d4801df21e17c51e6c880737d6e575 |
|
MD5 | 3229fd2aed833bfb530d0960cc287a06 |
|
BLAKE2b-256 | 8f6f2327fa346fca2b73ac8d1ac5d8dd02e42f94b3c5629b2a7c1bace3a0d0e2 |
File details
Details for the file zebrafy-1.2.1-py3-none-any.whl
.
File metadata
- Download URL: zebrafy-1.2.1-py3-none-any.whl
- Upload date:
- Size: 19.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.0.0 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17bcd67fcd9b8f9432c0582ed233756b2925f853c5530a7f495b933638c663db |
|
MD5 | 40d46fce8e6498bd66b3779ffd28fe9e |
|
BLAKE2b-256 | 99af9da3c7a71a853ed1a7a1da2215db1fd0c995013b4196a0ae21a6435bd526 |