python实现发送图片到打印机进行打印

Written by

in

文章目录
  • 目录
    • 前言
      • 环境
      • 依赖
      • 功能
      • 效果图
    • 源码
      • 直接打印版本
      • 打开edge进行打印的版本

    操作系统:win10

    python:3.8.16

    pip install openpyxl qrcode pillow pypiwin32 reportlab

    python printer.py 运行后,会检索本机已经连接的打印机设备,然后通过需要选择打印机,然后传入图片路径即可下发打印任务到打印机(期间会对图片转矢量图)。

    可以对图片输入部分做个批量自动化,就可以批量打印了。

    import win32print
    import win32ui
    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}")
    
    # 选择打印机
    choice = int(input("选择要使用的打印机 (输入对应的序号): ")) - 1
    printer_name = printers[choice]
    
    # 加载图片
    image_path = input("输入要打印的图片的路径: ")
    image = Image.open(image_path)
    
    # 创建设备描述表
    hDC = win32ui.CreateDC()
    hDC.CreatePrinterDC(printer_name)
    
    # 开始文档
    hDC.StartDoc(image_path)
    
    # 开始页面
    hDC.StartPage()
    
    # 绘制位图
    dib = ImageWin.Dib(image)
    dib.draw(hDC.GetHandleOutput(), (0, 0, image.width, image.height))
    
    # 结束页面
    hDC.EndPage()
    
    # 结束文档
    hDC.EndDoc()
    
    # 删除设备描述表对象
    del hDC
    
    print("打印成功!")
    
    

    会运行edge让你手动打印0.0

    import subprocess
    import win32print
    from reportlab.pdfgen import canvas
    from reportlab.lib.pagesizes import letter, landscape
    from PIL import Image
    
    # 列出所有打印机
    printers = [printer[2] for printer in win32print.EnumPrinters(2)]
    for i, printer in enumerate(printers):
        print(f"{i+1}: {printer}")
    
    # 选择打印机
    choice = int(input("选择要使用的打印机 (输入对应的序号): ")) - 1
    printer_name = printers[choice]
    
    # 加载图片
    image_path = input("输入要打印的图片的路径: ")
    image = Image.open(image_path)
    
    # 转换图片为PDF
    pdf_path = image_path.rsplit('.', 1)[0] + '.pdf'
    c = canvas.Canvas(pdf_path, pagesize=landscape(letter))
    width, height = landscape(letter)
    c.drawImage(image_path, 0, 0, width, height)
    c.showPage()
    c.save()
    
    # 打印PDF
    edge_path = r'C:Program Files (x86)MicrosoftEdgeApplicationmsedge.exe' # 默认的Edge路径
    cmd = [edge_path, '--kiosk-printing', pdf_path]
    subprocess.run(cmd)
    
    print("打印成功!")
    
    

    到此这篇关于python实现发送图片到打印机进行打印的文章就介绍到这了,更多相关python图片发送与打印内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

    您可能感兴趣的文章:

    • Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
    • python连接打印机实现打印文档、图片、pdf文件等功能
    • Python+Flask开发局域网智能打印服务系统
    • 基于Python实现优雅的目录结构打印工具
    • Python中打印异常信息的常用方法
    • Python实现跨平台表格数据分页打印预览处理详解

    站内搜索