如何使用java代码自动填写PDF文档的密码字段?

时间:2016-10-08 13:30:47

标签: java pdf passwords itext

我正在开发一个需要密码才能访问每个下载的PDF文件的项目。密码将从数据库中获取(我正在使用MySQL)。 我已经搜索了与此类任务相关的java代码,但我几乎没有。在下载文档后,大多数答案都倾向于填写表格。 我已经考虑制作PDF文件模板,如果密码字段将被自动填充(如果我被迫使用此选项),则只显示信息,但我担心这会花费很多。 我已经阅读了Bruno Lowagie关于iToverT的背景,由Stackoverflow上的一个问题指导,但我得到的最接近的是这个片段回答了一个问题" affan"关于如何使用数据库中的外部数据自动填充PDF。 我认为这个片段用于填写已打开的PDF文档。

这是片段:

PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields form = stamper.getAcroFields();
form.setField(key, value);
stamper.setFormFlattening(true);
stamper.close();
reader.close();

有人请帮忙我如何自动填写需要密码才能访问的PDF的密码字段。

1 个答案:

答案 0 :(得分:0)

看来你混合了两件不同的东西:

  1. 表单字段,其中有一个文本字段,其中设置了特定字段标志,以便对添加的文本进行模糊处理(例如"Password"显示为{{1 }})。阅读您的要求,这是您想要的。另外:我看到您将表单展平设置为 true 并删除所有字段信息,包括将文本字段更改为密码字段的字段标志。
  2. 加密,使用一个或两个密码保护文档。
  3. 我认为你想要保护文件,但我必须承认我的假设可能是错误的。我不知道你为什么在你的问题中提到表格字段。

    如果仅使用所有者密码保护文档,则每个人都可以访问该文档,但您可以设置一些权限。这不是一个安全的解决方案,因为许多观众忽略了所有者密码;此外,删除所有者密码非常容易。

    如果使用所有者和用户密码保护文档,则只有知道所有者密码或用户密码的人才能查看该文档。文档的所有内容都是加密的(如果您希望元数据可访问,则元数据除外)。

    请阅读以下问题的答案:

    如需更详细的答案,请参阅官方网站上的常见问题解答。

    表单字段(即使在文本字段上使用密码标记)和使用加密来保护文档时,PDF规范(ISO-32000)中有两个完全独立的主题。您无法自动填写密码字段"在PDF格式中,并希望您可以使用该字段的值来打开受保护的文档。