word文档加密、只读

绪论

真是好久没写博客了。
从九月底一直就在出差,偶尔有些时间,但是也没用在正地方。
今年不知咋地,就是特别的懒,啥都不想干。

最近碰到一件事,客户给提了一个需求,要求从系统导出的word文档只读,不允许员工私自修改。(这个需求是给一个开发小姐姐提的,小姐姐人很好,所以帮个忙,但是我也没弄过,本着有问题找百度的原则,最后还是弄出来了)

相关jar包:spire.doc.free-3.9.0.jar
下载地址:http://repo.e-iceblue.com/nexus/content/groups/public/e-iceblue/spire.doc.free/

正文

import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.ProtectionType;

public class WordEncryptUtil {

	public static void encrypt(String oldPath, String newPath) {
		Document doc = new Document(oldPath);
		// doc.encrypt("123456");//设置文档打开密码
        doc.protect(ProtectionType.Allow_Only_Reading, "123456");//设置文档只读密码
        // doc.protect(ProtectionType.Allow_Only_Comments,"123456");//设置文档只允许添加批注
        // doc.protect(ProtectionType.Allow_Only_Form_Fields,"123456");//只允许表单域
        // doc.protect(ProtectionType.Allow_Only_Revisions,"123456");//只允许修订
		//保存加密后的文档
        doc.saveToFile(newPath);
        doc.dispose();
	}
	
	public static void decrypt(String oldPath, String newPath) {
		//加载带密码的文件,输入原密码并解除
        Document doc = new Document();
        doc.loadFromFile(oldPath, FileFormat.Docx_2013, "123");
        //将解密后的文档另存
        doc.saveToFile(newPath, FileFormat.Docx_2013);
	}
	
	public static void main(String[] args) {
		String oldPath = "D:\\home\\app\\1.doc";
		String newPath = "D:\\home\\app\\1_JM.doc";
		System.out.println("加密开始");
		encrypt(oldPath, newPath);
		System.out.println("加密结束");
	}
}

结果

在这里插入图片描述

注意: 最好使用最新版本的jar包,我使用2.7.3版本时出现添加权限之后,使用相同密码,出现密码不正确的情况,为此纠结了好一会(自己加密的文档自己也解不开,可能旧版本本身就存在bug,或者word加密方式变更),最终完美解决该问题。

(若有什么错误,请留言指正,3Q)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值