0.1.7 • Published 3 months ago

html-docx-js-extends v0.1.7

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

html-docx-js-extends

NPM version

基于 html-docx-js 进行了功能扩展.

在原始库支持将HTML内容转换为docx格式文件的基础上,扩展支持了对单个章节纵横方向的设置。

安装

npm install html-docx-js-extends --save-dev

用法

支持node.js运行环境和纯浏览器环境, 包括vue/react/angular等前端框架.

Vue.js 示例:

import { asBlob } from 'html-docx-js-extends'
// if you want to save the docx file, you need import 'file-saver'
import { saveAs } from 'file-saver'

const htmlString = `<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <h1>Welcome</h1>
</body>
</html>`

export default {
  methods: {
    saveDocx() {
      asBlob(htmlString).then(data => {
        saveAs(data, 'file.docx') // save as docx file
      }) // asBlob() return Promise<Blob|Buffer>
    },
  },
}

可以使用 options 参数(包括margins 和 orientation)

const data = await asBlob(htmlString, { orientation: 'landscape', margins: { top: 100 } })

literal type widen issue

If you use this package in a Typescript file and declare the options to an independent Object like:

import { asBlob } from 'html-docx-js-extends'
const opt = {
  margin: {
    top: 100
  },
  orientation: 'landscape' // type error: because typescript automatically widen this type to 'string' but not 'Orient' - 'string literal type'
}
await asBlob(html, opt)

You can use as const to avoid type widening.

const opt = {
  margin: {
    top: 100
  },
  orientation: 'landscape' as const
}

多节点导出

 const wordFile = createWord('报表')
    wordFile.addSection(HTML_CASE_3, { orientation: 'landscape', margins: { left: 720, right: 720 } })
    wordFile.addSection(HTML_CASE, { orientation: 'portrait', margins: { left: 720, right: 720 } })
    wordFile.addSection(HTML_CASE_2, { orientation: 'landscape', margins: { left: 720, right: 720 } })

    let blobRes = wordFile.asBlob().then(blob => {
    saveAs(blob, wordFile.fileName || '导出.doc');
    });

License

0.1.7

3 months ago

0.1.6

4 months ago