手机版

教你用十行node.js代码阅读docx的文本

时间:2021-09-05 来源:互联网 编辑:宝哥软件园 浏览:

最近有一个案例。Word文档需要解析。有两个要求,一是把word文档转换成PDF,二是把word文档的内容按照一定的规范读入数据库。我去npm仓库找了大概十几个包,发现代码主要有以下几种转换方式。

通过调用底层系统程序(如office)的API进行转换;生成PDF通过模板和替换数据;通过一些免费把word转成PDF的网站,比如docx转PDF;后来,我通过尝试先把docx转换成文本,找到了一个textract包。

当然也有一些缺点,比如docx中的标题号,图片等文件。

不怕死,我决定自己做。

介绍

实际上,docx是一个zip包,然后它封装了一些xml文件。您可以直接将docx的包更改为。拉上拉链打开查看。

输入单词文件夹

里面有几个主要文件。

这是文档编号的主要内容。这是标题号和标题号样式的一些属性。这是样式列表。打开document.xml,你会发现所有的文本都用w:t标签包装。这是本文的重点

密码

首先,你需要安装一个可以通过npm查看zip文件的包:ADM-zip;

然后,写下以下代码

const fs=require(' fs ');const AdmZIp=require(' Adm-ZIp ');//引入package const zip=new AdmZip(file path)用于查看zip文件;//filePath是让内容XML=zip . readastext(' word/document . XML ')的文件路径;//将document.xml作为文本内容读取;let str=contentXml。匹配(/w:t[\s\S]*?\/w:t/ig)。forEach((item)={ str=item . slice(5,-6)});FS.writefile('。/2.txt ',str,(err)={//Replace。/2.txt,带有您希望在(err)throw err时输出的文件路径;});最近我们在用node.js分析docx的工作。先把最简单的写在上面。以后有空继续分享

最新更新

今天的测试发现,更新后的代码比源代码效率高十倍以上。

//原始代码//str=item。替换(' w:t ',' ')。替换('/w:t ',' ');//更新代码str=item.slice(5,-6)并附加测试代码

var str=' w : tsdf jpasif aefnmasd;lf asdfsdf/w :t ';var arr=[];for(var I=0;i50000I){ arr . push(str);} console . time(' replacestt ');arr . foreach((item)={ item . replace(/w :t/,' ')。替换(/\/w:t/,' ');});console . timeend(' replacestt ');//replacests : 20.560 mscon sole . time(' replacests 2 ');arr . foreach((item)={ item . replace(/\/* w :t/g ' ');});console . timeend(' replacest2 ');//replacestt 2: 14.926 msconsole . time(' replacestt 3 ');arr.forEach((项目)={ item.replace(/(^w:t)|(\/w:t$)/g,'');});console . timeend(' replacests 3 ');//replacests 3: 14.402 mscon sole . time(' slice ');arr . foreach((item)={ item . slice(5,-6);});console . timeend(' slice ');//slice: 1.718ms摘要

以上就是本文的全部内容。希望这篇文章的内容对大家学习或者使用node.js有帮助,有问题可以留言交流。

版权声明:教你用十行node.js代码阅读docx的文本是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。