2009-02-13 37 views
5

Tôi biết câu hỏi này đã được hỏi trước đây, nhưng không có câu trả lời rõ ràng.Khay chuyển đổi máy in

Làm cách nào để thay đổi khay máy in theo cách lập trình?

Tôi đang cố sử dụng python để in hàng loạt một số tệp PDF. Tôi cần in các trang khác nhau từ các khay khác nhau. Máy in là máy Ricoh 2232C. Có cách nào để thực hiện nó và thông số dòng lệnh Acrobat Reader không? Tôi có thể sử dụng api Win32 để tìm ra cái thùng nào tương ứng với binnames nào, nhưng đó là về nó. Bất kỳ lời khuyên/phím tắt/etc?

Trả lời

5

Ok, tôi đã tìm ra điều này. Câu trả lời là:

1.bạn cần một máy in cục bộ (nếu bạn cần in bằng máy in mạng, tải xuống trình điều khiển và thêm nó làm máy in cục bộ)
2. sử dụng win32print để lấy và đặt máy in mặc định
3. cũng sử dụng win32print, sử dụng như sau mã:

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. đó là nó, khay đã được thay đổi
  2. in ấn được thực hiện sử dụng internet explorer (từ blog 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() 
    

Xong

1

Không có cách nào dễ dàng để làm điều này, vì bạn biết bạn muốn chọn các trang cụ thể từ pdf và in chúng để thùng cụ thể sử dụng Acrobat Reader

Ví dụ: In trang 1 trên thùng giấy tiêu đề 1, trang 2 trên cổ bin 2

Acrobat Reader chỉ cho phép in toàn bộ tài liệu từ dòng lệnh:

bạn có thể thay đổi phần mềm miễn phí Ghostscript và làm những gì bạn muốn.

hoặc sản phẩm thương mại này nên thực hiện công việc. PDFPrint


Xem Acrobat Reader developer FAQ trên trang 24 để biết thêm chi tiết

Acrord32.exe/t path "printername" "drivername" "portname" - Bắt đầu Adobe Reader và in một tập tin trong khi đàn áp hộp thoại In. Đường dẫn phải được chỉ định đầy đủ.

Bốn tham số của tùy chọn/t sẽ được đánh giá là đường dẫn, tên printername, tên máy sấy và tên cổng (tất cả các chuỗi).

printername - Tên máy in của bạn.

drivername - Tên trình điều khiển máy in của bạn, như xuất hiện trong các thuộc tính của máy in.

tên cổng - Cổng của máy in. tên cổng không thể chứa - Tên trình điều khiển máy in của bạn, như xuất hiện trong các thuộc tính của máy in.

tên cổng - Cổng của máy in. tên cổng không được chứa

1

Không thể sử dụng PDF thuần tuý, vì bạn đã tạo lệnh in mới cho bất kỳ kết hợp khay và khay nào (và không phải tất cả máy in đều cho phép bạn thực hiện điều đó, Xerox 4x và DP Series) những điều như vậy). Đặt cược tốt nhất của tôi sẽ là tung hứng với PostScript: chuyển đổi PDF sang PostScript, nơi bạn có quyền truy cập vào các trang riêng lẻ, sau đó trích xuất các trang bạn cần và cho mỗi trang (hoặc trang) tạo công việc in mới (ví dụ: sử dụng Windows) chương trình lpr). Để giảm bớt tác vụ, tôi sẽ tạo hàng đợi in cho bất kỳ kết hợp nào của thùng và khay bạn phải in, sau đó sử dụng các hàng đợi này làm máy in.

Các vấn đề liên quan