【问题标题】:Create a "print-only" PDF with itext使用 itext 创建“仅打印”PDF
【发布时间】:2012-03-09 18:19:04
【问题描述】:

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

我们正在寻找替代方法来替代我们目前通过小程序在 Java Web 应用程序中打印支票的方式。似乎共识是使用 PDF 进行打印,并且 itext 提供了使用 Java 这样做的能力。

然而,在我们的特殊情况下,重要的是支票是“仅打印”的 - 用户不应该在应用程序中保存支票(我知道精明的用户可以这样做一个 PrintScreen,但我们想覆盖我们的后部,并且在应用程序中不使用原生功能来保存支票)。

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

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

【问题讨论】:

    标签: java pdf itext


    【解决方案1】:

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

    如果使用传统方式(例如 Adob​​e Reader)打印 PDF,则 PDF必须下载到浏览器的缓存中才能打开和打印。没有办法解决这个问题。

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

    1. 在 iText 中输出 PDF,这样当打开 PDF 时,print action 会自动出现
    2. 在加载此 PDF 的 HTML 页面上放置一个不可见的 IFRAME,但在浏览器中对您的用户不可见

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

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

    【讨论】:

    • 嗨 - 感谢您的回答 - 我遇到的一个问题是 PDF 打印对话框的速度非常慢,即使我有一个简单的“Hello, World”PDF。关于如何加快速度的任何想法?
    【解决方案2】:

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

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

    【讨论】:

    • 你应该小心,从 iText 5 开始,它不再免费用于商业支持,但我想你已经知道了。
    • 谢谢汤姆-我之前看过那篇文章,似乎在实现该方法时,它只会强制用户提供密码来执行这些功能,对吗?我想我可以试试看,看看自己......
    • 另外,关于您对商业支持的评论 - 此应用程序位于 Intranet 内,不会产生收入 - 它只是由公司的用户用于执行管理任务 - 这听起来像它符合“非商业性”的条件吗?对我来说,“商业”意味着应用程序会赚钱,但不会发生在这个应用程序中。
    • 我根本不是一个图层,所以我无法就此向您提供建议。如有疑问,请使用 iText 2(这仍然是免费的),这就是我们所做的。
    • 商业企业中的管理任务是对创收任务的支持活动。它们都是商业活动,恕我直言(我也不是律师)。
    猜你喜欢
    • 2011-06-04
    • 2012-11-03
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    相关资源
    最近更新 更多