将docx文档转换为html , 并自动解析生成锚点菜单

zl-docx2html --- docx文档转换为网页

此模块主要功能

docx2html:将单个 docx文档/maekdown文档 转换为html网页文件,node环境可用 batchDocx2html:将批量 docx文档/maekdown文档 转换为html网页文件,node环境可用 addMenu2Page:解析html字符串,自动生成导航锚点菜单,node环境可用 utils:开发过程中产生的一些工具函数 Md2Html, //将md文档转换为html字符串 addHtmlTag, //给html主体内容字符串包裹html,head,body标签 createEndMenuTempla,//返回要固定定位的菜单容器字符串 numberToChinese,//将阿拉伯数字转换成中文的大写数字 numToEng0_26,//通过ASCII码的方式将1-26转换为字母a-z(可大写可小写) numToEng,//将数字转换为英文字母,大于26的数字也可以,并可控制大写和小写 resolveHtmlPageMenu,//传入能获取所有页面元素的$对象,从中获取由h1---h6组合成的树结构(你应该使用cheerio,适用于nodejs环境) 安装

npm i zl-docx2html -S 引入与使用

const { batchDocx2html, docx2html ,util } = require("zl-docx2html"); // 批量转换docx文档为html(也可转换Markdown) batchDocx2html({ dirPath: "./doctest", outPath:"./HTML", showWarnMessage: false, showExeResult:false }); // 转换单个docx文档为html(也可转换Markdown) const path = require("path"); let { docx2html } = require("zl-docx2html"); let fileName = "666.docx"; let docxPath = path.join(path.resolve("."), fileName); //通过path.join可以解决mac和window路径规则不一致的情况 let outPath = path.join(path.resolve("."), "/aa/bb/cc/dd/", fileName.split(".")[0]+".html"); (async function () { await docx2html({ docxPath: docxPath, outPath: outPath, showWarnMessage: false, }) })() 提示: 1. 转换md文档时,会将md文档所在目录下的 [assets]目录 或 [文件名_imgs] 目录 静态文件夹 2. 所以 整体写入到新生成的html所在位置,所以md文档中img路径需要为相对路径, 3. 你的静态资源目录应该是文档同级目录下的 assets 或 文件名_imgs 目录 效果演示

https://www.blogzl.com

主要方法说明

addMenu2Page, //如果已有html字符串 就可以调用这个函数 docx2html, //如果要从docx文档转换为含有菜单的html页面 就可以调用这个函数 batchDocx2html,//传入一个目录路径,将此路径下的所有docx文件批量转换为html文件(不管层级有多深) -------------------------------addMenu2Page---------------------------------------------- /** * @description 接收一个html字页面符串--给标题注入id-->得到tree菜单结构---》生成菜单模板--》注入到页面内容并返回 * @param {Object} parObj 完整的参数对象信息 * @param {String} parObj.html 要处理的html字符串 * @param {String} parObj.fileName 生成的html文件名(如果存在html,head,外层的标签的话) * @param {Object} other 接收其他信息的对象 * @param {Boolean} other.isAddHtmlHead 是否不给转换后的文档添加html,body等标签,默认为true * @param {Boolean} other.isAddMenu 是否给转换后的html文件注入锚点菜单,默认为true * @param {Boolean} other.isAddOrder 是否添加手动生成的序号,默认为true * @author zl-fire 2021/09/01 * @example * let html = addMenu2Page(html, fileName); */ export function addMenu2Page(html: any, fileName?: string, other?: { isAddHtmlHead: boolean; isAddMenu: boolean; isAddOrder: boolean; }): any; -------------------------------batchDocx2html---------------------------------------------- /** * @description 传入一个目录路径,将此路径下的所有docx文件批量转换为html文件(不管层级有多深) * @param {Object} parObj 完整的参数对象信息 * @param {String} parObj.dirPath 要处理目录路径,可传入绝对路径,也可传入相对路径 * @param {String} parObj.outPath 要输出的html文档路径 * @param {Boolean} parObj.isAddHtmlHead 是否给转换后的文档添加html,body等标签 * @param {Boolean} parObj.isAddMenu 是否给转换后的html文件注入锚点菜单 * @param {Boolean} parObj.autoHsSty 是否添加手动注入的h1--h6的大小样式 * @param {Boolean} parObj.isAddOrder 是否添加手动生成的序号 * @param {Boolean} parObj.isAddpagePadV 是否给页面注入默认的padding值 * @param {String} parObj.manualAssignment 用户手动注入的样式对象字符串:·<style>...</style>· * @param {Boolean} parObj.showWarnMessage 是否显示docx文档转换为html时的警告信息(如果有的话),默认显示 * @param {Boolean} parObj.showExeResult 创建html文件时,是否要显示提示信息 * @param {Boolean} parObj.isList2file 要转换的的文件树结构是否要写入文件 * @param {Boolean} parObj.list2filePath 要转换的的文件树结构要写入文件时的文件路径 * @param {Boolean} parObj.imgTobase64 是否将docx文档中的图片转换为base64,默认false,不转换 * * @author zl-fire 2021/09/01 * @example * * let { batchDocx2html } = require("zl-docx2html"); * batchDocx2html({ * dirPath: "./", * outPath:"./HTML", * showWarnMessage: false, * }); * */ export function batchDocx2html(parObj: { dirPath: string; outPath: string; isAddHtmlHead: boolean; isAddMenu: boolean; autoHsSty: boolean; isAddOrder: boolean; isAddpagePadV: boolean; manualAssignment: boolean; showWarnMessage: boolean; showExeResult: boolean; isList2file: boolean; list2filePath: boolean; imgTobase64: string; }): Promise<void>; -------------------------------docx2html---------------------------------------------- /** * @function 传入docx类型文档,会解析成html,同时给这个html注入菜单,最后写入指定的路径 * @description 这是个异步函数,因为调用转换docx的内置模块时是异步的 * @param {Object} parObj 完整的参数对象信息 * @param {String} parObj.docxPath 要处理的docx文档路径 * @param {String} parObj.outPath 要输出的html文档路径,默认为当前docx文件所在目录 * @param {Boolean} parObj.isAddHtmlHead 是否给转换后的文档添加html,body等标签 * @param {Boolean} parObj.isAddMenu 是否给转换后的html文件注入锚点菜单 * @param {Boolean} parObj.autoHsSty 是否添加手动注入的h1--h6的大小样式 * @param {Boolean} parObj.isAddOrder 是否添加手动生成的序号 * @param {Boolean} parObj.isAddpagePadV 是否给页面注入默认的padding值 * @param {String} parObj.manualAssignment 用户手动注入的样式对象字符串:·<style>...</style>· * @param {Boolean} parObj.showWarnMessage 是否显示docx文档转换为html时的警告信息(如果有的话),默认显示 * @param {Boolean} parObj.showExeResult 创建html文件时,是否要显示提示信息 * @param {Boolean} parObj.imgTobase64 是否将docx文档中的图片转换为base64,默认false,不转换 * @author zl-fire 2021/09/01 * @example * var path = require("path"); * let { docx2html } = require("zl-docx2html"); * let fileName = "666.docx"; * let docxPath = path.join(path.resolve("."), fileName); //通过path.join可以解决mac和window路径规则不一致的情况 * let outPath = path.join(path.resolve("."), "/aa/bb/cc/dd/", fileName.split(".")[0]+".html"); * (async function () { * await docx2html({ * docxPath: docxPath, * outPath: outPath, * showWarnMessage: false, * }) * })() */ export function docx2html(parObj: { docxPath: string; outPath: string; isAddHtmlHead: boolean; isAddMenu: boolean; autoHsSty: boolean; isAddOrder: boolean; isAddpagePadV: boolean; manualAssignment: boolean; showWarnMessage: boolean; showExeResult: boolean; imgTobase64: string; }): Promise<void>; export namespace utils { export { addHtmlTag }; export { createEndMenuTempla }; export { numberToChinese }; export { numToEng }; export { numToEng0_26 }; export { resolveHtmlPageMenu }; } export var __esModule: boolean; 工具方法说明

const { util } = require("zl-docx2html"); let {addHtmlTag,createEndMenuTempla,numberToChinese,numToEng,numToEng0_26,resolveHtmlPageMenu} = util; addHtmlTag, //给html主体内容字符串包裹html,head,body标签 createEndMenuTempla,//返回要固定定位的菜单容器字符串 numberToChinese,//将阿拉伯数字转换成中文的大写数字 numToEng,//将数字转换为英文字母,大于26的数字也可以,并可控制大写和小写 numToEng0_26,//通过ASCII码的方式将1-26转换为字母a-z(可大写可小写) resolveHtmlPageMenu,//传入能获取所有页面元素的$对象,从中获取由h1---h6组合成的树结构 -------------------------------addHtmlTag---------------------------------------------- /** * @description 如果内容没有外层的html,body包裹,则可使用此函数进行处理 * @param {string} content 要处理的html字符串 * @param {string} fileName html字符串的名字 * @author zl-fire 2021/09/01 * @return {string} 包裹了html,body的最终的字符串 */ declare function addHtmlTag(content: string, fileName: string): string; -------------------------------createEndMenuTempla-------------------------------------- /** * @description 返回要创建固定定位的菜单容器字符串(固定格式),包含了html+css+js, 接收一个具体的菜单内容作为参数 * @param {string} realMenu 菜单html字符串 * @author zl-fire 2021/09/01 * @return {string} 生成的最终的包含了样式和js逻辑的菜单字符串 */ declare function createEndMenuTempla(realMenu: string): string; -------------------------------numberToChinese-------------------------------------- /** * @description 将阿拉伯数字转换成中文的大写数字 * @param {number} num 要转换的阿拉伯数字 * @author zl-fire 2021/09/01 * @return {string} 中文的大写数字字符串 * @example * let n=numberToChinese(12);//返回'十二' */ declare function numberToChinese(num: number): string; -------------------------------numToEng-------------------------------------- /** * @description 将数字转换为英文字母,大于26的数字也可以,并可控制大写和小写 * @param {number} i 要转换的阿拉伯数字 * @param {boolean} big true:大写,false|不传:为小写 * @author zl-fire 2021/09/01 * @return {string} a-z英文字母 * @example * let n=numToEng(1);//返回'a' */ declare function numToEng(i: number, big: boolean): string; -------------------------------numToEng0_26-------------------------------------- /** * @description 通过ASCII码的方式将1-26转换为字母a-z(可大写可小写) * @param {number} num 要转换的阿拉伯数字1-26 * @param {boolean} big true:大写,false|不传:为小写 * @author zl-fire 2021/09/01 * @return {string} 英文字母a-zA-Z * @example * let n=numToEng0_26(1);//返回'a' */ declare function numToEng0_26(num: number, big: boolean): string; -------------------------------resolveHtmlPageMenu-------------------------------------- /** * @description 传入能获取所有页面元素的$对象,从中获取由h1---h6组合成的树结构 * @param {object} $ 能获取所有页面元素的$对象,这里使用的cheerio * @author zl-fire 2021/09/01 * @return {object[]} json树结构 */ declare function resolveHtmlPageMenu($: object): object[];

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。