使用Java中的PDFBox进行密码保护的PDF
时间:2020-01-09 10:35:35 来源:igfitidea点击:
在本文中,我们将介绍如何使用PDFBox库以Java密码保护PDF,以及如何使用PDFBox打开加密的PDF。
要了解有关使用PDFBox的Java中的PDFBox库和PDF示例的更多信息,请查看本文。使用PDFBox教程在Java中生成PDF。
使用PDFBox进行密码保护的PDF
为了使用PDFBox加密PDF,使用了两个类
1AccessPermission –此类表示对文档的访问权限,其中包括以下权限
- 打印文件
- 修改文件内容
- 复制或者提取文档内容
- 添加或者修改注释
- 填写交互式表格字段
- 提取文本和图形以方便视障人士使用
- 组装文件
- 以低质量打印
2StandardProtectionPolicy –此类表示要添加到文档中以基于密码的保护的保护策略。此类的构造方法将AccessPermission类对象,所有者密码和用户密码作为参数。
PDF加密所需的两个密码是
- 用户密码–打开和查看具有受限权限的文件。
- 所有者密码-拥有所有权限才能访问文件。
使用PDFBox Java程序加密的PDF
在此示例中,现有的PDF被加载并加密。
import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.encryption.AccessPermission; import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy; public class PasswordProtected { public static final String ENCRYPTED_PDF = "F://theitroad//result//PDFBox//Content.pdf"; // User and owner password final static String USER_PASSWORD = "user"; final static String OWNER_PASSWORD = "owner"; public static void main(String[] args) { try { //load an existing PDF PDDocument document = PDDocument.load(new File(ENCRYPTED_PDF)); AccessPermission ap = new AccessPermission(); /** Setting access permissions */ // Printing not allowed ap.setCanPrint(false); // Copying not allowed ap.setCanExtractContent(false); StandardProtectionPolicy standardPP = new StandardProtectionPolicy(OWNER_PASSWORD, USER_PASSWORD, ap); standardPP.setEncryptionKeyLength(128); document.protect(standardPP); document.save(ENCRYPTED_PDF); document.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
使用PDFBox Java程序打开加密的PDF
如果要打开使用PDFBox进行密码保护的PDF,则可以使用PDDocument类的load方法并传递解密所需的密码。
PDDocument document = PDDocument.load(new File(ENCRYPTED_PDF), OWNER_PASSWORD);