Apache POI 密码保护只读word文档在WPS中无效
Apache POI 密码保护只读word文档在WPS中无效
最近项目有个要求就是从系统下载的WORD文档需要进行密码保护,防止篡改。于是很自然地想到了用POI去加入只读模式然后用密码保护:
XWPFDocument document = new XWPFDocument(inputStream);
document.enforceReadonlyProtection(RandomUtil.randomString(10),HashAlgorithm.md5);
ByteArrayOutputStream resultOs = new ByteArrayOutputStream();
document.write(outputStream);
经MS Office自测是ok的原以为到这里就结束了。知道我的测试同事用WPS打开那个docx文件然后里面的格式乱了,具体就是无边框的表格在WPS中边框显示出来了(重点没在这里我就不继续了)。好奇心驱使下我用WPS去编辑只读模式的docx文件,密码保护的提示出来了,到这里还一切正常。
直到去停止保护的时候,居然没有弹出密码输入框,直接进入编辑模式了。可是直接在MS office中打开密码保护的话在WPS中是没有问题的。
最终改变加密算法后就解决问题了:
document.enforceReadonlyProtection(RandomUtil.randomString(10),HashAlgorithm.sha512);
别问我是怎么知道的。
Apache POI 密码保护只读word文档在WPS中无效相关推荐
- linux下poi把word转图片,我需要将Apache POI图片从Word文档转换为html文件
我有一些代码使用Java Apache POI库打开一个Microsoft Word文档,并使用Apache POI将其转换为html,它还会获取文档上图像的字节数组数据.但是我需要将此信息转换为ht ...
- 【Word文档修改过程中空格下划线打印不出来问题解决】
Word文档修改过程中空格下划线打印不出来问题解决
- Word处理控件Aspose.Words功能演示:在 C# 中的 Word 文档 (DOCX/DOC) 中添加或删除水印
Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word.此 ...
- web系统中巧用word文档的html格式创建多样式的word文档,WEB系统中巧用WORD文档的HTML格式创建多样式的WORD文档...
以计算机和现代网络技术为特征的现代信息技术极大地促进了社会经济的发展,基于各行各业的WEB系统的开发与应用也越来越多. >> WEB系统中巧用WORD文档的HTML格式创建多样式的WORD ...
- 假想面试题:现在有一串字符串2, 2, 3……,其中字符串中的数字类似于Word文档中的标题级别,最终效果是让它们按照Word文档导航窗格中的标题级别格式进行展示
目录 一.问题 二.答案 1.依赖 2.代码 3.结果 4.思路分析 三.拓展 1.反向思维 2.引用数据类型 四.实战 1.背景 2.实战模拟 2.1.代码 2.2.结果 一.问题 现在有一串字符串 ...
- Word控件Spire.Doc 转换教程(十三):在word文档和HTML中嵌入图像支持
将 Word 文档转换为 HTML 很流行,并被程序员和开发人员广泛使用.借助Spire.Doc for .NET这个专业的word组件,无需安装MS Word,开发者只需两行C#关键代码即可将wor ...
- poi xwpf 转换成 html,Apache POI创建的docx文档无法转化成html
当我通过word软件创建文档的时候 FileInputStream fileInputStream = new FileInputStream(sourceFileName); //当你确定该文件可信 ...
- Java使用POI实现导出Word文档
POI官网链接:http://deepoove.com/poi-tl/(方便各位博友后期深入学习) 1.首先导入POM依赖包 <dependency><groupId>com. ...
- Java poi实现合并word文档,兼容图片合并(java实现word导出)
需求,今天有个需求,实现word文档批量导出,并附带图片,这里的批量导出是指导出一份word文档存在多分相同类型的数据. 实现方式,定义一份word文档模板,使用占位符方式来替换文本内容. 问题,怎么 ...
最新文章
- doctrine 报错处理办法: Unknown database type enum requested
- python大数据搜索_python语言-用 Python 实现一个大数据搜索引擎
- java.sql.SQLException: No value specified for parameter 1
- 关闭Bind 递归查询功能
- vue中通过post方式异步上传文件
- c++外观模式façade
- 洛谷P2462 [SDOI2007]游戏(哈希+最长路)
- 【Android】页面栈
- 揭穿现金贷的真实面目
- 计算机无法打开策略,Win10提示“无法打开此计算机上的组策略对象”如何解决...
- 梯度消失、梯度爆炸及其解决方法
- PHP 调用shell命令
- 数据结构笔记(一) 线性表(C语言描述)
- UML图---基本概念
- 19.华为笔试题整理
- Chrome 自动播放m3u8
- C语言实验课基础考点1.0
- Barsetto百胜图BAV02自助咖啡机——创新咖啡体验
- 小米有品众筹仅249!Oclean X智能触屏电动牙刷6日劲爆开抢
- 7-13 打印金字塔图案
热门文章
- linux ubuntu 18.04设置锁屏时间和用户登录超时时间
- 狗拉雪橇都听过,拉卡车的你见过吗?
- php滚动加载分页,jQuery scroll事件实现监控滚动条分页实例详解
- 关于编程语言的思考——编译型和解释型
- 微信小程序中自定义导航和地图定位
- 兰伯特莱斯利_时钟,乳胶,拜占庭将军和后量子密码:遇见令人惊叹的莱斯利·B·兰莫特
- 基于STM32 + SYN6288语音播报
- linux系统配置Vim命令,vim配置 LINUX操作系统VIM的安装和配置
- Android安卓扫名片识别内容技术SDK
- android原生自定义头像View