技术分享办公
批量生成标签
批量生成标签为您带来高效便捷的体验
2025/1/21
今天分享一个批量打印标签的软件。没别的意思,就是展示一下我们通过编写软件解决实际问题。
场景:
你是一名班主任老师,新生开学了,你要给新生分配宿舍床位,要在宿舍每一张床上贴上一个小标签,上面有床号、姓名、学号之类的信息,类似下图这个样子,方便学生到时候找到自己的床位。
如果是手写,工作量就很大了,分配床号、手写姓名、手写学号。所以今天我们写个小软件,只要准备好学生的信息,就可以批量生成标签的pdf文档,用打印机打印出来,就可以拿去贴了。
类似的场景,可能还有批量制作优惠券、批量制作考试考场安排标签、固定资产标签等等,都是一样的做法。
结果展示
先看一下结果,做出来的小标签就是下图这个样子的,一个班级的学生信息录入进去,滴一下,就生成了全部的小标签,用对应的标签纸打印出来直接贴上,效率提高了10倍还不止。
标签纸的选择
标签纸有两种选择,根据实际需要选择:
- 选择纯白的不干胶贴纸,不进行分隔,使用时通过打印出来的框进行裁剪。下面简称纸张1。
- 选择带框的已经分隔好的不干胶贴纸,生成标签,内容刚好打印在框里面,直接取用。下面简称纸张2
操作过程
测量纸张尺寸
使用尺子测量纸张的尺寸,如果是纸张1,比如A4纸的尺寸是 210*297
,如果是纸张2,测量纸张的宽高记录下来,单位毫米。
结果展示中的标签纸张是 120*90
。
测量或设置标签尺寸
如果是纸张1,直接设置自己想要的尺寸。设置标签的横向、纵向间隔。单位毫米。
如果是纸张2,使用尺子测量分隔的标签的尺寸,记录标签左上角原点的位置
x*y
,记录标签纸的横向、纵向的间隔x*y
,单位毫米。结果展示中的标签纸张是
53*25
,左上角原点位置3*3
, 横向、纵向间隔3*3
。
代码中设置参数
txt
参数(mm):
纸张宽高:120, 90
标签宽高:53, 25
标签间隔:3, 3
标签原点:3, 3
一张纸上标签行列:3 行 2 列
一张纸上标签数量:6 张
工作中整理文件、材料可能会遇到需要大量的贴标签的情况。比如学校分配学生宿舍床位,要给每个床贴上标签。比如一个超市打印优惠券
准备数据
使用xlsx文件填写需要制作床位标签的数据。
修改代码设置单个标签的内容
修改绘制标签的关键代码。
ts
/**
* 绘制标签内容
* @param pdf pdf对象
* @param label 标签尺寸
* @param point 标签左上角位置
* @param content 内容
* @param radius 圆角半径
* @param withBorder 是否要边框
* @returns
*/
function drawOneLabel(pdf, label, point, content, radius, withBorder = true) {
const { w, h } = label;
const { x, y } = point;
if (withBorder) {
pdf.setLineWidth(1);
pdf.setDrawColor("#0000FF");
pdf.roundedRect(x, y, w, h, radius, radius).fill();
}
// 这块代码根据标签的内容进行修改,确定各字段的位置
drawLeftText(pdf, label, point, content[0], 16, 5, 20);
drawLeftText(pdf, label, point, content[1], 16, 5, 27);
drawLeftText(pdf, label, point, content[2], 16, 5, 34);
drawLeftText(pdf, label, point, content[3], 16, 5, 41);
drawLeftText(pdf, label, point, content[4], 16, 5, 48);
return pdf;
}
运行
参数、数据源、标签设计都完成后,就可以批量运行了,一秒钟就可以生成几百个床位标签。
与此场景类似的还有:
- 固定资产卡
- 考场座位标签
- 购物券
- 停车票