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

实现标贴预览的两种方式

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

实现标贴预览的两种方式

前言

本文介绍如何基于 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 文件:

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、代码示例

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/404422.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gitlab,从A仓库迁移某个工程到B仓库,保留提交记录

从A仓库&#xff0c;拷贝 git clone --bare ssh://git192.168.30.88:22/framework/platform.git 在B仓库新建工程&#xff0c;注意&#xff1a;一定要去掉默认的生成README文件进入platform.git 文件夹下&#xff0c;推送到B仓库 git push --mirror ssh://git192.168.30.100…

怎么用sora赚第一桶金?

&#x1f31f;解锁文字变视频的强大功能&#xff01;&#x1f31f; ✨欢迎来到 Sora Cand&#xff0c;一个革命性的网站&#xff0c;利用 OpenAI 的 Sora 模型帮你把文字变成酷炫的视频&#xff01;✨ 想象一下&#xff0c;你的文字从纸上跳出来&#xff0c;变成引人入胜的视觉…

全志T527国产核心板及米尔配套开发板批量上市!

2023年12月&#xff0c;米尔电子联合战略合作伙伴全志科技&#xff0c;率先业内发布了国产第一款T527核心板及开发板。这款高性能、高性价比、八核A55的国产核心板吸引了广大客户关注&#xff0c;为积极响应客户需求&#xff0c;米尔基于全志T527核心板现已批量上市&#xff0c…

RabbitMQ 部署方式选择

部署模式 RabbitMQ支持多种部署模式&#xff0c;可以根据应用的需求和规模选择适合的模式。以下是一些常见的RabbitMQ部署模式&#xff1a; 单节点模式&#xff1a; 最简单的部署方式&#xff0c;所有的RabbitMQ组件&#xff08;消息存储、交换机、队列等&#xff09;都运行在…

Java项目:21 基于SSM实现的图书借阅管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 基于SSM实现的图书借阅管理系统设计了两个角色&#xff0c;分别是管理员、用户&#xff0c;在数据表user中以ident字段区分&#xff0c;为1表示管理员…

Math方法,以及三角函数计算

abs(x) 返回参数的绝对值 var xMath.abs(-5) //5floor(x) 向下舍入为最接近的整数。 var xMath.floor(2.1) //2ceil(x) 向上舍入为最接近的整数。 var xMath.ceil(2.1) //3fround(x) 最接近的&#xff08;32 位单精度&#xff09;浮点表示。 var xMath.fround(2.60) //2.59…

企业动态|上海航空工业集团殷舜晖部长一行到访同创永益

1月24日上午&#xff0c;中国商飞上海航空工业集团采购中心殷舜晖部长一行4人到访同创永益北京总部。同创永益COO马青山、营销副总经理刘翔、总经办主任田东陪同参观&#xff0c;并介绍了公司的发展历程与近年来的突出成绩。 在随后的会议中&#xff0c;马青山向殷舜晖部长一行…

AppBox快速开发框架(开源)开发流程介绍

目前很多低代码平台都是基于Web用拖拽方式生成界面&#xff0c;确实可以极大的提高开发效率&#xff0c;但也存在一些问题&#xff1a; 大部分平台灵活性不够&#xff0c;特殊需求需要较大的自定义开发&#xff1b; 解析json配置的执行效率不是太高&#xff1b; 大部分平台缺…

统计图雷达图绘制方法

统计图雷达图绘制方法 常用的统计图有条形图、柱形图、折线图、曲线图、饼图、环形图、扇形图。 前几类图比较容易绘制&#xff0c;饼图环形图绘制较难。 还有一种雷达图的绘制也较难&#xff0c;今提供雷达图的绘制方法供参考。 本方法采用C语言的最基本功能&#xff1a; &am…

k8s(2)

目录 一.二进制部署k8s 常见的K8S安装部署方式&#xff1a; k8s部署 二进制与高可用的区别 二.部署k8s 初始化操作&#xff1a; 每台node安装docker&#xff1a; 在 master01 节点上操作; 准备cfssl证书生成工具:&#xff1a; 执行脚本文件&#xff1a; 拉入etcd压缩包…

【目标检测新SOTA!v7 v4作者新作!】YOLO v9 思路复现 + 全流程优化

YOLO v9 思路复现 全流程优化 提出背景&#xff1a;深层网络的 信息丢失、梯度流偏差YOLO v9 设计逻辑可编程梯度信息&#xff08;PGI&#xff09;&#xff1a;使用PGI改善训练过程广义高效层聚合网络&#xff08;GELAN&#xff09;&#xff1a;使用GELAN改进架构 对比其他解法…

Airtest-Selenium实操小课③:下载可爱猫猫图片

1. 前言 那么这周我们看看如何实现使用Airtest-Selenium实现自动搜索下载可爱的猫猫图片吧~ 2. 需求分析和准备 整体的需求大致可以分为以下步骤&#xff1a; 打开chrome浏览器 打开百度网页 搜索“可爱猫猫图片” 定位图片元素 创建存储图片的文件夹 下载可爱猫猫图片…

SpringBoot中Redis缓存的使用

目录 1 前言 2 实现方法 2.1 查询数据时 2.2 修改数据 1 前言 对于一些不常改变&#xff0c;但又经常查询的数据&#xff0c;我们可以使用Redis缓存&#xff0c;来缓解数据库的压力&#xff0c;其中的逻辑如下&#xff1a; 2 实现方法 2.1 查询数据时 一般在控制类查询方…

普中51单片机(DS18B20温度传感器)

DS18B20温度传感器原理 内部结构 64位(激)光刻只读存储器 光刻ROM中的64位序列号是出厂前被光刻好的&#xff0c;它可以看作是该DS18B20的地址序列号。64位光刻ROM的排列是&#xff1a;开始8位&#xff08;28H&#xff09;是产品类型标号&#xff0c;接着的48位是该DS18B20自身…

推荐系统经典模型YouTubeDNN

文章目录 YouTubeDNN概念YouTubeDNN模型架构图YouTubeDNN召回阶段YouTubeDNN层级介绍 YouTubeDNN排序阶段YoutubeDNN模型中的一些Trick负采样问题特征构造上下文选择 总结 YouTubeDNN概念 YouTubeDNN是YouTube用于做视频推荐的落地模型&#xff0c;其大体思路就是召回阶段使用…

Kubernetes 二进制部署 《easzlab / kubeasz项目部署》(一)

Kubernetes 二进制部署 - easzlab / kubeasz项目部署 1. 准备工作1.1 设置防火墙1.2 设置SeLinux1.3 设置时区及时间同步1.4 配置域名解析1.5 确认SSH开启1.6 IP转发1.7 安装docker1.8 关闭swap 2. 服务器规划2.1 基本架构图2.2 官方建议2.3 实践服务器规划 3. 服务器配置3.1 配…

Airtest遇到模拟器无法输入中文的情况该如何处理?

1. 前言 最近有收到同学们的一些提问&#xff0c;使用Airtest的 text 接口&#xff0c;发现在部分模拟器上&#xff0c; text 无法输入中文&#xff0c;不知道该怎么处理。 今天我们就输入这个小问题&#xff0c;来详细聊一下。 2. Airtest的输入法简介 对于Android设备来说…

WebStorm 2023:让您更接近理想的开发环境 mac/win版

JetBrains WebStorm 2023激活版下载是一款强大而智能的Web开发工具&#xff0c;专为提高开发人员的生产力而设计。这款编辑器提供了许多先进的代码编辑功能&#xff0c;以及一系列实用的工具和插件&#xff0c;可帮助您更快地编写、调试和测试代码。 WebStorm 2023软件获取 We…

ESP8266智能家居(1)——开发环境的搭建

1.前期介绍 本次打算使用esp8266的开发板——NodeMCU&#xff0c;进行物联网相关项目的学习。开发环境使用Arduino软件。 NodeMCU实物图为&#xff1a; 开发环境截图为&#xff1a; 2.软件下载 我使用的arduino版本为1.8.5&#xff0c;其安装包如下&#xff1a; 【免费】ar…

五大方法教你如何分分钟构造百万测试数据!

在测试的工作过程中&#xff0c;很多场景是需要构造一些数据在项目里的&#xff0c;方便测试工作的进行&#xff0c;构造的方法有很多&#xff0c;难度和技术深度也不一样。本文提供方法供你选择。 在测试的工作过程中&#xff0c;很多场景是需要构造一些数据在项目里的&#…