2009-02-13 100 views
5

我知道这个问题之前已经被问过,但是没有明确的答案。切换打印机托盘

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

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

回答

5

好吧,我明白了这一点。答案是:

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 
  • 就是这样,在托盘已被改变
  • 印刷使用Internet Explorer(从格雷厄姆特大的博客)完成

    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

    有没有简单的方法来做到这一点,因为你指明要选择从PDF特定页面,并使用Acrobat Reader软件

    实例把它们打印到特定箱:在信笺纸槽1,第2页打印页1在料仓2

    Acrobat Reader软件只允许在命令行整个文档的打印:

    你可以改变免费Ghostscript,做你想做的。

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


    见Acrobat Reader软件developer FAQ 24页了解更多详情

    AcroRd32.exe /吨路径 “打印机名称”, “驱动程序名”, “端口名” - 启动Adobe Reader和打印文件,同时抑制打印对话框。路径必须完全指定。

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

    printername - 打印机的名称。

    驱动程序名称 - 打印机驱动程序的名称,因为它出现在打印机的属性中。

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

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

    1

    这是不可能使用普通的PDF,如您有任何特别的箱子和托盘相结合创造新的打印作业(而不是所有的打印机允许你这样做,施乐4x和DP系列允许你做这样的事情)。我最好的办法是用PostScript来处理:将PDF转换为PostScript,在那里你可以访问单个页面,然后提取你需要的页面,并为每个这样的页面(或页面)创建新的打印作业(例如使用Windows程序lpr)。为了简化任务,我会为任何必须打印的纸盒和纸盒组合创建打印队列,然后将这些队列用作打印机。