Python也能干大事,調取打印機并打印
今天我們來介紹如何獲取打印機并進行打印文本。
1.獲取打印機列表
要獲取Python中的打印機列表,可以使用`win32print`模塊(適用于Windows系統)或`cups`模塊(適用于Linux和macOS系統)。
以下是使用這兩個模塊分別獲取打印機列表的示例代碼:
在Windows系統中獲取打印機列表:
import win32print
def get_printer_list():
printers = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS)
printer_list = []
for printer in printers:
printer_name = printer[2]
printer_list.append(printer_name)
return printer_list
# 調用函數獲取打印機列表
printer_list = get_printer_list()
for printer in printer_list:
print(printer)
在Linux和macOS系統中獲取打印機列表:
import cups
def get_printer_list():
conn = cups.Connection()
printers = conn.getPrinters()
printer_list = []
for printer in printers:
printer_name = printers[printer]["printer-info"]
printer_list.append(printer_name)
return printer_list
# 調用函數獲取打印機列表
printer_list = get_printer_list()
for printer in printer_list:
print(printer)
這些示例代碼分別使用了`win32print.EnumPrinters`和`cups.Connection.getPrinters`方法來獲取打印機列表。然后,它們遍歷列表并將打印機名稱添加到一個列表中。最后,打印機列表會被打印出來。
請注意,對于Windows系統,你需要安裝`pywin32`模塊來使用`win32print`模塊。對于Linux和macOS系統,你需要安裝`cups`模塊。
打印
在Python中,你可以使用`win32api`和`win32print`模塊(適用于Windows系統)或`cups`模塊(適用于Linux和macOS系統)來調用打印機進行打印操作。
以下是使用這兩個模塊分別調用打印機進行打印的示例代碼:
在Windows系統中調用打印機打印:
import win32api
import win32print
def print_file(filename, printer_name=None):
# 打開文件
file = open(filename, "rb")
data = file.read()
file.close()
# 獲取默認打印機
if not printer_name:
printer_name = win32print.GetDefaultPrinter()
# 打印文件
hPrinter = win32print.OpenPrinter(printer_name)
try:
hJob = win32print.StartDocPrinter(hPrinter, 1, ("print job", None, "RAW"))
try:
win32print.StartPagePrinter(hPrinter)
win32print.WritePrinter(hPrinter, data)
win32print.EndPagePrinter(hPrinter)
finally:
win32print.EndDocPrinter(hPrinter)
finally:
win32print.ClosePrinter(hPrinter)
# 調用函數進行打印
print_file("test.pdf", "Your Printer Name")
這些示例代碼分別使用了`win32print`和`cups`模塊來調用打印機進行打印。它們都包含一個`print_file`函數,該函數接受要打印的文件名和打印機名稱作為參數。
在Windows系統中,`print_file`函數使用`win32api`和`win32print`模塊打開文件并將其寫入打印機。在Linux和macOS系統中,`print_file`函數使用`cups`模塊打印文件并返回打印作業的ID。