当前位置: 首页 > 后端技术 > Node.js

Node使用第三方api生成word文档修改源码实现需求

时间:2023-04-03 22:40:03 Node.js

使用officegen第三方api实现word文档生成,发现下划线无法满足需求。修改源码,让后人踩坑。下面是我的一个demo,通过传参设置下划线颜色和高度。本demo是通过json配置和api调用实现的。git示例参考GITHUBApi地址:https://github.com/Ziv-Barber/officegenvarofficegen=require('officegen');varfs=require('fs');varpath=require('path');vardocx=officegen('docx');varheader=docx.getHeader().createP({align:('center')});console.log('路径是'+__dirname);vartable=[[{val:'No.',opts:{cellColWidth:4261,b:true,sz:'48',shd:{fill:'7F7F7F',themeFill:'text1',themeFillTint:'80'},fontFamily:'AvenirBook'}},{val:'Title1',opts:{b:true,color:'A00000',align:'right',shd:{fill:'92CDDC',themeFill:'text1',themeFillTint:'80'}}},{val:'Title2',opts:{align:'center',cellColWidth:42,b:true,sz:'48',shd:{fill:'92CDDC',themeFill:'text1',themeFillTint:'80'}}}],[1,'所有的大人都曾经是孩子',''],[2,'把一件工作推迟到另一天没有坏处。',''],[3,'但是当它是猴面包树的问题时,那总是意味着一场灾难。',''],[4,'当心猴面包树!','END']]vartableStyle={tableColWidth:4261,tableSize:24,tableColor:'ada',tableAlign:'left',tableFontFamily:'ComicSansMS'}vardata=[[{align:'right'},{type:'text',val:'Simple'},{type:'text',val:'withcolor',opt:{颜色:'000088'}},{type:'text',val:'和背景色。',opt:{color:'00ffff',back:'000088'}},{type:'linebreak'},{type:'text',val:'Bold+underline',选择:{bold:true,underline:true}}],{type:'horizo??ntalline',opt:{height:"2",fillcolor:'FF0000'}},[{type:'text',val:'backlinetext1.',opt:{bold:true}},{type:'text',val:'backlinetext2.',opt:{color:'000088'}}],{type:'text',val:'Leftthistext.',lopt:{align:'left'}},{type:'text',val:'居中文本',lopt:{align:'center'}},{type:'text',val:'Rightthistext.',lopt:{align:'right'}},{type:'text',val:'Fontsfaceonly.',opt:{font_face:'Arial'}}复制代码,{type:'text',val:'Fontsfaceandsize.',opt:{font_face:'Arial',font_size:40}},{type:'table',val:table,opt:tableStyle},{type:'pagebreak'},[{},{type:'numlist'},{type:'text',val:'numList1.'},{type:'numlist'},{type:'text',val:'numList2.'}],[{},{type:'dotlist'},{type:'text',val:'dotlist1.'},{type:'dotlist'},{type:'text',val:'dotlist2.'}],{type:'pagebreak'}]docx.createByJson(data)//varpObj=docx.createTable(table,tableStyle);varout=fs.createWriteStream('out.docx');//文件写入out.on('error',function(err){console.log(err);});varresult=docx.generate(out);找到源码修改修改代码部分如下:gendocx.js部分elseif(objs_list[i].data[j].horizo??ntal_line){console.log(objs_list[i].data[j]);varheight=typeofobjs_list[i].data[j].options.height=="string"?objs_list[i].data[j].options.height:".75";varfillcolor=typeofobjs_list[i].data[j].options.fillcolor=="string"?objs_list[i].data[j].options.fillcolor:"e0e0e0";//outString+=``;outString+=``;//书签启动支持:}docx-p.jssectionMakeDocxP.prototype.addHorizo??ntalLine=function(opt){varnewP=this;newP.data[newP.data.length]={'horizo??ntal_line':true,options:opt||{}};};修改一下,传参设置下线的颜色和高度,最后附上效果图: