【问题标题】:Print to a specific printer with os.startfile()使用 os.startfile() 打印到特定打印机
【发布时间】:2020-06-10 16:06:39
【问题描述】:

我可以打印到特定打印机而不是默认打印机吗

os.startfile(filename, 'print')

我没有找到任何关于第三个参数的信息。

【问题讨论】:

  • 它没有第三个参数;只是文件和操作(在你的情况下,print)。
  • @ScottHunter 那么,有没有可能用它打印到特定的打印机?
  • 您也许可以打开一个子进程来获取默认打印机名称,然后将打印机更改为所需的打印机,如果您选择使用 os.starfile 进行打印,然后将其更改回默认值,但这是我得到的最好的。我也在努力寻找解决方案。
  • @ShanerM13 我正在打印pdf 文件。我最后用了pdftoprinter

标签: python operating-system


【解决方案1】:

使用 win32print.EnumPrinters(2),您可以获得所有已安装的打印机。

这是一个运行在 windows10 机器上的 python 2.7 解释器。

import win32api
import win32print
import os
import time
import shutil

#all_printers = win32print.EnumPrinters(2)
defaultPrinter = win32print.GetDefaultPrinter()
if defaultPrinter != 'TSC TC200 UG':
    win32print.SetDefaultPrinter('TSC TC200 UG')
pdf_dir = "Y:\\HOTFOLDER_DRUCK\\TSC_TC200_ETIKETTEN_UG\\INPUT"
archiv = "Y:\\HOTFOLDER_DRUCK\\TSC_TC200_ETIKETTEN_UG\\ARCHIV"

while True:
    files = os.listdir(pdf_dir)
    if files > 0:
        for f in files:
            print "printing file "+ str(pdf_dir+f) +" on "+str(win32print.GetDefaultPrinter())
            win32api.ShellExecute(0, "print", os.path.join(pdf_dir,f), None,  ".",  0)
            time.sleep(6)
            shutil.copy(os.path.join(pdf_dir,f),os.path.join(archiv,f))
            os.remove(os.path.join(pdf_dir,f))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多