## 背景说明 最近参与了一个档案管理系统,使用java开发,部署在centos,其中的一个功能需要获取到word文件准确的页码,现在将尝试过的方法汇总如下:
- Java Apache POI
- C# Microsoft.Office.Interop.Word.Application
- Python oletools (只支持doc)
- Python zipfile xml.etree.ElementTree (只支持docx)
Apache POI
由于系统是java开发的,所以首先尝试了poi,但是获取的页码不准确,所以这个方案放弃掉了。poi操作word的例子很多,这里就不上示例代码了。
C# Microsoft.Office.Interop.Word.Application
这种方法是能运行在windows上,直接上代码
public
这个方法需要使用做成dll,通过jni调用,将结果传给java。这个方法运行了一段时间后,运维反应还是有页数不对的,于是有了下一个方法。
Python oletools
上一个方法,由于C# Microsoft.Office.Interop.Word.Application只能在windows使用,所以还特意配了一台windows服务器,而使用oletools则可以运行在linux。 word文件本质上是一个ole文件,所以可以使用oletools工具包中的一个工具olemeta将信息读取到,meta是指word文件的元属性,如图