切换打印机托盘

时间:2009-02-13 06:32:56

标签: python winapi

我知道之前已经问过这个问题,但没有明确答案。

如何以编程方式更改打印机托盘?

我正在尝试使用python批量打印一些PDF。我需要从不同的托盘打印不同的页面。打印机是理光2232C。有没有办法通过和Acrobat Reader命令行参数?我能够使用Win32 api找出哪个bin对应哪个binnames,但这就是它。任何建议/快捷方式/等?

4 个答案:

答案 0 :(得分:6)

好的,我想出来了。答案是:

 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. 使用Internet Explorer(来自Graham King的博客)

    完成打印
    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()
    
  3. 完成

答案 1 :(得分:1)

没有简单的方法可以做到这一点,因为您表示要从pdf中选择特定页面并使用Acrobat Reader将它们打印到特定的箱子

示例:在信头箱1上打印第1页,在库存箱2上打印第2页

Acrobat Reader仅允许从命令行打印整个文档:

你可以改变免费软件Ghostscript并做你想做的事。

或这个商业产品应该做的工作。 PDFPrint


有关详细信息,请参阅第24页的Acrobat Reader developer FAQ

AcroRd32.exe / t路径“printername”“drivername”“portname” - 启动Adobe Reader并打印文件,同时禁止“打印”对话框。必须完全指定路径。

/ t选项的四个参数计算为path,printername,drivername和portname(所有字符串)。

printername - 您的打印机名称。

drivername - 您的打印机驱动程序名称,与打印机属性中显示的名称相同。

portname - 打印机的端口。 portname不能包含 - 打印机驱动程序名称,因为它出现在打印机的属性中。

portname - 打印机的端口。 portname不能包含

答案 2 :(得分:1)

使用普通PDF无法实现这一点,因为您为任何特定的纸盒和纸盒组合创建了新的打印作业(并非所有打印机都允许您这样做,Xerox 4x和DP系列允许您使用做这些事情。)

我最好的选择是使用PostScript:将PDF转换为PostScript,您可以访问各个页面,然后提取所需的页面,并为每个页面(或多个页面)创建新的打印作业(例如,使用Windows程序) lpr)。为了简化任务,我将为您必须打印的bin和tray的任意组合创建打印队列,然后将这些队列用作打印机。

答案 3 :(得分:0)

您已拥有理光机器,只需获得理光打印和分享软件,您就可以在那里定义您想要使用的托盘!

这些视频向您展示如何设置理光打印和分享软件: