使用itext创建“仅打印”PDF

时间:2012-03-09 18:19:05

标签: java pdf itext

此问题与我最近发布的另一个问题有关:Check printing with Java/JSP

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

  1. 在iText中输出PDF,以便在打开PDF时自动发生print action
  2. 在您加载此PDF的HTML页面上放置一个不可见的IFRAME,但在浏览器中看不到您的用户
  3. 当用户加载HTML页面时,PDF将加载到IFRAME中并发送给用户打印机(假设在浏览器中安装了Adobe Reader)。是的,PDF将最终出现在浏览器缓存中,但是用户必须足够聪明才能识别出这一点,然后在浏览器的缓存中搜索它。

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

答案 1 :(得分:1)

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

这是另一个可能有用的SO帖子:iText disable printing/Copying/Saving