场景:合同模板、协议模板自动填充内容,并生成word

使用到的库

  • docx-templates 将docx模板填充内容
  • dayjs 保存文件时生成时间目录
  • string-random 随机文件名

原理:读取模板docx,通过docx-templates填充内容,上传到云开发,最后返回云存储文件id给用户

const {
	createReport
} = require('docx-templates')
const fs = require('fs');
const path = require('path')

const template = fs.readFileSync(path.join(__dirname, 'verify_company.docx'))//读取文件

const buffer = await createReport({
	template,
	data: {
		//变量
		no: '123',
		creator: 'Appleseed',
	},
	cmdDelimiter: ['{', '}']//以{}作为变量分隔符
})
		
const dayjs = require('../../extend/dayjs');
const preDir = dayjs().format("YY/MM/DD");//日期
const stringRandom = require('string-random')
const randfilename = stringRandom(32)//随机文件名
const cloudPath = `verify/docx/${preDir}/${randfilename}.docx`//文件
return await cloud.uploadFile({
	cloudPath,
	fileContent: Buffer.from(buffer, 'hex')
})

word模板
在这里插入图片描述

最后生成的文件
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐