场景:合同模板、协议模板自动填充内容,并生成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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐