最近,有人要求我制作一个工具,一旦我们向它提供数据,它就可以使用给定的模板自动生成.docx文件。经过一番思考,我最终选择了docxtemplater,并且确实设法生成了一个.docx文件,其核心代码如下:
var zip = new PizZip(content); //Using PizZip.js
var doc = new window.docxtemplater(zip);
var out = doc.getZip().generate({
type: "blob",
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
saveAs(out, "output.docx"); //Using FileSaver.js
但是,这还不够,我想创建多个.docx文件并将它们放入一个包含zipfile的文件中。那么,如何修改上面的代码,以便生成一个包含上面的“ output.docx”文件和另一个docx文件的.zip文件?
您可以创建多个docx并将它们添加到zip文件中:
在这里,我的示例适用于两个doc1和doc2,但对于任何数量的文档,它都可以相同的方式工作。
const doc1 = new Docxtemplater(new JSZip(content1));
const doc2 = new Docxtemplater(new JSZip(content2));
const outputZip = new PizZip();
doc1.setData({a:1}).render();
const buffer1 = doc1.getZip().generate({
type: "arraybuffer",
compression: "DEFLATE",
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
outputZip.file("output1.docx", buffer1);
doc2.setData({b:2}).render();
const buffer2 = doc2.getZip().generate({
type: "arraybuffer",
compression: "DEFLATE",
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
outputZip.file("output2.docx", buffer2);
const outputBlob = outputZip.generate({
type: "blob",
compression: "DEFLATE",
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句