我正在开发一个需要密码才能访问每个下载的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的密码字段。
答案 0 :(得分:0)
看来你混合了两件不同的东西:
"Password"
显示为{{1 }})。阅读您的要求,这是不您想要的。另外:我看到您将表单展平设置为 true 并删除所有字段信息,包括将文本字段更改为密码字段的字段标志。我认为你想要保护文件,但我必须承认我的假设可能是错误的。我不知道你为什么在你的问题中提到表格字段。
如果仅使用所有者密码保护文档,则每个人都可以访问该文档,但您可以设置一些权限。这不是一个安全的解决方案,因为许多观众忽略了所有者密码;此外,删除所有者密码非常容易。
如果使用所有者和用户密码保护文档,则只有知道所有者密码或用户密码的人才能查看该文档。文档的所有内容都是加密的(如果您希望元数据可访问,则元数据除外)。
请阅读以下问题的答案:
如需更详细的答案,请参阅官方网站上的常见问题解答。
表单字段(即使在文本字段上使用密码标记)和使用加密来保护文档时,PDF规范(ISO-32000)中有两个完全独立的主题。您无法自动填写密码字段"在PDF格式中,并希望您可以使用该字段的值来打开受保护的文档。