Переключение лотков принтера - PullRequest
5 голосов
/ 13 февраля 2009

Я знаю, что этот вопрос задавался ранее, но четкого ответа не было.

Как программно изменить лоток принтера?

Я пытаюсь использовать python для пакетной печати некоторых PDF-файлов. Мне нужно печатать разные страницы из разных лотков. Принтер Ricoh 2232C. Есть ли способ сделать это через параметр командной строки Acrobat Reader? Я могу использовать API-интерфейс Win32, чтобы узнать, какие лотки соответствуют каким именам, но это все. Любой совет / ярлыки / и т.д.?

Ответы [ 4 ]

6 голосов
/ 16 февраля 2009

Хорошо, я понял это. Ответ:

1. вам нужен локальный принтер (если вам нужно распечатать на сетевом принтере, скачайте драйверы и добавьте его в качестве локального принтера)
2. используйте win32print, чтобы получить и установить принтер по умолчанию.
3. также используя win32print, используйте следующий код:

import win32print
PRINTER_DEFAULTS = {"DesiredAccess":win32print.PRINTER_ALL_ACCESS}
pHandle = win32print.OpenPrinter('RICOH-LOCAL', PRINTER_DEFAULTS)
properties = win32print.GetPrinter(pHandle, 2) #get the properties
pDevModeObj = properties["pDevMode"] #get the devmode
automaticTray = 7
tray_one = 1
tray_two = 3
tray_three = 2
printer_tray = []
pDevModeObj.DefaultSource = tray_three #set the tray
properties["pDevMode"]=pDevModeObj #write the devmode back to properties
win32print.SetPrinter(pHandle,2,properties,0) #save the properties to the printer
  1. Вот и все, лоток был изменен
  2. печать выполняется с помощью интернет-обозревателя (из блога Грэма Кинга)

    from win32com import client
        import time
        ie = client.Dispatch("InternetExplorer.Application")
        def printPDFDocument(filename):
            ie.Navigate(filename)
            if ie.Busy:
                time.sleep(1)
            ie.Document.printAll()
        ie.Quit()
    

Выполнено

1 голос
/ 13 февраля 2009

Это невозможно при использовании обычного PDF, так как вы создали новое задание на печать для любой конкретной комбинации лотка и лотка (и не все принтеры позволяют вам это делать, Xerox 4x и DP Series позволяют вам это делать такие вещи).

Лучше всего было бы работать с PostScript: конвертировать PDF в PostScript, где у вас есть доступ к отдельным страницам, затем извлекать нужные вам страницы и для каждой такой страницы (или страниц) создавать новые задания на печать (например, с помощью программы Windows). lpr). Чтобы упростить задачу, я бы создал очередь печати для любой комбинации лотка и лотка, в которую нужно печатать, а затем использовал эти очереди в качестве принтеров.

1 голос
/ 13 февраля 2009

Нет простого способа сделать это, поскольку вы указываете, что хотите выбрать определенные страницы из PDF-файла и распечатать их в определенные ячейки с помощью Acrobat Reader

Пример: печать страницы 1 на фирменном лотке 1, стр. 2 на складе 2

Acrobat Reader позволяет печатать весь документ только из командной строки:

Вы можете изменить бесплатное Ghostscript и делать то, что хотите.

или этот коммерческий продукт должен выполнять эту работу. PDFPrint


Подробнее см. В Acrobat Reader для разработчиков на стр. 24

AcroRd32.exe / t путь "имя_принтера" "имя_привода" "имя_порта" - Запустить Adobe Reader и распечатать файл, не открывая диалоговое окно «Печать». Путь должен быть полностью указан.

Четыре параметра параметра / t оцениваются как путь, имя_принтера, имя_привода и имя порта (все строки).

имя_принтера - название вашего принтера.

drivername - Имя драйвера вашего принтера, как оно отображается в свойствах вашего принтера.

portname - Порт принтера. имя порта не может содержать имя драйвера вашего принтера, как оно указано в свойствах вашего принтера.

portname - Порт принтера. имя порта не может содержать

0 голосов
/ 07 февраля 2013

У вас уже есть аппарат Ricoh, просто приобретите программное обеспечение Ricoh Print & Share, и вы сможете определить, какие лотки вы хотите использовать!

В этих видеороликах показано, как настроить программное обеспечение Ricoh Print & Share:

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