我有一个基于网络的订单调度系统。目前,系统用户手动打印出一份发货单(即他们在网页浏览器中选择“打印”)。
我想更新系统,以便所有打印都由一台专用机器处理。我期待它轮询服务器,看看是否有人需要打印,然后做一些事情来打印它。我不太确定需要做些什么。
例如。我可以有一个页面检查新的打印作业并刷新自己并使用javascript print()函数,但显然仍需要有人按下确定。有没有办法改变这种行为。它只需要在一台PC上工作,我可以设置所需的任何选项和插件。
你们中任何一个明亮的火花都能想到一个解决方案,让我能够接近做我想做的事情。例如。是否有一个花哨的pdf工具,可以从网上吸取数据,填写文档并打印出来?
答案 0 :(得分:2)
如果我需要做的只是从Linux服务器打印,我会编写一个非常简单的Web服务,通过POST请求(来自主Web应用程序,而不是用户的桌面)接受pdf,将其保存到临时文件,并将其管道到lpr
,它可以直接接受pdf。标准Linux打印系统可以轻松配置为打印到Windows或Linux打印服务器或联网打印机,而不是直接连接的打印机。
要实际生成.pdf,如果您使用的是可填写的pdf表单,则可以使用iText填写字段并保存结果,即使您不允许使用Acrobat Reader。或者您可以使用iText从头开始生成整个.pdf。我很高兴在Python中使用reportlab生成pdf。
如果由于某种原因你喜欢XSLT,那么你可以使用XSL-FO,但我认为这很痛苦。 http://html2fo.sourceforge.net/将html转换为XSL-FO,可以渲染为pdf并打印。
你究竟打印什么?您是否已经拥有pdf,或者您是否需要将网页转换为pdf?如果你需要像pdf一样精美地呈现网页,那么http://www.princexml.com/是一个商业解决方案。
答案 1 :(得分:0)
如果您的网络服务器是Linux,而您的打印服务器窗口是:
Web服务器只做一件事,生成报告并保存到共享文件夹:
您的打印服务器将使用一些简单的脚本语言编写,例如Windows脚本宿主或PowerShell。 (perl甚至命令行php!)
打印服务器查看共享的“printFolder”。有5秒睡眠的无限循环()
如果有任何文件,则运行adobe acrobat silent print命令行。
AcroRd32.exe / t“C:\ test.pdf”“\ servername \ printername”“AdobePS Tektronix Phaser 840”“123.45.678.910”
如果您的网络服务器是Windows,则可以使用更简单的设置:
Web服务器通过CGI调用调用adobe reader命令行打印实用程序。
AcroRd32.exe / t“C:\ test.pdf”“\ servername \ printername”“AdobePS Tektronix Phaser 840”“123.45.678.910”
Web服务器删除生成的文件。
命令行打印信息:http://support.adobe.com/devsup/devsup.nsf/docs/52080.htm
答案 2 :(得分:0)
如果您构建专用API(例如webservice),则可以构建Windows服务以获取发送备注的数据,创建PDF并将其发送到打印机。
<强>加了:强>
Windows服务将调用WebService并在本地/专用打印机上创建PDF文件。理想情况下,PDF是使用报告工具(如ActiveReports或其他生成PDF的报告工具)创建的(这样可以使报告在未来更快速地编辑)您可以使用GhostScript(开源PDF解释器)将PDF直接发送到命名打印机。
答案 3 :(得分:0)
除了大量关于Google云打印,Apple Air Print和HP ePrint的讨论之外,目前似乎还没有解决方案来实现浏览器内跨平台无人值守打印。
我们选择使用JasperREports作为Web服务生成PDF,然后使用自定义构建客户端用于Linux和Windows,以便在有任何PDF要打印的情况下轮询服务器。您可以在http://mdornseif.github.com/2011/01/08/PDF-on-appengine.html
获取详细信息(和来源)