最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你用十行node.js代碼讀取docx的文本

 更新時(shí)間:2017年03月08日 10:52:03   作者:aliyu  
這篇文章主要給大家介紹了用十行node.js代碼讀取docx文本的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。

前言

最近有一個(gè)case。需要去解析word文檔。有兩個(gè)需求,一個(gè)是將word文檔轉(zhuǎn)成PDF,一個(gè)是將word文檔中的內(nèi)容按照一定的規(guī)范讀取到數(shù)據(jù)庫(kù)中,去npm倉(cāng)庫(kù)找了大概有十幾個(gè)包,發(fā)現(xiàn)主要是通過以下的方式來轉(zhuǎn)換代碼。

  1. 通過調(diào)用系統(tǒng)底層程序(比如說office)的API來轉(zhuǎn)換;
  2. 通過模板,替換數(shù)據(jù)來實(shí)現(xiàn)生成PDF;
  3. 通過有些免費(fèi)將word轉(zhuǎn)成PDF的網(wǎng)站來實(shí)現(xiàn)將word轉(zhuǎn)成PDF,比如docx-to-pdf;

后來退而求其次,想通過先將docx轉(zhuǎn)成文字,發(fā)現(xiàn)了個(gè)textract的包。

當(dāng)然也有缺點(diǎn),不支持docx中的標(biāo)題號(hào),不支持圖片等文件。

不怕死的我決定自己干這件事情。

介紹

其實(shí)docx就是一個(gè)zip包,然后封裝了一些xml文件??梢灾苯訉ocx的包改后綴為.zip來打開觀看。

進(jìn)入word文件夾


里面有幾個(gè)主要的文件。

  1. document.xml 這個(gè)就是文檔的主要內(nèi)容
  2. numbering.xml 這個(gè)就是標(biāo)題號(hào),以及標(biāo)題號(hào)的一些屬性
  3. styles.xml 這個(gè)就是樣式列表

打開document.xml 你就會(huì)發(fā)現(xiàn),所有的文本都是用 <w:t>標(biāo)簽包著的。這個(gè)就是本文的關(guān)鍵

代碼

首先,需要通過npm安裝一個(gè)能查看zip文件的包:adm-zip;

然后,寫下下列代碼即可

const fs = require("fs");
const AdmZip = require('adm-zip'); //引入查看zip文件的包
const zip = new AdmZip(filePath); //filePath為文件路徑
let contentXml = zip.readAsText("word/document.xml");//將document.xml讀取為text內(nèi)容;
let str = "";
contentXml .match(/<w:t>[\s\S]*?<\/w:t>/ig).forEach((item)=>{
str += item.slice(5,-6)});
fs.writeFile("./2.txt",str,(err)=>{//將./2.txt替換為你要輸出的文件路徑
if(err)throw err;
});

最近正在用node.js去解析docx的工作。先將最簡(jiǎn)單的寫在上面?;仡^有空再繼續(xù)分享

最新更新

之前隨手寫的代碼,今天測(cè)試發(fā)現(xiàn)用更新后的代碼比源代碼的效率提升十倍以上。

//原代碼
//str += item.replace("<w:t>","").replace("</w:t>","");
//更新代碼
str += item.slice(5,-6)

附上測(cè)試代碼

var str = "<w:t>sdfjpasif aefnmasd;lf asdfsdf</w:t>";
var arr = [];
for(var i=0;i<50000;i++){
 arr.push(str);
}
console.time("replactest");
arr.forEach((item)=>{
 item.replace(/<w:t>/,"").replace(/<\/w:t>/,"");
});
console.timeEnd("replactest");
//replactest: 20.560ms

console.time("replactest2");
arr.forEach((item)=>{
 item.replace(/<\/*w:t>/g,"");
});
console.timeEnd("replactest2");
//replactest2: 14.926ms

console.time("replactest3");
arr.forEach((item)=>{
 item.replace(/(^<w:t>)|(<\/w:t>$)/g,"");
});
console.timeEnd("replactest3");
//replactest3: 14.402ms

console.time("slice");
arr.forEach((item)=>{
 item.slice(5,-6);
});
console.timeEnd("slice");
//slice: 1.718ms

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家學(xué)習(xí)或者使用node.js能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • node.js中的事件處理機(jī)制詳解

    node.js中的事件處理機(jī)制詳解

    相信接觸過編程的同學(xué)應(yīng)該都了解,在訪問任何網(wǎng)頁(yè)的時(shí)候,會(huì)伴隨著許多的事件,例如點(diǎn)擊菜單,移動(dòng)鼠標(biāo)等等。那么node.js是如何處理的?下面通過這篇文章就來給大家詳細(xì)的介紹下node.js中的事件處理機(jī)制,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11
  • node文件批量重命名的方法示例

    node文件批量重命名的方法示例

    本篇文章主要介紹了node文件批量重命名的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 安裝Node.js并啟動(dòng)本地服務(wù)的操作教程

    安裝Node.js并啟動(dòng)本地服務(wù)的操作教程

    今天小編就為大家分享一篇安裝Node.js并啟動(dòng)本地服務(wù)的操作教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • express結(jié)合nodejs開啟服務(wù)示例模版

    express結(jié)合nodejs開啟服務(wù)示例模版

    這篇文章主要為大家展現(xiàn)了express結(jié)合nodejs開啟服務(wù)的代碼示例模版,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Node.js學(xué)習(xí)教程之Module模塊

    Node.js學(xué)習(xí)教程之Module模塊

    這篇文章主要給大家介紹了關(guān)于Node.js學(xué)習(xí)教程之Module模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • npm安裝慢的問題分析及解決方法

    npm安裝慢的問題分析及解決方法

    在Node.js開發(fā)過程中,npm install 是安裝和管理項(xiàng)目依賴的關(guān)鍵命令,然而,有時(shí)我們會(huì)遇到 npm install 運(yùn)行卡住不動(dòng)的情況,所以本文給大家介紹了npm安裝慢的問題分析及解決方法,需要的朋友可以參考下
    2025-03-03
  • Node.js中的緩沖與流模塊詳細(xì)介紹

    Node.js中的緩沖與流模塊詳細(xì)介紹

    這篇文章主要介紹了Node.js中的緩沖與流模塊詳細(xì)介紹,本文講解了緩沖(buffer)模塊、類:Buffer、寫入緩沖區(qū)、復(fù)制緩沖區(qū)、流模塊等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐

    Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐

    本文主要介紹了Node.js前后端交互實(shí)現(xiàn)用戶登陸的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Node.js connect ECONNREFUSED錯(cuò)誤解決辦法

    Node.js connect ECONNREFUSED錯(cuò)誤解決辦法

    這篇文章主要介紹了Node.js connect ECONNREFUSED錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • node安裝--linux下的快速安裝教程

    node安裝--linux下的快速安裝教程

    本篇文章主要介紹了node安裝--linux下的快速安裝教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03

最新評(píng)論

东辽县| 清远市| 林甸县| 罗山县| 吉木萨尔县| 保康县| 乐昌市| 获嘉县| 加查县| 景泰县| 辽阳市| 临安市| 无为县| 信阳市| 博兴县| 肇州县| 徐水县| 二手房| 九寨沟县| 开阳县| 安阳市| 大洼县| 连南| 喜德县| 启东市| 二连浩特市| 绥芬河市| 门源| 电白县| 集贤县| 易门县| 巨野县| 古浪县| 高邮市| 隆尧县| 太康县| 平泉县| 沾化县| 岚皋县| 洞头县| 武冈市|