gpt4 book ai didi

python - 打印文件并配置打印机设置

转载 作者:太空狗 更新时间:2023-10-30 00:17:25 30 4
gpt4 key购买 nike

我正在尝试在 Windows 上使用 Python 编写打印机自动化代码,但无法完成。

我不是很理解这个话题,我有点惊讶 - 完成这项工作的“简单”方法似乎不存在..?有很多 API 允许以一种很好且简单的方式访问常见的东西,但是打印似乎是“特别的”……?

这是我拥有的和我想做的:

  • 有一个PDF文件。 PDF 已经存在,我不想创建 PDF 或任何其他文件类型。我喜欢打印这个 PDF 文件。一次一个文件。
  • 该文件可以采用横向和纵向布局。该文件可能具有以下尺寸之一:A4、A3、A2、A1 和 A0。
  • 我喜欢使用普通的“物理”打印机打印文件。打印机是网络设备并使用其 IP 连接。有各种网络打印机,我希望能够使用不止一种。有些只是小型 A4 打印机,有些是大型办公设备(多合一扫描、复印、打印……) - 还有大型绘图仪(最大为 A0 尺寸的纸张)。
  • 我想编码:“在这台打印机上打印这个 PDF 文件”。
  • 我喜欢配置打印尺寸。我想以原始尺寸“按原样”打印 PDF - 但我也希望能够在小尺寸纸张上打印大格式。就像,PDF 本身是 A0 尺寸,但我想打印在 A3 纸上。或者原始 PDF 大小是 A2,我想在 A4 上打印。
  • 我想在 Windows 7 计算机(SP1,64 位)上使用它。我正在尝试在 python 中编码。我正在使用 python 2.7,因为我使用了一些在 python 3 中不可用的第三方模块。 一般来说,可以通过 python 脚本触发的每个工作解决方案都是受欢迎的。


  • 对我来说,这似乎不是一项非常“复杂”的任务。 “手动”执行此操作非常简单直接——选择文档、开始打印、选择打印机、选择纸张尺寸——然后打印。

    通过代码来做到这一点似乎相当困难。这是我到目前为止所遇到的。
  • 有多种程序可用于命令行打印,例如“Acrobat Reader”、“Foxit Reader”或类似程序。虽然使用这些程序提供的命令进行打印非常完美,但无法访问打印机设置来配置纸张尺寸。
  • 有特殊的命令行打印工具,但我找不到任何有用的免费软件。我尝试过“VeryPDF”命令行工具,但在纸张尺寸方面使用它时遇到了一些问题。虽然完美支持各种字母格式和各种其他东西,但不知何故不支持我需要的纸张尺寸(A4 到 A0)。有 A4 和 A3 的预设,这些工作。该工具可以选择通过仅通过测量值 (in/pt/mm) 来使用自定义纸张尺寸 - 但这并没有像示例所示那样工作,使用此方法时它总是打印到 A4。
  • 我找到了 python 的 win32-package,包括 win32print。我不明白这件事。 API 提供了查找、添加或删除打印机、列出打印机队列、启动和停止打印机作业等功能 - 但不能简单地打印文件。似乎这个 API 可用于通过 python 编码创建打印数据来添加打印机作业,将一些文本和/或图形推送到"file"之类的东西中,然后将其发送到打印机。以打印机已经理解的格式。


  • 当使用这个 win32print 模块时,我无法让它正常工作。这是我尝试使用的示例片段:
    from win32print import *
    printer = GetDefaultPrinterW()
    handle = OpenPrinter(printer)
    info = GetPrinter(handle, 2)
    cap = DeviceCapabilities(info['pPrinterName'], info['pPortName'], DC_PAPERS)
    ClosePrinter(handle)

    ...如此处所述:

    http://timgolden.me.uk/pywin32-docs/win32print__DeviceCapabilities_meth.html

    但这只是返回:
    NameError: name 'DC_PAPERS' is not defined

    每当我尝试使用需要传递此类常量的函数时,就会发生这种情况。我的系统上没有定义一个常量,我不知道为什么。

    但是我不知道即使在正常工作时我是否可以使用这个 API,所有的使用示例都只是展示了如何将文本字符串发送到打印机。那不是我需要的,也不是我想知道的。

    是否有任何可行的解决方案来打印文件并以简单直接的方式设置打印尺寸?

    欢迎提出想法和提示!

    最佳答案

    查看 Tim Golden 网站上的“How To Print”页面。当您提出问题时,该页面与 2014 年相同。有一个打印 JPG 文件的示例,该文件也操作打印机设置。

    这不是您正在做的事情的完美示例,但它应该让您走上正轨。

    DC_PAPERS 在 win32con 中定义:

    import win32con
    x = win32con.DC_PAPERS

    你怎么知道的,我不知道。对于那些已经熟悉 Python 之外的 Win32API 的人来说,这也许是“显而易见的”......

    关于python - 打印文件并配置打印机设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23688440/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com