资源id冲突处理
word07之后为xml,对于公式和图片word存储的是external资源:
公式为bin文件,同时存储一份图片,如果公式损坏,或者word无法解析bin文件,则word展示的就只是一个图片
图片存储的是wmf,或者png
每个图片、公式都有一个唯一的编码,xml中引用这些资源的编码
Docx其实就是一个压缩包,将这些图片、bin、xml打包。
所以多个文件合并,会出现不同word中的资源id如果有一样的,则生成的压缩包docx,打开之后会报错,因为同一个资源id对应两个资源,需要对资源重新编号,包括资源id和图片名称。
通过解析xml文件,对要合并的word文件涉及的资源id和资源名称,统一进行重新编码,解决冲突问题。
Docx4j本身是半开源的,word的拆分合并是收费服务,通过我们自己去解析,重新编码也能够做到拆分合并。
网友评论