Распечатать название документа, которое фактически печатается на принтере - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь добиться печати файла с win32print, чтобы я мог информировать пользователя о задании, которое фактически печатается.

Достаточно напечатать имя файла в стандартном формате. вывод с функцией print.

Я взял этот код из здесь , чтобы проиллюстрировать проблему.

from win32 import win32print
import subprocess

printer_name = win32print.GetDefaultPrinter()

print("Printer: %s" % (printer_name))

hPrinter = win32print.OpenPrinter(printer_name)

try:
    hJob = win32print.StartDocPrinter(hPrinter, 1, ("test of raw data", None, "RAW"))
    try:
        f = open("test2.ps", "r")
        win32print.StartPagePrinter(hPrinter)
        win32print.WritePrinter(hPrinter, bytes(f.read(), "utf-8"))
        win32print.EndPagePrinter(hPrinter)
    finally:
        win32print.EndDocPrinter(hPrinter)
finally:
    print("Printing: %s" % (hJob))
    win32print.ClosePrinter(hPrinter)

Как бы вы уведомили пользователя о том, что происходит напечатано (определить начало нового задания)?

Здесь - коды состояния.

например, 0x00000400 означает, что принтер печатает. Я не могу найти, как получить работу на самом деле печатается.

1 Ответ

1 голос
/ 28 февраля 2020

Если вы хотите напечатать название документа задания, которое находится в состоянии печати. Вы можете попробовать следующий пример:

import win32print

if __name__ == "__main__":
    hPrinter= win32print.OpenPrinter(name)
    job_info_level = 1
    job_infos = win32print.EnumJobs(hPrinter, 0, -1, job_info_level)
    for job_info in job_infos:
        if (job_info['Status'] == win32print.JOB_STATUS_PRINTING)
            print("Printing "+job_info['pDocument'])
    win32print.ClosePrinter(hPrinter)\

ОБНОВЛЕНИЕ:

Чтобы получить имя документа при печати, вы можете использовать FindFirstPrinterChangeNotification и FindNextPrinterChangeNotification.

Установите JOB_NOTIFY_FIELD_DOCUMENT в FindFirstPrinterChangeNotification. Вы можете сослаться на этот ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...