这里作者使用python-barcode库生成条形码, 但似乎不支持直接生成带标签的条形码, 所以我是先生成的条形码, 然后将条形码贴到另一张图上去的.
安装依赖
pip install python-barcode
导入依赖:
import os
import sys
import win32ui
from barcode import EAN13, Code128, generate
from barcode.writer import ImageWriter
from PIL import Image, ImageWin, ImageDraw, ImageFont
import win32print
定义生成条形码的方法
def generate_barcode_with_text(data, text=None, extra_space=100):
print("generate_barcode_with_text被调用")
# 生成条形码
output_path = 'temp_barcode'
writer = ImageWriter()
# 在这里打印一下看看字体文件的路径, 尝试能否修改
print("generate_barcode_with_text:",writer.font_path)
barcode = generate('code128', data, writer=writer, output=output_path)
# 打开条形码图片
barcode_img = Image.open(output_path+'.png')
# 创建新的图片,比原条形码图片高extra_space像素
new_img = Image.new('RGB', (barcode_img.width, barcode_img.height + extra_space), color=(255, 255, 255))
# 将条形码粘贴到新图片的底部
new_img.paste(barcode_img, (0, extra_space))
# 在新图片的顶部添加文字
draw = ImageDraw.Draw(new_img)
font = ImageFont.truetype("arial.ttf", size=40) # 确保你的系统中有这个字体文件
draw.text((60, 30), text, font=font, fill=(0, 0, 0))
# 保存最终的图片
final_path = 'barcode.png'
new_img.save(final_path)
# 调用打印机打印的方法
# print_image(final_path)
return final_path
测试一下, 在main方法中调用此方法,:
if __name__ == '__main__':
generate_barcode_with_text("123456789ABC", "woshizhangsan")
运行后在同级目录下生成条形码图片:
如果需要打印就调用打印机打印下