使用itext创建“仅打印”PDF

这个问题与我最近发布的另一个问题有关: 使用Java / JSP检查打印

我们正在寻找替代目前我们如何通过applet在Java Web应用程序中打印检查的替代方法。 似乎共识是使用PDF进行打印,并且itext提供了使用Java执行此操作的能力。

但是 ,在我们的特定情况下,检查是“仅打印”非常重要 – 用户不应该在应用程序中有任何能力来保存支票(我知道一个精明的用户可以做一个PrintScreen,但我们想要覆盖我们的后备和在应用程序中不使用本机function来保存检查)。

我没有成功浏览网页,看看是否可以用这种方式用itext创建PDF。 我见过关于限制PDF权限的post,但我真正想要的是一种禁用使用itext本地保存PDF的方法。

这个function是否存在? 如果是这样,你能指点我的文档/代码示例吗?

我假设您正在提供此PDF并希望在没有安装普通客户端插件的Web应用程序/网站中打印它。

如果使用常规方法(例如Adobe Reader)打印PDF,则必须将PDF下载到浏览器的缓存中以进行打开和打印。 没有办法解决这个问题。

现在,您可以通过以下技术阻止普通Joe在本地保存PDF,但任何精明的用户都可以检查HTML的源并直接下载PDF。

  1. 在iText中输出PDF,以便在打开PDF时自动进行打印操作
  2. 在您加载此PDF的HTML页面上放置一个不可见的IFRAME,但在浏览器中看不到您的用户

当用户加载HTML页面时,PDF将加载到IFRAME中并发送给用户打印机(假设在浏览器中安装了Adobe Reader)。 是的,PDF将最终出现在浏览器缓存中,但用户必须足够聪明才能识别出这一点,然后在浏览器的缓存中搜索它。

如果这是不可接受的,您将不得不考虑将PDF转换为另一种文件类型(例如,页面呈现为浏览器中显示的图像,或者可能是将文档中的每个页面发送到打印机的Flash / Java对象直)

printWriter类为某些选项提供了一些静态变量: PrintWriter

这是另一个可能有用的 SOpost: iText禁用打印/复制/保存