使用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);

