nodejs实现一个词文档解析器思路详解

  

之前项目里遇到一个需求,需要前端上传一个词文档,然后后端提取出该文档的指定位置的内容并保存。这里后端用的是nodejs,开始接到这个需求,发现无从下手,主要是没有处理过词这种类型的文档,怎么解析& # 63;Excel倒是有相关的库可以用,而且很简单

  

  

搜索了好一会儿,在npm上发现了一个叫做adm-zip的包,这个包可以解压缩词文档,原来词文档也是可以解压缩的,之前一直不知道,通过如下代码就可以将词文档解压缩,并进一步提取内容

        var admZip=要求(“adm-zip”);   const邮政=new admZip (“test.docx”);//将该多克斯解压到指定文件夹下结果   zip.extractAllTo (”。/结果”,/*覆盖*/真);      

首先我们新建一个多克斯文档,内容如下

  

 nodejs实现一个词文档解析器思路详解”>,</p>
  <p>然后运行上述代码进行解压缩,得到如下的文件,由下图可以看出生成了好几个文件夹,词的内容其实是在词文件夹里的document.xml文件内(这里解压缩后其实源文件还在,并没有消失)</p>
  <p> <img src=   var contentXml=zip.readAsText(“词/document.xml”);      

接下来是重点,如何提取我们想要的内容呢,答案是正则表达式,首先我们得分析一下词文档的结构,词文档其实是由叫做段落的段落所构成,在vb中可以很轻松的获取并修改段落,官网传送门点此

  

 nodejs实现一个词文档解析器思路详解”>,<br/>
  </p>
  <p>那么到底怎么样才是一个段落呢,其实很简单,仔细观察字文档,见到下图中的小箭头了么,每个小箭头前面的内容就是一个段落,那么下图中一共有16个段落,当然有些段落是空的,没有任何内容</p>
  <p> <img src=nodejs实现一个词文档解析器思路详解