目的
无模板 读取word中有图片、复杂表格、文字、目录、公式、word作图等
参考链接
项目难点
读取过度读取格式或过少读取带有特殊格式的word文字
有很多很多代表具体格式的小方格
表格中的换行不能正确处理
表格中的换行会被真实转为为txt文档中的换行(见图一)
猜测阅读源码并有一定理解之后可以自己进行换行的转换
word中的画图、公式不能正确处理
word中的所有格式包括页眉页脚中的图片以及公式会被自动储存为图片
图片位置以及画图
正确识别图片位置:先转化为docx,之后参考https://www.cnblogs.com/ct-csu/p/8178932.html
word中的画图表示 参考https://blog.csdn.net/weixin_44396516/article/details/96836400
word中画图表示思路: 将doc转换为docx 将docx使用openoffice/iText转换为pdf,使用pdfbox转换为图片
公式
word中公式https://blog.csdn.net/qq_18219457/article/details/98963136
word doc直接转化的话包括目录在内的部分有格式文字被解析为乱码,因此使用docx poi直接将公式转换为图片,但是因此图片的位置、名称不确定(公式下并不会标注 图片+数字+图片名称)
尝试过的poi中方法不适用
不能正确解析
不能正确处理页眉页脚中的图片和背景图片
全部储存为图片导致图片位置不确定
不能解决续中间的转换,最后变为txt文档
我们知道续中间的部分是为了美观进行分割,但是只能死板读取。
解决方法一
1.尝试所有能找得到的poi方法,阅读源码
暂时没有成功
2.将doc转换为docx进行处理 遇到目录的时候进行替换
参考博客:https://my.oschina.net/u/3410302/blog/3048367
核心代码
CTSimpleField ctSimpleField = paragraph.getCTP().addNewFldSimple();
ctSimpleField.setInstr(fieldName);
ctSimpleField.setDirty(STOnOff.TRUE);
放弃
直接将doc转换为docx成功