You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

打印机自动化打印问题:PNG模糊、A4尺寸设置失败及代码异常

打印机自动化打印问题:PNG输出模糊无背景、无法设置72dpi A4及修改常量后出空白页

我无法实现打印机的自动化打印,遇到以下问题:

  • 打印PNG文件时,输出内容非常模糊且没有背景
  • 无法设置72dpi的A4打印尺寸

尝试将代码中的常量HORZRES = 8、VERTRES = 10修改为595、842后,打印机仅输出空白纸张,没有任何打印内容。

现有代码

def print_file(file_path):
    try:
        HORZRES = 8
        VERTRES = 10

        PHYSICALWIDTH = 110
        PHYSICALHEIGHT = 111

        printer_name = win32print.GetDefaultPrinter()

        hDC = win32ui.CreateDC()
        hDC.CreatePrinterDC(printer_name)
        printable_area = hDC.GetDeviceCaps(HORZRES), hDC.GetDeviceCaps(VERTRES)
        printer_size = hDC.GetDeviceCaps(PHYSICALWIDTH), hDC.GetDeviceCaps(PHYSICALHEIGHT)

        bmp = Image.open(file_path)
        if bmp.size[0] > bmp.size[1]:
            bmp = bmp.rotate(90)

        ratios = [1.0 * printable_area[0] / bmp.size[0], 1.0 * printable_area[1] / bmp.size[1]]
        scale = min(ratios)

        hDC.StartDoc(file_path)
        hDC.StartPage()

        dib = ImageWin.Dib(bmp)
        scaled_width, scaled_height = [int(scale * i) for i in bmp.size]
        x1 = int((printer_size[0] - scaled_width) / 2)
        y1 = int((printer_size[1] - scaled_height) / 2)
        x2 = x1 + scaled_width
        y2 = y1 + scaled_height
        dib.draw(hDC.GetHandleOutput(), (x1, y1, x2, y2))

        hDC.EndPage()
        hDC.EndDoc()
        hDC.DeleteDC()

    except Exception as e:
        print("Errors:", e)

内容的提问来源于stack exchange,提问作者moonkush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:42:21