3

我想知道 Web 应用程序(托管在远程服务器上)是否有可能检测到连接到主机(访问 Web 应用程序的那个)的打印机?

此外,是否也可以将打印作业(主要是图像)发送到主机的打印机?

例如,假设您有一个在桌面上运行的本地 WPF 应用程序(Windows Presentation Foundation、C#)。

要打印图像:

  1. 在 WPF 应用程序上选择一个图像(从本地硬盘上的目录加载)
  2. 点击“打印按钮”

这将运行这行 C# 代码:

e.Graphics.DrawImage(image, x-coordinate, y-coordinate, imageWidth, imageHeight);

并将打印作业发送image到本地计算机的默认打印机。

所以现在,您有一个 Web 应用程序,而不是 WPF 应用程序。用户将:

  1. 输入 Web 应用程序的 URL
  2. Web-App 将加载类似于 WPF 应用程序的页面
  3. Web-App 将显示从数据库加载的图像。
  4. 用户选择他要打印的图像
  5. 用户点击“打印图像”

但是,为了打印图像,我想 Web 应用程序需要识别用户在其本地计算机上的打印机,并能够与打印机通信。

当然,Web-App 不需要在 .NET 中。我只是以 WPF/C# 为例。

4

2 回答 2

1

坦率地说,答案是否定的。服务器端代码不能以这种方式与客户端资源通信。

一个可能的解决方案可能是将一些客户端组件嵌入到您的 Web 应用程序中,它可以执行您想要的操作,例如 Java 小程序或 Silverlight 项目。我不知道他们是否能够打印,但这可能是一个值得研究的选择。

但是,我建议处理它的最佳方法(如果您的用例允许)是提供能够通过本机浏览器方法打印的东西。您可以使用元素media="print"上的属性提供适用于打印的样式表。link如果这仍然太不精确(您无法控制浏览器的纸张大小、页边距、页眉/页脚等),也许另一种选择可能是提供特定于打印的文件,例如 PDF。最终,您所要求的内容是不可能的,这是寻找另一种方法来满足您的要求的情况。

于 2013-08-02T19:24:07.833 回答
1

我有一个类似的问题,我没有编程,但是我发现惠普打印机可以通过惠普网络接收打印作业。如果您启用了 WiFi,则应该有一种方法可以将打印作业通过电子邮件发送到打印机。我还在研究这个。但是,我有一个朋友使用 AWS 做了类似的事情。

有一段时间了,但我了解到 HP 打印机可以启用 WiFi。这意味着,如果他们连接到连接到互联网的 WiFi 网络,他们将获得一个电子邮件地址,并且可以通过互联网将其打印到该地址。电子邮件通过互联网直接到达打印机,然后在打印机上打印。因此,您可以通过电子邮件发送打印文档。

于 2017-12-21T14:52:05.357 回答