【问题标题】:Programmatically Print Documents以编程方式打印文档
【发布时间】:2009-03-11 17:34:28
【问题描述】:

虽然我无法将运行 Win7 64 的桌面连接到我们的网络打印机,但我希望能够使用 Input Director 将文件粘贴到我笔记本电脑上的共享中。我想要一个 FileSystemWatcher 来提取它们并打印,然后删除它们。我该怎么做?我假设我需要以某种方式连接到 shell,这意味着我的应用程序不能成为服务,但我在这里真的一无所知。

我已安装 Input Director,因此我可以将光标从桌面桌面屏幕移到笔记本电脑桌面上,然后只需右键单击要打印的文件。不过,我仍然有兴趣学习如何进行打印。

【问题讨论】:

    标签: c# .net windows


    【解决方案1】:

    我想这取决于您要打印的内容,因为应用程序负责将文档呈现给打印设备,而不是外壳本身。

    这难道不是为您的打印机找到正确驱动程序的漫长道路吗?

    【讨论】:

    • 找到驱动程序是一个漫长的过程。我已经安装了 Input Director,所以我可以将鼠标指针移到笔记本电脑上并打印。这个问题变得比实际更学术。
    【解决方案2】:

    鉴于您的要求(非生产、非服务器解决方案),为什么不直接在笔记本电脑上启动一个命令行应用程序,然后 FileSystemWatcher 挂钩并打印它们?或者,您可以编写一个“活”在图标托盘中的应用程序。

    至于如何打印它们,具体取决于应用程序,但对于许多应用程序,您可以让 shell 弄清楚并使用带有打印操作的 ShellExecute API。

    【讨论】:

      【解决方案3】:

      System.Drawing.Printing 会帮你做你想做的事。无需挂接到 shell,因此您可以将其作为服务来执行。每当您检测到新文件时,只需将其发送到打印机即可。

      对于更多涉及的类型(Word 文档等),您可以使用 Interop 库来使用 Word 本身来打印文档。例如,here 是 Interop.Word PrintOut 方法。

      【讨论】:

      • 我假设(我知道... :-))OP 正在谈论从 3rd 方应用程序(Word、Excel、PDF 等)打印文档,在这种情况下我不会不认为这些课程会有帮助。
      • 这正是创建互操作库的情况。我添加了一个指向 PrintOut 方法的链接,以进一步说明我的意思。
      • 然而,这意味着我必须根据注册的文件类型找到一个查找表来为我提供对象和打印方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      相关资源
      最近更新 更多