generate-docx

Generates .docx from template and data

Usage no npm install needed!

<script type="module">
  import generateDocx from 'https://cdn.skypack.dev/generate-docx';
</script>

README

Build Status Coverage Status js-standard-style

generate-docx

Generates .docx from template and data

Returns a Buffer or saves the generated file if given path and filename.

Example save file

Promises

const generateDocx = require('generate-docx')

const options = {
  template: {
    filePath: 'test/data/testdoc.docx',
    data: {
      title: 'This is the title',
      description: 'Description is good',
      body: 'My body is my temple'
    }
  },
  save: {
    filePath: 'test/data/savedfile.docx'
  }
}

generateDocx(options)
  .then(console.log)
  .catch(console.error)

Callback

const generateDocx = require('generate-docx')

const options = {
  template: {
    filePath: 'test/data/testdoc.docx',
    data: {
      title: 'This is the title',
      description: 'Description is good',
      body: 'My body is my temple'
    }
  },
  save: {
    filePath: 'test/data/savedfile.docx'
  }
}

generateDocx(options, (error, message) => {
  if (error) {
    console.error(error)
  } else {
    console.log(message)
  }
})

Example return buffer

Promises

const { writeFileSync } = require('fs')
const generateDocx = require('generate-docx')

const options = {
  template: {
    filePath: 'test/data/testdoc.docx',
    data: {
      title: 'This is the title',
      description: 'Description is good',
      body: 'My body is my temple'
    }
  }
}

generateDocx(options)
  .then(buf => {
    writeFileSync('test/data/frombuffer.docx', buf)
    console.log('File written')
  }).catch(console.error)

Callback


const { writeFileSync } = require('fs')
const generateDocx = require('generate-docx')

const options = {
  template: {
    filePath: 'test/data/testdoc.docx',
    data: {
      title: 'This is the title',
      description: 'Description is good',
      body: 'My body is my temple'
    }
  }
}

generateDocx(options, (error, buf) => {
  if (error) {
    console.error(error)
  } else {
    writeFileSync('test/data/frombuffer.docx', buf)
    console.log('File written')
  }
})

Options

If you need to pass an option object to configure docxtemplater you can do using templateOptions.
For example you can configure docxtemplater to parse \n as a linebreak in the document

const options = {
  template: {
    filePath: 'test/data/testdoc.docx',
    data: {
      title: 'This is the title',
      description: 'Description is good',
      body: 'My body is \n my temple'
    }
  },
  templateOptions: {
      linebreaks: true
  },
  save: {
    filePath: 'test/data/savedfile.docx'
  }
}

License

MIT