1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
const PizZip = require("pizzip"); const Docxtemplater = require("docxtemplater"); const fs = require("fs-extra"); const ImageModule = require('docxtemplater-image-module-free'); const sizeOf = require("image-size");
const replaceTemplateKey = (filePath, renderContent) => { const content = fs.readFileSync(filePath, "binary")
const opts = { centered: false, fileType: "docx", getImage(tagValue, tagName, meta) { return fs.readFileSync(tagValue); }, getSize(img, tagValue, tagName) { const sizeObj = sizeOf(img); const multiple = sizeObj.width / 500 const width = sizeObj.width / multiple const height = sizeObj.height / multiple return [width, height]; }, }
const zip = new PizZip(content);
const doc = new Docxtemplater(zip, { modules: [new ImageModule(opts)], paragraphLoop: true, linebreaks: true, }); doc.render(renderContent);
const buffer = doc.getZip().generate({ type: "nodebuffer", compression: "DEFLATE", });
fs.writeFileSync(filePath, buffer); } module.exports = { replaceTemplateKey, }
|