【问题标题】:How do I create a web based print server?如何创建基于 Web 的打印服务器?
【发布时间】:2009-08-13 18:27:38
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: web-applications printing


    【解决方案1】:

    如果我需要做的只是从 Linux 服务器打印,我会编写一个非常简单的 Web 服务,通过 POST 请求(来自主 Web 应用程序,而不是来自用户桌面)接受 pdf,将其保存到临时文件,并将其通过管道传输到可以直接接受 pdf 的lpr。标准 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/ 是一种商业解决方案。

    【讨论】:

      【解决方案2】:

      如果您的网络服务器是 linux,并且您的打印服务器是 windows:

      网络服务器只会做一件事,生成报告并保存到共享文件夹:

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

      您的打印服务器将使用一些简单的脚本语言编写,例如 windows 脚本主机或 powershell。 (perl 甚至是命令行 php!)

      打印服务器查看共享的“printFolder”。带有 5 秒 sleep() 的无限循环

      • 如果那里有任何文件,请运行 adobe acrobat 静默打印命令行。

        AcroRd32.exe /t "C:\test.pdf" "\servername\printername" "AdobePS Tektronix Phaser 840" "123.45.678.910"

      • 删除 PDF 文件

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

      • 用户点击“生成报告并发送”
      • 网络服务器生成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

      【讨论】:

        【解决方案3】:

        如果您构建了一个专用 API(例如 Web 服务),那么您可以构建一个 Windows 服务来获取发货单的数据、创建 PDF 并将这些数据发送到打印机。

        添加:

        Windows 服务将调用 WebService 并在本地/专用打印机上创建 PDF 文件。理想情况下,PDF 是使用诸如 ActiveReports 之类的报告工具或其他生成 PDF 的报告工具创建的(这将使将来构建报告更快且可编辑)然后您可以使用 GhostScript(开源 PDF 解释器)将 PDF 直接发送到命名打印机。

        【讨论】:

          【解决方案4】:

          除了关于 Google Cloud Print、Apple Air Print 和 HP ePrint 的大量讨论外,目前似乎没有解决方案来实现浏览器内跨平台无人值守打印。

          我们选择使用 JasperREports 作为 Web 服务来生成 PDF,然后为 linux 和 windows 使用自定义构建客户端来轮询服务器是否需要打印任何 PDF。您可以在http://mdornseif.github.com/2011/01/08/PDF-on-appengine.html

          获取详细信息(和来源)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-12-13
            • 1970-01-01
            相关资源
            最近更新 更多