django学习笔记04 热敏打印pywin32使用记录
  2U15lpegzuxq 2023年11月24日 17 0

学习机项目已进入打印环节,需要调用打印机完成题库内的内容打印。


我使用的打印机 80MM 的热敏 厨房专用 希望孩子做题像切菜一样顺利吧!

寻找打印机

  printers = [printer[2] for printer in win32print.EnumPrinters(2)]
        for i, printer in enumerate(printers):
            print(f"{i + 1}: {printer}")
        print(data1)
        print(type(data1))

实例打印机

printer_name = 'RONGTA 80mm Series Printer' #printers[0]
        hDC = win32ui.CreateDC()
        hDC.CreatePrinterDC(printer_name)  #
        hDC.StartDoc("标签名")
        hDC.StartPage()

设置每个小卷必打内容 或者说头部

Ctime = time.strftime("%H:%M", time.localtime())
        Num = 'A201'
        Name = '张三 男 66'

        DataList = [
            [190, 0, '用时:', {'name': '黑体', 'height': 30}],
            [15, 0, '姓名:', {'name': '黑体', 'height': 30}],
            # [15, 94, '项目:', {'name': '宋体', 'height': 27}],
            # [90, 10, Num, {'name': '宋体', 'height': 33, 'weight': 1000}],
            [340,0,"发卷时间:"+Ctime, {'name': '黑体', 'height': 30}],
            # [462, 10, Name, {'name': '宋体', 'height': 33, 'weight': 1000}],
        ]

设置好开打

for data in DataList:
            font = win32ui.CreateFont(data[3])
            hDC.SelectObject(font)
            hDC.TextOut(data[0], data[1], data[2])

        #hDC.DrawText(txt,(ulc_x,ulc_y,lrc_x,lrc_y),win32con.DT_LEFT)

下面是完整代码

 import win32print, win32ui, time
        #from PIL import Image, ImageWin
        printers = [printer[2] for printer in win32print.EnumPrinters(2)]
        for i, printer in enumerate(printers):
            print(f"{i + 1}: {printer}")
        print(data1)
        print(type(data1))
        # 选择打印机
        # choice = int(input("选择要使用的打印机 (输入对应的序号): ")) - 1
        printer_name = 'RONGTA 80mm Series Printer' #printers[0]
        hDC = win32ui.CreateDC()
        hDC.CreatePrinterDC(printer_name)  #
        hDC.StartDoc("标签名")
        hDC.StartPage()

        Ctime = time.strftime("%H:%M", time.localtime())
        Num = 'A201'
        Name = '张三 男 66'

        DataList = [
            [190, 0, '用时:', {'name': '黑体', 'height': 30}],
            [15, 0, '姓名:', {'name': '黑体', 'height': 30}],
            # [15, 94, '项目:', {'name': '宋体', 'height': 27}],
            # [90, 10, Num, {'name': '宋体', 'height': 33, 'weight': 1000}],
            [340,0,"发卷时间:"+Ctime, {'name': '黑体', 'height': 30}],
            # [462, 10, Name, {'name': '宋体', 'height': 33, 'weight': 1000}],
        ]

        for data in DataList:
            font = win32ui.CreateFont(data[3])
            hDC.SelectObject(font)
            hDC.TextOut(data[0], data[1], data[2])

        #hDC.DrawText(txt,(ulc_x,ulc_y,lrc_x,lrc_y),win32con.DT_LEFT)



        font = win32ui.CreateFont({'name': '宋体', 'height': 22, })
        hDC.SelectObject(font)

        # 长文本换行
        fsize = 40  # 字体大小
        min_x =50  # X轴最小值
        max_x = 520  # X轴最大值
        text_x = 20  # 字X坐标
        text_y = 60  # 字Y坐标

        font = win32ui.CreateFont({'name': '宋体', 'height': fsize})
        hDC.SelectObject(font)

        # 用list(项目)转为列表,后用for加位置判断一个个字打入,实现换行
        for x in data1:
            for text in list(x):
                if text_x > max_x and text not in ['%']:  # 判断 text_x是否超过最大设定值 及 是否'、'开头
                    text_y += fsize + 15  # 行间距3
                    text_x = min_x
                font = win32ui.CreateFont({'name': '黑体', 'height': 40})
                hDC.SelectObject(font)
                hDC.TextOut(text_x, text_y, text)
                text_x += fsize + 10  # 字间距0
            text_x = 20
            text_y += fsize + 60  # 行间距3
            # hDC.TextOut(text_x, text_y+20, '!')
            # image_path = r'C:\Users\Administrator\Downloads\zhubi.png'
            # image = Image.open(image_path)
            # dib = ImageWin.Dib (image)
            # dib.draw (hDC.GetHandleOutput (), (0, 600, 399, 239))
        hDC.TextOut(text_x, text_y + 60, "豌豆语文 严选100 高效刷题营")
        hDC.EndPage()
        hDC.EndDoc()
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月24日 0

暂无评论

推荐阅读
2U15lpegzuxq