所以说我有一台名为ServerA
的计算机,我想让它将打印作业发送到名为WorkstationK
的计算机上的打印机队列,是否有办法在不联网打印机的情况下执行此操作附加到WorkstationK
?
注意:
我几乎在SuperUser上问过这个问题,但我想从ASP.NET服务中做到这一点,所以像“将文件复制到工作站......”这样的解决方案不起作用。
用例:
如果它很重要,这就是我想要做的事情,我有一个需要一些输入的应用程序。该输入将被发送到服务器(ServerA
)。作为该输入的结果,我需要将打印作业发送到给定的计算机,例如WorkStationK
。但它可能是大约100多台计算机之一。
所以我不想将所有这些打印机设置为“网络”打印机。此外,我不想在/为工作站安装/创建应用程序(这是一个简单的应用程序编写,如果必须,我会这样做,但我希望没有部署解决方案)
答案 0 :(得分:1)
你想要做的事情可能是不可能的,因为如果你考虑一下,那么在安全/滥用方面这将是一个真正的问题。如果一个网站可以在本地电脑上打印没有确认的东西,这将是一些严重的疯狂。因此,没有任何接口可以做到这一点。如果他们这样做,我会对它感到惊讶,请纠正我!
我想到的解决方案:
您喜欢什么取决于您,但如上所述,我不认为可以完全远程完成。
我没有想到的另一种可能性,当然也没有足够的经验,就像谷歌云打印或其他类似的服务。也许添加这个你的公司可能是一个非常舒适的解决方案,从更好的角度来看。
答案 1 :(得分:1)
我知道你有以下架构:
作为一个用例,我理解:
print
或类似的按钮我看到两种可能的选择。
这个想法是按钮打印不仅将请求发送到服务器应用程序,还生成文件(比如pdf格式)并将其发送回客户端的浏览器。如果在请求中通过将pdf文件作为对请求的响应流式传输完成,浏览器将自动下载pdf文件。
服务器代码看起来像这样(:
private void CreateImageAndReply(Src source)
{
// render the output file using GhostScript or alike to
// a subdirectory that is accessible via http
[..]
//
Response.Redirect(DownloadFileUrl);
}
必须通过IIS管理器通过add virtual directory
添加从WebApp呈现文件的子目录(请参阅)以启用从浏览器的访问。
用户将有责任打开文件并通过系统的打印对话框进行打印。
这里的想法是服务器可以将文档存储在这个客户端可访问的目录中。
写入打印文件后,在每个工作站上运行的作业都会看到新文件并将其打印出来(即通过控制台程序或批处理文件或PowerShell文件中的Print命令)。 / p>
要管理100多个“PrintBoxes”,您可以使用ComputerName作为工作站端运行的任务内部和服务器端WebApp内部的文件夹名称(即使用Environment.MachineName)。 WebApp可以例如将pdf文件渲染为c:\ Printboxes \ Desktop123 \ print0310.pdf。客户端任务可以通过TaskManager启动,例如在工作日的开始并轮询已安装的网络目录的内容,例如, N:\ Printboxes的* .pdf;此本地程序将通过print命令将任何发现的文件发送到本地打印机,然后删除该文件。它还可以将收据文件写回目录(即print0310.receipt),服务器上的应用程序WebApp可以访问该目录...我想你明白了。
作为已安装网络驱动器的替代方案,您可以考虑在所有上述机器(服务器和工作站)上使用类似Dropbox的方式来以安全的方式来回同步文件。这样,只有Dropbox-User(可以是免费帐户;服务器上的同一用户和所有客户端,无需用户的交互)。
希望它有所帮助!
答案 2 :(得分:1)
我确定你已经搜索了很多内容,但仅仅是为了添加信息(因为我无法发表评论:()
我认为你必须找到一种方法来生成SPL文件,将SPL文件发送到工作站,并提示工作站打印它。
生成SPL文件: 您可以查看这个...我知道您不想在工作站上安装任何东西,但这可能有助于您获取打印作业的SPL文件。
http://www.lvbprint.de/html/splviewer1.html
此外,对于某些打印机,还有一些设置可以捕获打印作业的SPL文件。您可以使用服务器上的PDF打印机(或其他东西)聪明地捕获打印的SPL文件吗?
发送/打印SPL文件:
发送应该很容易,但我没有看到任何超级简单的方法从SPL文件打印。有这个...
https://support.microsoft.com/en-us/kb/179774
......但它需要在工作站级别进行大量干预,这可能很难/不可能。我不知道是否只是将SPL文件直接放入打印机假脱机的默认目录中就足以使其打印出来。
仍在寻找......祝你好运。
答案 3 :(得分:-1)
ServerA如何知道WorkstationN的哪个打印机使用?如果有的话?
如果这些打印机是网络打印机,您应该能够通过网络将作业直接发送给他们。如果它们是“智能的,最后一代打印机”,您甚至可以使用构造函数将文档作为附件发送到电子邮件,而不是创建自己的应用程序。