【Python_Zebra斑马打印机编程学习笔记(一)】实现标贴预览的两种方式

实现标贴预览的两种方式

    • 实现标贴预览的两种方式
    • 前言
    • [一、调用 Labelary Online ZPL Viewer API 方法实现标贴预览功能](#一、调用 Labelary Online ZPL Viewer API 方法实现标贴预览功能)
      • [1、Labelary Online ZPL Viewer API 案例介绍](#1、Labelary Online ZPL Viewer API 案例介绍)
      • [2、生成 PNG 格式](#2、生成 PNG 格式)
      • 3、Parameters
    • [二、通过 zpl 的 label.preview() 方法实现标贴预览功能](#二、通过 zpl 的 label.preview() 方法实现标贴预览功能)

实现标贴预览的两种方式

前言

本文介绍如何基于 ZPL 指令实现标贴的预览,项目的 GUI 界面基于 Pyside6 实现,zpl 格式的文件可以通过 BarTender 生成,也可以自己编写;关于如何基于 ZPL 指令绘制标贴和 通过 BarTender 将 btw 文件转换为 zpl 文件后续会在专栏中总结,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。

一、调用 Labelary Online ZPL Viewer API 方法实现标贴预览功能

1、Labelary Online ZPL Viewer API 案例介绍

在这里先介绍下标贴预览的网站,Labelary Online ZPL Viewer

Labelary Online ZPL Viewer 提供了 API 接口,是一个在线的服务,可以使用 Pyhon、Java、C#、PHP 等多种语言进行调用;

项目是基于 Python 实现的,所以本文只介绍如何基于 Python 调用 API 接口。

点击 Python 后,页面跳转到 4.6. Python Example,这个提供了一个案例:使用 Requests 库发送 POST 请求,将 ZPL 格式的字符串转换为 PDF 文件:

python 复制代码
import requests
import shutil

zpl = '^xa^cfa,50^fo100,100^fdHello World^fs^xz'

# adjust print density (8dpmm), label width (4 inches), label height (6 inches), and label index (0) as necessary
url = 'http://api.labelary.com/v1/printers/8dpmm/labels/4x6/0/'
files = {'file' : zpl}
headers = {'Accept' : 'application/pdf'} # omit this line to get PNG images back
response = requests.post(url, headers = headers, files = files, stream = True)

if response.status_code == 200:
    response.raw.decode_content = True
    with open('label.pdf', 'wb') as out_file: # change file name for PNG images
        shutil.copyfileobj(response.raw, out_file)
else:
    print('Error: ' + response.text)

运行代码后可以生成标贴的 PDF 文档,但如果想要保存图片格式又该如何操作?

2、生成 PNG 格式

找到 1. Introduction 介绍中查看信息,可以发现,其实 requests 请求头中默认无参为 PNG格式,也可以是 python Accept: image/png,并且也提供了 IPL、EPL、DPL、JSON 等格式文件的 request header;

除 POST 请求外,也提供了 GET 请求,但是 Content-Type 是有所变化的。

3、Parameters

在 url 请求中,有以下的几个参数可以进行设置

  1. dpmm:打印密度,以每毫米点为单位,有 6dpmm, 8dpmm, 12dpmm, 24dpmm 四个值可以设置;
  2. width:标贴的宽度,以英寸为单位;
  3. height:标贴的高度,以英寸为单位;
  4. index:标签索引,一些 ZPL 代码会生成多个标签,这个参数可以用来访问这些不同的标签;
  5. zpl:ZPL代码;

二、通过 zpl 的 label.preview() 方法实现标贴预览功能

1、实现步骤

使用 Python 的第三方库 zpl 来实现标贴的预览功能,大致分为以下几个步骤:

  1. 创建图片的路径:python imageFile = save_path_dir + "\\label.png"
  2. 通过 zpl.Label() 方法创建标贴对象 label:python label = zpl.Label(40, 40, 12)
  3. 标贴对象 label 通过 write_text() 标贴写入 zpl 格式的字符串:python label.write_text(self.zpl)
  4. 标贴对象 label 通过 preview() 方法实现标贴预览:python label.preview(outputfile=imageFile)
    运行后即可在 1. 中创建的路径下生成 png 文件。

2、代码示例

python 复制代码
import zpl
# <editor-fold desc="创建文件">
        # 获取当前文件所在文件夹路径
        folder_path = os.getcwd()
        save_path_dir = f"{folder_path}\\tZpl"
        # 判断该路径是否存在
        if not os.path.exists(save_path_dir):
            # 如果不存在则创建
            os.makedirs(save_path_dir)
        # 图片路径
        imageFile = save_path_dir + "\\label.png"
        # 先删掉上一次预览生成的png文件,要保持是最新的
        if os.path.exists(imageFile):
            try:
                os.remove(imageFile)
            except Exception as e:
                print(e)
        # </editor-fold>
        # 定义标贴大小
        label = zpl.Label(40, 40, 12)
        # 标贴写入zpl
        label.write_text(self.zpl)
        try:
            # 标贴预览
            label.preview(outputfile=imageFile)
        except Exception as e:
            msg = 'Error: ' + f"{e}"
            print(msg)
相关推荐
放飞自我的Coder29 分钟前
【python ROUGE BLEU jiaba.cut NLP常用的指标计算】
python·自然语言处理·bleu·rouge·jieba分词
正义的彬彬侠1 小时前
【scikit-learn 1.2版本后】sklearn.datasets中load_boston报错 使用 fetch_openml 函数来加载波士顿房价
python·机器学习·sklearn
张小生1801 小时前
PyCharm中 argparse 库 的使用方法
python·pycharm
秃头佛爷1 小时前
Python使用PDF相关组件案例详解
python
Dxy12393102161 小时前
python下载pdf
数据库·python·pdf
叶知安1 小时前
如何用pycharm连接sagemath?
ide·python·pycharm
weixin_432702261 小时前
代码随想录算法训练营第五十五天|图论理论基础
数据结构·python·算法·深度优先·图论
菜鸟清风1 小时前
ChromeDriver下载地址
python
deephub2 小时前
Tokenformer:基于参数标记化的高效可扩展Transformer架构
人工智能·python·深度学习·架构·transformer
Open-AI2 小时前
Python如何判断一个数是几位数
python