【问题标题】:In ShellExecute, how to specify print parameters like page range, tray etc?在 ShellExecute 中,如何指定页面范围、托盘等打印参数?
【发布时间】:2018-05-16 08:04:22
【问题描述】:

这是我用来在 Windows 机器上使用 Python 打印 pdf 文件的代码。我已安装 adobe Acrobat Reader 以帮助打印。

win32api.ShellExecute(0,"print",file_path,"NPIAC1EC3 (HP LaserJet Pro MFP M226dw)",".",3)  

如何添加其他选项来提及打印机托盘/页面来源、页面范围等内容?

我已阅读 MSDN 上关于 ShellExecute 的文档。

我在文档中看到有一个 lpParameters (我完全猜测这是我指定打印参数的地方)但没有解释如何将它与“打印”参数一起使用.

【问题讨论】:

  • How can I add additional options to mention things like Printer Tray/Page Source, page range etc? 是什么让您认为这是可能的? 我不是说不是,只是好奇。
  • 您传递给ShellExecute()print 动词将所有内容作为默认值。它支持上下文菜单选项print,就像您在资源管理器中看到的那样。因此,它是不可参数化的。
  • 有没有办法通过python(windows)或windows命令指定打印机托盘和页面限制来打印文件
  • @Parvathy 没有简单的方法,甚至是中等难度的方法来做你想做的事。您将不得不编写一个 PDF 渲染器。我认为这是一个比你想解决的更大的项目。

标签: python windows


【解决方案1】:

链接的文档说明了您想要的东西是不可能的。评论摘录(强调我的):

语法:

HINSTANCE ShellExecute(
  _In_opt_ HWND    hwnd,
  _In_opt_ LPCTSTR lpOperation,
  _In_     LPCTSTR lpFile,
  _In_opt_ LPCTSTR lpParameters,
  _In_opt_ LPCTSTR lpDirectory,
  _In_     INT     nShowCmd
);

参数
...

  • lpOperation [输入,可选]

    类型:LPCTSTR

    指向以空字符结尾的字符串的指针,在这种情况下称为动词,...常用的动词如下:
    ...

    打印

    打印由 lpFile 指定的文件。 如果 lpFile 不是文档文件,则函数失败

所以当你使用"print"作为动词时,lpFile应该是一个文档文件

...

  • lpParameters [输入,可选]

    类型:LPCTSTR

    如果 lpFile 指定一个可执行文件,则此参数是一个指向以 null 结尾的字符串的指针,该字符串指定要传递给应用程序的参数。此字符串的格式由要调用的动词确定。 如果 lpFile 指定一个文档文件,lpParameters 应该为 NULL

因此,当您使用print 作为动词时,lpFile 必须是文档文件,并且lpParameters 必须为空:没有规定可以将附加参数传递给ShellExecute 打印操作。

【讨论】:

  • 有没有办法通过python(windows中)或windows命令指定打印机托盘和页面限制来打印文件。
  • @Parvathy:当然可以,但是您必须深入研究Printing API 并设法将其与 Python 接口...
猜你喜欢
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 2010-12-08
  • 2012-10-15
  • 1970-01-01
  • 2020-03-16
相关资源
最近更新 更多