java - 使用 itext 创建 "print-only"PDF

标签 java pdf itext

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

我们正在寻找当前通过小程序在 Java Web 应用程序中打印支票的替代方案。似乎共识是使用 PDF 进行打印,而 itext 提供了使用 Java 进行打印的能力。

但是,在我们的特殊情况下,重要的是支票是“仅打印”的 - 用户不应该在应用程序中具有保存支票的任何能力(我知道精明的用户可以这样做PrintScreen,但我们想掩盖我们的后顾之忧,并且在应用程序中不使用 native 功能来保存支票)。

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

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

最佳答案

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

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

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

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

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

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

关于java - 使用 itext 创建 "print-only"PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9638989/

相关文章:

java - 使用 java jline 打印输出时放置输入

java - 如何使用 Java 访问内联文本文件?

PDF 规范合规性测试示例文件

java - 如何使用 Hibernate .xml 配置注入(inject) Spring Data JPA 但不使用 Spring Boot?

html - XSL-FO 生成的 PDF 中出现不需要的换行符?

c# - 我如何使用 C# 中的 itextsharp 库识别 pdf 方向是横向还是纵向

c# - iTextSharp PdfTextExtractor GetTextFromPage 抛出 NullReferenceException

c# - 在 iTextSharp 中设置表格高度

java - 如何修改 iText 中 PdfAnnotations 的大小并禁用某些选项

java - 我应该如何根据用户选择来选择实例化哪个具体实现?