前言

最近接到一个需求,实现上传一个word文档,然后将该word转换成html丢给服务端存上。进行技术调研后发现有三种方法可以实现这个功能:ActiveXObjectdocx2htmlmammoth

IE的 ActiveXObject

    var oWordApp=new   ActiveXObject("Word.Application");
var oDocument=oWordApp.Documents.Open("C://test.doc");
oDocument.SaveAs("C://test.html", 10)

缺点:只有IE才有这个东西

docx2html

Git地址:https://github.com/lalalic/docx2html

使用方法:

// html 部分
<input type="file" @change="handleFileSelect">
<textarea id="text"></textarea> // js部分
handleFileSelect(event){
require("docx2html")(event.target.files[0]).then(function(converted){
console.log(converted)
document.querySelector('textarea').value=converted.toString()
})
}

缺点:只能将简单的docx文件转化成html,复杂点的就报错了,如图:

mammoth.js

Git地址:https://github.com/mwilliamson/mammoth.js

中文文档地址:https://www.helplib.com/GitHub/article_106969

使用方法:

    //html:部分
<div class="container">
<input id="document" type="file" @change="handleFileSelect" />
<div class="row">
<div class="span8">
<div id="output" class="well">
</div>
</div>
<div class="span4">
<h3>Messages</h3>
<div id="messages">
</div>
</div>
</div>
</div> //js:部分
handleFileSelect(event) {
this.readFileInputEventAsArrayBuffer(event, (arrayBuffer) => {
mammoth.convertToHtml({arrayBuffer: arrayBuffer})
.then(this.displayResult)
.done();
});
}, displayResult(result) {
console.log(result)
document.getElementById("output").innerHTML = result.value; var messageHtml = result.messages.map((message) => {
return '<li class="' + message.type + '">' + this.escapeHtml(message.message) + "</li>";
}).join(""); document.getElementById("messages").innerHTML = "<ul>" + messageHtml + "</ul>";
}, readFileInputEventAsArrayBuffer(event, callback) {
var file = event.target.files[0]; var reader = new FileReader(); reader.onload = function(loadEvent) {
var arrayBuffer = loadEvent.target.result;
callback(arrayBuffer);
}; reader.readAsArrayBuffer(file);
}, escapeHtml(value) {
return value
.replace(/&/g, '&amp;')
.replace(/"/g, '&quot;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;');
},

缺点:只支持docx的word文档,并且转换后的标题没有居中,如图:

js实现word转换为html的更多相关文章

  1. 在Ubuntu环境把PPT和Word转换为swf文件

    项目需要一个在线浏览文档的功能,于是参照网上的代码写了一份利用Microsoft Office 2010和swftools-2013-04-09-1007.exe转换的程序 思路:调用电脑本机的off ...

  2. winform实现word转换为PDF(.doc)

    注意:实现word转换为PDF文件,本人安装Office为2013; word以后缀为.doc为例实现文件类型转换,具体方式如下所示: 实现步骤: 1.添加命名空间引用——using Microsof ...

  3. 使用poi将word转换为html

    使用poi将word转换为html,支持doc,docx,转换后可以保持文字.表格.图片.样式 演示地址: https://www.xiaoyun.studio/app/preview.html 完整 ...

  4. Word转换为图片PDF

    1.        Word转换为PDF,程序很多,但转换后的PDF,还可以复制,虽可以加密禁止复制,但市场上太多的PDF,还可以把PDF转换Word等其他格式,很容易被别人利用和剽窃,即便是PDF加 ...

  5. Js使用word书签填充内容

    Js使用word书签填充内容 1.在模板文件中需要填充的地方插入书签 填充内容为:(|光标所在处) 填写书签名,点击添加完成: 2.使用js打开模板,获取书签位置,填充数据: function pri ...

  6. js中字符串转换为数值的两种方法的区别

    在js中字符串转换为数值的方法有三种:转换函数,强制类型转换,隐式转换 1.转换函数 parseInt()   //将字符串转换为整型 parseFloat()  //将字符串转换为浮点型 转换函数在 ...

  7. C#,VB.NET如何将Word转换为PDF和Text

    众所周知,Word是我们日常工作中常用的办公软件之一,有时出于某种需求我们需要将Word文档转换为PDF以及Text.那么如何以C#,VB.NET编程的方式来实现这一功能呢? 下面我将分开介绍如何运用 ...

  8. Word转换为markdown

    Word转换为markdown 首先你的电脑要有office word 1   安装pandoc https://github.com/jgm/pandoc/releases,可以找到最新的pando ...

  9. UiPath之Word转换为PDF

    前几天在手机上看到其他的文章,里面提到如何将Word转换为PDf,在UiPath的ManagePackage中,下载一个WordToPDF的包, 我按照上面的方法试着做了一下,但是在转换的时候很不稳定 ...

随机推荐

  1. VS2017 异常 Editor or Editor Extension

    KE遇到的第一个问题 VS 2017 打开文件的时候, 遇到异常 检查 activity_log发现是 Editor or Editor Extension, 解决办法: 安装插件, Clear ME ...

  2. Scala简介、安装、函数、面向对象

    Scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言. scala命令行窗口,我们称之为REPL,是指:Read->Evalua ...

  3. vue页面传参

    1.传的参数是数组 传递参数的页面 let setStr = encodeURIComponent(JSON.stringify(this.tableData)); this.$router.push ...

  4. 从拥抱开源到回馈开源,灵雀云助力CNCF中国区培训业务

    6月27日,全球首屈一指的开源盛会 2018 LinuxCon + ContainerCon + CloudOpen China (LC3)在中国北京国家会议中心落下帷幕.二度落地中国的LC3大会热度 ...

  5. MVC-Razor视图

    Razor 视图引擎 与Aspx开发区别在于代码: 1.Razor 更智能,摒弃了<%%>格式,直接用@符号开启cs代码,遇到html时自动识别 2.遇到如汉字等即非cs代码,又非html ...

  6. Nginx 出现 _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/

    Nginx 出现  _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/ 这种情况是因为 application 没有足的权限 .需要给予777的权限就能解决了

  7. 为什么做java开发的公司需要那么多程序员?

    注:文章转载自知乎 透过现象看本质. Java是企业应用市场的王者,如果一家非互联网公司用Java,那么十有八九是做企业应用的. 所以,这个问题本质上是:为什么做企业应用的公司需要那么多Java程序员 ...

  8. 安卓recyclerView 分割线的那些事

    在这里我想记录下recyclerView 分割线遇到的一些问题,主要提供一些个人思路,代码可能不多~ 1.宽度问题 描述:我现在需要做一张卡片,卡片里面是一条条联系人,而且我们卡片外层是有阴影的,我的 ...

  9. Jquery小功能实例

    下拉框内容选中左右移动 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sele ...

  10. 58 字体反爬攻略 python3

    1.下载安装包 pip install fontTools 2.下载查看工具FontCreator 百度后一路傻瓜式安装即可 3.反爬虫机制 网页上看见的 后台源代码里面的 从上面可以看出,生这个字变 ...