python實現(xiàn)發(fā)送圖片到打印機進行打印
前言
環(huán)境
操作系統(tǒng):win10
python:3.8.16
依賴
pip install openpyxl qrcode pillow pypiwin32 reportlab
功能
python printer.py 運行后,會檢索本機已經(jīng)連接的打印機設(shè)備,然后通過需要選擇打印機,然后傳入圖片路徑即可下發(fā)打印任務(wù)到打印機(期間會對圖片轉(zhuǎn)矢量圖)。
可以對圖片輸入部分做個批量自動化,就可以批量打印了。
效果圖

源碼
直接打印版本
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("選擇要使用的打印機 (輸入對應(yīng)的序號): ")) - 1
printer_name = printers[choice]
# 加載圖片
image_path = input("輸入要打印的圖片的路徑: ")
image = Image.open(image_path)
# 創(chuàng)建設(shè)備描述表
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))
# 結(jié)束頁面
hDC.EndPage()
# 結(jié)束文檔
hDC.EndDoc()
# 刪除設(shè)備描述表對象
del hDC
print("打印成功!")
打開edge進行打印的版本
會運行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("選擇要使用的打印機 (輸入對應(yīng)的序號): ")) - 1
printer_name = printers[choice]
# 加載圖片
image_path = input("輸入要打印的圖片的路徑: ")
image = Image.open(image_path)
# 轉(zhuǎn)換圖片為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)\Microsoft\Edge\Application\msedge.exe' # 默認(rèn)的Edge路徑
cmd = [edge_path, '--kiosk-printing', pdf_path]
subprocess.run(cmd)
print("打印成功!")
到此這篇關(guān)于python實現(xiàn)發(fā)送圖片到打印機進行打印的文章就介紹到這了,更多相關(guān)python圖片發(fā)送與打印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python如何聲明以管理員方式運行(附實戰(zhàn)案例)
由于Windows的安全機制,Python寫的腳本缺少了管理員權(quán)限,運行就會受到一些限制,這篇文章主要介紹了Python如何聲明以管理員方式運行的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
Python實現(xiàn)為Excel中每個單元格計算其在文件中的平均值
這篇文章主要為大家詳細(xì)介紹了如何基于Python語言實現(xiàn)對大量不同的Excel文件加以跨文件、逐單元格平均值計算,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10
Python實現(xiàn)分段讀取和保存遙感數(shù)據(jù)
當(dāng)遇到批量讀取大量遙感數(shù)據(jù)進行運算的時候,如果不進行分段讀取操作的話,電腦內(nèi)存可能面臨著不夠使用的情況,所以我們要進行分段讀取數(shù)據(jù)然后進行運算,運算結(jié)束之后把這段數(shù)據(jù)保存成tif文件,本文介紹了Python實現(xiàn)分段讀取和保存遙感數(shù)據(jù),需要的朋友可以參考下2023-08-08
Python實現(xiàn)的基于優(yōu)先等級分配糖果問題算法示例
這篇文章主要介紹了Python實現(xiàn)的基于優(yōu)先等級分配糖果問題算法,涉及Python針對列表的遍歷、判斷、計算等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04

