【问题标题】:Least invasive way to print force print HTML with Java?使用 Java 打印强制打印 HTML 的侵入性最小的方法?
【发布时间】:2013-01-24 16:40:33
【问题描述】:

我正在为我的公司开发一个内部 Java Web 应用程序,我可以完全访问将使用该应用程序的每台机器,并且可以根据需要进行配置。部分要求是通过在 Web 应用程序中按下按钮将动态生成的 HTML 文件强制打印到配置为默认打印的打印机(无打印提示)。我正在努力满足的另一个可选要求是,这主要是独立于浏览器和操作系统的。

我有哪些选择来实现这一目标?我知道由于安全限制,无法自动默认强制打印。我研究并尝试了一些不同的选项,包括更改各种浏览器中的安全设置、运行带有打印服务器的签名小程序以及本地机器设置(如 Windows 机器中的注册表更新)。

长话短说,我知道必须在机器上进行某种设置更新才能实现我的目标,但我正在尝试找到侵入性最小且无需用户提示且需要最少设置的解决方案更新。

【问题讨论】:

  • “大部分独立于浏览器和操作系统”是做任何事情都很难达到的目标。您能否澄清一下您主要针对哪些操作系统和浏览器?你对环境有什么假设?
  • 我们专注于 IE、Firefox、Chrome 和 Safari,操作系统将是 Windows 和 Mac。版本和向后兼容性仍然悬而未决。 Safari 和 Mac 的部分原因是我们正在研究 iPad 和其他移动设备的无线打印选项。您能否更具体地说明您对哪些假设感到好奇?这是一个公司内部应用程序,因此我们对机器设置和配置有很多控制权,但我们将在不同类型的设备上运行它,因此希望使其尽可能灵活。

标签: java html printing security


【解决方案1】:

不知道你的目标是什么,但是:

  • 对于 IE,this vbscript 应该可以解决问题。
  • 在 Firefox 上,应将 about:config 中的 print.always_print_silentprint.show_print_progress 设置设置为 true 和 false。
  • 对于 Chrome,我认为这可以通过使用--kiosk --kiosk-printing 启动参数来实现。不过,它确实可以让整个应用在 Kiosk 模式下运行。
  • 我不知道 Safari 解决方案。

如果您可以使用 PDF,那里有一个名为静默打印的选项(来源:this manual),可以让您在各种浏览器中进行静默打印。

另外,“如果它只是一个内部应用程序,那么您可以避免从浏览器打印,而是将打印输出直接从服务器发送到离用户最近的打印机”,如 this similar thread 中所述。

【讨论】:

  • 出色的开始。 Chrome 和 Safari 是否有类似的选项?
  • @ChadCook 补充了我所知道的
  • 我已经尝试过applet 方法,并且大部分情况下它都有效。我一直无法摆脱允许访问打印机的提示,这似乎是在网络上搜索解决方案时的常见问题。我还寻找了更新 Java 中的安全设置以允许小程序始终访问打印机的方法,但无济于事。感谢 Chrome 提供的可能性。
  • 好的。您可能知道,至少this guy claims 至少对于 XP,它适用于他。我自己没有这方面的经验。
【解决方案2】:

一个(不是很优雅的)解决方案是通过单击按钮来调用 Web 服务。然后,此 Web 服务将在某些服务器机器上启动浏览器(例如,使用 Selenium)。浏览器将完全按照您的方式打开页面,然后输入“ctrl+p”和“enter”。 您可以确保默认打印机是您需要的打印机,并且没有进一步的对话。我曾经为 PDFCreator(也是打印机)实现过这样的解决方案。您可以在那里对其进行配置,使其不再询问任何问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多