赞
踩
代码如下(示例):
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
代码如下:
/** * 加密PDF文件 * * @param FilePath 要被加密的文件路径 * @param outFilePath 加密完后生成的文件路径 */ @Override public void encryptionPDF(String FilePath, String outFilePath) { //创建一个在内存中表示pdf的类 PDDocument document = null; try { //加载现有的PDF文档 File file = new File(FilePath); //实例化PDDocument document = PDDocument.load(file); //创建访问权限对象,实例化AccessPermission类 AccessPermission accessPermission = new AccessPermission(); //插入/旋转/删除页面 accessPermission.setCanAssembleDocument(false); //从文档提取内容 accessPermission.setCanExtractContent(false); //从文档中提取内容以实现可访问性。 accessPermission.setCanExtractForAccessibility(false); //修改文档 accessPermission.setCanModify(false); //打印 accessPermission.setCanPrint(false); //填写交互表单字段(包括签名字段) accessPermission.setCanFillInForm(false); //设置用户是否可以添加或修改文本注释和填写交互表单字段,如果canModify()返回true,则创建或修改交互表单字段(包括签名字段)。注意,如果canFillInForm()返回true,即使这里的参数为false,仍然可以填写交互表单(包括签名字段)。 accessPermission.setCanModifyAnnotations(false); //以降级的格式打印文档 accessPermission.setCanPrintDegraded(false); //通过传递所有者密码,用户密码和AccessPermission对象来实例化StandardProtectionPolicy类,第一个密码为执行上面八项操作需要的密码,第二个为打开文件需要的密码 StandardProtectionPolicy spp = new StandardProtectionPolicy("123456", "", accessPermission); //设置用于加密文档数据的密钥的长度(以位为单位)。默认值为40位 spp.setEncryptionKeyLength(128); //加密文档 document.protect(spp); //保存文档 document.save(outFilePath); } catch (IOException e) { e.printStackTrace(); } finally { //关闭文件 if (document != null) { try { document.close(); } catch (IOException e) { e.printStackTrace(); } } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。