【问题标题】:Yes/No Dialog on every page the printer will print打印机将打印的每一页上的是/否对话框
【发布时间】:2018-01-15 16:03:07
【问题描述】:

我在打印机服务器中执行此操作。我正在尝试制作一个程序,该程序将在继续打印由任何应用程序或网络打印的页面之前显示“是/否”对话框。

到目前为止,暂停和恢复工作很容易。但是还没有找到暂停和恢复要打印的页面的解决方案。

作为参考,这里有更多关于在 Windows 上控制打印机的信息 https://msdn.microsoft.com/en-us/library/windows/desktop/ff686805(v=vs.85).aspx

我使用的是 Windows 10 64 位。任何语言都可以。

谢谢。

【问题讨论】:

    标签: windows api printing hook print-spooler-api


    【解决方案1】:

    我准备好被证明是错误的,但我不相信这是微不足道的。后台打印程序不知道页面在后台打印会话中的开始和结束位置。

    每个页面的位置取决于语言,并且几乎不能指望打印后台处理程序解析流以找到每个页面的开始和结束,这会很慢。

    另一种方法是让打印处理器记录每页的开头和结尾以及那一刻假脱机文件的偏移量,然后将该信息分别传递给假脱机程序。

    但这也有问题。 “RAW 打印”功能允许打印应用程序将“内容”直接注入打印流,完全绕过打印处理器。例如,在打印到 PostScript 打印机时,这在页面布局应用程序中很常见,尤其是在 Windows 上,因为在 Windows 上打印时支持 CMYK 是不可能的,而且专色更难。

    注入的代码可以包含任意数量的页面,并且后台打印程序无法知道每个页面的位置。

    所以在一般情况下,我认为这是不可能的,至少在打印后台处理程序中是不可能的。

    【讨论】:

    • 我会更进一步,说这几乎是不可能的。尽管注入原始打印机数据是一个问题,但更大的问题是执行此操作的代码必须驻留在打印处理器或打印驱动程序中。驱动程序总是由打印机制造商提供,而打印处理器通常也是如此。用您自己的替换它们需要您模仿制造商代码的整个行为集。由于几乎没有人发布该信息,因此您必须对服务器上支持的每台打印机进行逆向工程。这根本不可行。
    • 感谢您的澄清。我求助于控制所有进来的工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多