Как установить настройки принтера без прав администратора для задания принтера, который печатает файл PDF или PS? ⇐ Python
Как установить настройки принтера без прав администратора для задания принтера, который печатает файл PDF или PS?
Некоторое время я застрял в одной проблеме. Моя проблема связана с Python, но если у вас есть пример кода решения на других языках, я тоже буду рад.
Это одна из моих последних попыток загрузить настройки принтера pDevMode перед печатью
импортировать win32print имя_принтера = win32print.GetDefaultPrinter() hprinter = win32print.OpenPrinter(имя_принтера, нет) информация = win32print.GetPrinter(hprinter, 2)["pDevMode"] печать (информация.Ориентация) win32print.DocumentProperties(0, hprinter, имя_принтера, информация, информация, 5) win32print.ClosePrinter(hprinter) печать (информация.Ориентация) PRINTER_DEFAULTS = {"DesiredAccess":win32print.PRINTER_ACCESS_USE, "pDevMode":info} bprinter = win32print.OpenPrinter(имя_принтера, PRINTER_DEFAULTS) полная информация = win32print.GetPrinter(bprinter, 2) print(fullinfo["pDevMode"].Ориентация) win32print.ClosePrinter(бпринтер) Я знаю, это выглядит странно, но идея состоит в том, чтобы получить pDevMode от принтера, сохранить новую настройку в «info», а затем открыть новый дескриптор принтера, где pDevMode установлен непосредственно в Printer_Defaults, поскольку мне это не требуется. любые разрешения администратора для этого. Однако "fullinfo["pDevMode"]" показывает, что новые настройки, установленные с помощью DocumentProperties, не сохранены
Еще одна попытка выглядела примерно так
импортировать win32print печать (win32print.GetDefaultPrinter()) путь_файла = 'test.ps' имя_принтера = win32print.GetDefaultPrinter() file_handle = open(file_path, 'rb') print_handle = win32print.OpenPrinter(win32print.GetDefaultPrinter()) информация = win32print.GetPrinter(printer_handle, 2)["pDevMode"] if (win32print.DocumentProperties(0, дескриптор_принтера, имя_принтера, информация, информация, 5) == 1): задание = win32print.StartDocPrinter(printer_handle,1,("postscripttest",None,"RAW")) print(win32print.GetJob(printer_handle, задание)) win32print.WritePrinter(printer_handle,file_handle.read()) win32print.EndDocPrinter(printer_handle) win32print.ClosePrinter(printer_handle) еще: print("Процесс отменен") Это была более ранняя попытка, но на самом деле она вообще не использует «информацию». Я просто надеялся, что он установит настройки с помощью DocumentProperties и включит их в переменную «info», но ничего не сделает для их печати.
Я ищу эту проблему уже больше недели и совершенно не понимаю, как ее решить. Я до сих пор не могу поверить, что это так сложно, поскольку существуют сотни приложений, которые используют печать с настройками без каких-либо прав администратора. Если вы знаете конкретное решение Python, это было бы здорово, но любой пример кода, показывающий, как использовать вызовы API соответствующим образом для изменения настроек без прав администратора, подойдет на любом языке, если он у вас есть. Любая помощь приветствуется!!
Некоторое время я застрял в одной проблеме. Моя проблема связана с Python, но если у вас есть пример кода решения на других языках, я тоже буду рад.
Это одна из моих последних попыток загрузить настройки принтера pDevMode перед печатью
импортировать win32print имя_принтера = win32print.GetDefaultPrinter() hprinter = win32print.OpenPrinter(имя_принтера, нет) информация = win32print.GetPrinter(hprinter, 2)["pDevMode"] печать (информация.Ориентация) win32print.DocumentProperties(0, hprinter, имя_принтера, информация, информация, 5) win32print.ClosePrinter(hprinter) печать (информация.Ориентация) PRINTER_DEFAULTS = {"DesiredAccess":win32print.PRINTER_ACCESS_USE, "pDevMode":info} bprinter = win32print.OpenPrinter(имя_принтера, PRINTER_DEFAULTS) полная информация = win32print.GetPrinter(bprinter, 2) print(fullinfo["pDevMode"].Ориентация) win32print.ClosePrinter(бпринтер) Я знаю, это выглядит странно, но идея состоит в том, чтобы получить pDevMode от принтера, сохранить новую настройку в «info», а затем открыть новый дескриптор принтера, где pDevMode установлен непосредственно в Printer_Defaults, поскольку мне это не требуется. любые разрешения администратора для этого. Однако "fullinfo["pDevMode"]" показывает, что новые настройки, установленные с помощью DocumentProperties, не сохранены
Еще одна попытка выглядела примерно так
импортировать win32print печать (win32print.GetDefaultPrinter()) путь_файла = 'test.ps' имя_принтера = win32print.GetDefaultPrinter() file_handle = open(file_path, 'rb') print_handle = win32print.OpenPrinter(win32print.GetDefaultPrinter()) информация = win32print.GetPrinter(printer_handle, 2)["pDevMode"] if (win32print.DocumentProperties(0, дескриптор_принтера, имя_принтера, информация, информация, 5) == 1): задание = win32print.StartDocPrinter(printer_handle,1,("postscripttest",None,"RAW")) print(win32print.GetJob(printer_handle, задание)) win32print.WritePrinter(printer_handle,file_handle.read()) win32print.EndDocPrinter(printer_handle) win32print.ClosePrinter(printer_handle) еще: print("Процесс отменен") Это была более ранняя попытка, но на самом деле она вообще не использует «информацию». Я просто надеялся, что он установит настройки с помощью DocumentProperties и включит их в переменную «info», но ничего не сделает для их печати.
Я ищу эту проблему уже больше недели и совершенно не понимаю, как ее решить. Я до сих пор не могу поверить, что это так сложно, поскольку существуют сотни приложений, которые используют печать с настройками без каких-либо прав администратора. Если вы знаете конкретное решение Python, это было бы здорово, но любой пример кода, показывающий, как использовать вызовы API соответствующим образом для изменения настроек без прав администратора, подойдет на любом языке, если он у вас есть. Любая помощь приветствуется!!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как массово обновить библиотеки Python без прав администратора? [дубликат]
Гость » » в форуме Python - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Гость
-