美文网首页前端
插件推荐 | html文本转docx文档

插件推荐 | html文本转docx文档

作者: 格致匠心 | 来源:发表于2020-03-03 14:50 被阅读0次

最近在项目中遇到一个需求,需要转化html文本为docx文档。

之前在网上有人推荐使用html-docx-js。但是这个包的last publish是在4年前,用的语言是CoffeeScript,而且构建出来的代码包括with语句,所以在主流的现代框架中(vue/react/angular)中使用不了(它们目前的构建工具都默认启用了严格模式),我看了下Issue,发现很多都在抱怨这个包目前用不了,所以萌生了用typescript重写的想法。

目前,大家可以通过npm install html-docx-js-typescript --save-dev来安装这个html-docx-js-typescript包,使用的方法也很简单。

import { asBlob } from 'html-docx-js-typescript'
// 要保存这个docx文件推荐引入file-saver哦,你可以用npm i -D 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() {
      const fileData = asBlob(htmlString).then(data => {
        saveAs(fileData, 'file.docx') // 保存为docx文件
      }) // asBlob() 返回 Promise<Blob|Buffer>,用promise.then还是async语法都行
    },
  },
}

也可以添加导出的选项,包括边距,页面的横竖之类的。

// landscape就是横着的,portrait是竖着的,默认是竖屏portrait。
const data = await asBlob(htmlString, { orientation: 'landscape', margins: { top: 100 } })

在node平台你可以用fs模块直接把数据写入文件。

如果你把这个包用于typescript环境,当你要给导出选项暂存在一个独立的Object里,再填到参数那里的话,typescript可能会抛出类型错误。

import { asBlob } from 'html-docx-js-typescript'
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)

这是一个typescript存在的问题,可以查看github typescript仓库的issue:Syntax for hinting literal type inference #10195

要解决它很简单,只需要给它一个类型断言就行了。

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

最后,如果大家觉得我那里写得不好需要改进,欢迎提issue或者pull requests,这是项目的github地址:https://github.com/caiyexiang/html-docx-js-typescript

一起讨论,一起进步哈!

相关文章

  • 插件推荐 | html文本转docx文档

    最近在项目中遇到一个需求,需要转化html文本为docx文档。 之前在网上有人推荐使用html-docx-js。但...

  • python docx文档转html页面

    文章链接:https://mp.weixin.qq.com/s/uMb2ziRS1NJ1GXIjofeANg 说到...

  • python docx文档转html页面

    说到word文档转html的,想必网上一搜一大把,各种在线word转html页面,使用起来也方便。但是在实际项目中...

  • Typescript | 浅谈对于选项options的处理方案

    问题情景: 最近为一个年代久远的库重写了typescript版本,(这个库能把html文本转化为docx文档),里...

  • HTML学习日志

    HTML文档表示网页 HTML文档描述网页 HTML 文档包含 HTML 标签和纯文本 HTML 文档也被称为网页...

  • python-docx 使用笔记

    python-docx使用文档 表格篇 基本操作 列出所有style 表格内插入图片 文本篇

  • 2020.2.28 HTML

    HTML:世界通用的超文本标记语言。标记语言是一套标记标签。HTML文档包括了HTML标签及文本内容。HTML文档...

  • OpenOffice组件docx/doc转html

    OpenOffice组件docx/doc转html 准备工作 CentOS 安装OpenOffice资源准备ope...

  • HTML速查列表

    HTML 基本文档 文档标题 可见文本... 基本标签(Basic Tags) 最...

  • 基础知识补充

    DOM文档对象模型 DOM节点: 整个文档是一个文档节点 每个HTML元素是元素节点 HTML元素内的文本是文本节...

网友评论

    本文标题:插件推荐 | html文本转docx文档

    本文链接:https://www.haomeiwen.com/subject/butsfhtx.html