如何创建基于Web的打印服务器?

时间:2009-08-13 18:27:39

标签: web-applications printing

我有一个基于网络的订单调度系统。目前,系统用户手动打印出一份发货单(即他们在网页浏览器中选择“打印”)。

我想更新系统,以便所有打印都由一台专用机器处理。我期待它轮询服务器,看看是否有人需要打印,然后做一些事情来打印它。我不太确定需要做些什么。

例如。我可以有一个页面检查新的打印作业并刷新自己并使用javascript print()函数,但显然仍需要有人按下确定。有没有办法改变这种行为。它只需要在一台PC上工作,我可以设置所需的任何选项和插件。

你们中任何一个明亮的火花都能想到一个解决方案,让我能够接近做我想做的事情。例如。是否有一个花哨的pdf工具,可以从网上吸取数据,填写文档并打印出来?

4 个答案:

答案 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服务器只做一件事,生成报告并保存到共享文件夹:

  • 用户点击“生成报告并打印”。
  • pdf在Web服务器上生成并存储到共享文件夹,例如“printFolder”。

您的打印服务器将使用一些简单的脚本语言编写,例如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”

  • 删除PDF文件

如果您的网络服务器是Windows,则可以使用更简单的设置:

  • 用户点击“生成报告和修改”
  • Web服务器生成pdf文件,将其保存到某个方便的位置。
  • 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

获取详细信息(和来源)