job_info = win32print.GetJob(printer_handle,1) pywintypes.error: (87, 'GetJob', '参数错误。')
时间: 2024-01-21 21:03:59 浏览: 262
这个错误通常是由于没有打印作业或者打印作业的编号错误导致的。你可以先使用 `EnumJobs()` 函数来获取打印队列中的作业信息。以下是获取第一个作业页数的修改过的代码:
```python
import win32print
import win32api
# 获取默认打印机名称
printer_name = win32print.GetDefaultPrinter()
# 打开打印机设备
printer_handle = win32print.OpenPrinter(printer_name)
# 获取打印作业列表
job_entries = win32print.EnumJobs(printer_handle, 0, -1, 1)
if len(job_entries) > 0:
# 获取第一个打印作业的信息
job_info = win32print.GetJob(printer_handle, job_entries[0]['JobId'])
# 获取打印作业的页数
total_pages = job_info['TotalPages']
# 打印页数
print("Total pages:", total_pages)
else:
print("No print jobs found.")
# 关闭打印机设备
win32print.ClosePrinter(printer_handle)
```
这个代码将首先使用 `EnumJobs()` 函数获取打印作业列表,然后获取第一个作业的页数。如果打印队列中没有作业,它将打印出 "No print jobs found."。如果你想获取其他作业的页数,你需要修改 `EnumJobs()` 函数的最后一个参数来实现。例如,如果你想获取第二个作业的页数,你需要将参数修改为 `2`。
阅读全文