工作中遇到一个需求:写个nodejs脚本,对word文档(1000+个)的目录页面进行美化。实现过程遇到不少麻烦,在此分享下。
整体思路
众所周知,Docx格式的Word文档其实是个以xml文件为主的zip压缩包,所以,页面美化整体思路是:先将文档后缀名改为zip并解压到本地,然后将关键的XML文档解析为DOM树,再通过DOM操作对文档进行编辑,最后把修改好的内容替换到原文件中,打包好并恢复后缀名。
其中,难点在于“文档编辑”,网上基本搜不到有用的资料,只能自行摸索,主要用到的依赖包为 cheerio,作用是用DOM的方式加载和操作XML文档,函数方法类似jQuery。(解压打包等常规操作,下文忽略)
一、定位目录内容
将Word文档解压后,内部一般会包含上百个文件,其中,文档的文本内容均位于“word/document.xml”中;
// 加载XML文档DOM树
let $ = cheerio.load(fs.readFileSync(path.join(解压后的文件夹,'word/document.xml')), {normalizeWhitespace: false,xmlMode: true,decode