前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用nodejs填充word模板

使用nodejs填充word模板

原创
作者头像
挥刀北上
修改2021-02-09 10:27:55
3.2K0
修改2021-02-09 10:27:55
举报
文章被收录于专栏:Node.js开发Node.js开发

这两天接到一个需求,需要批量生成wrod合同,合同中需要填充不同的信息,姓名,身份证号码,家庭住址,如果信息量比较少,手动填充比较快,但是合同有几百份,上面的信息不同,所以我们需要开发一个批量工具。

经过筛选最终决定使用docxtemplater这个库,这个库如何使用呢,看代码:

代码语言:javascript
复制
// 引入相关的库
var PizZip = require('pizzip');
var Docxtemplater = require('docxtemplater');
var fs = require('fs');
var path = require('path');
// 读取文件,以二进制文件形式保存
var content = fs.readFileSync(path.resolve(__dirname, 'simple.docx'), 'binary');
// 压缩数据
var zip = new PizZip(content);
// 生成模板文档
var doc =new Docxtemplater(zip);
// 设置填充数据
doc.setData({
    first_name: 'John',
    last_name: 'Doe',
    phone: '0652455478',
    description: 'New Website'
});
//渲染数据生成文档
doc.render()
// 将文档转换文nodejs能使用的buf
var buf = doc.getZip().generate({ type: 'nodebuffer' });
// 输出文件
fs.writeFileSync(path.resolve(__dirname, 'output.docx'), buf);

阅读源码,发现使用docxtemplater需要如下几个步骤:

1、引入相关的库

2、以二进制的形式读取word文档

3、将二进制信息进行压缩

4、调用Docxtemplater函数传入压缩数据生成模板文档doc

5、调用文档的setData函数填充数据

6、文档调用render函数生成word

7、调用doc文档的相关函数生成nodejs可以操作的buffer文件

8、将buffer数据输出到目标文件。

这个操作是在nodejs端完成的,还有另外一个版本,可以在浏览器端完成,下篇文章再来讨论,上面的代码除了用到了docxtemplate还用到了pizzip库,这个库的作用是将二进制数据转化为zip压缩格式数据的一个库,再用Docxtemplate函数生成文档时需要传入zip压缩格式的数据,这里需要格外注意,官网文档也是这样做的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档