zoukankan      html  css  js  c++  java
  • js实现word转换为html

    前言

    最近接到一个需求,实现上传一个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文档,并且转换后的标题没有居中,如图:

  • 相关阅读:
    利用python做矩阵的简单运算(行列式、特征值、特征向量等的求解)
    numpy.linalg.svd函数
    梯度裁剪(Clipping Gradient):torch.nn.utils.clip_grad_norm
    tf.matmul()报错expected scalar type Float but found Double
    1283 最小周长
    1182 完美字符串
    1091 线段的重叠
    1090 3个数和为0
    1087 1 10 100 1000
    1083 矩阵取数问题
  • 原文地址:https://www.cnblogs.com/heavenYJJ/p/9805202.html
Copyright © 2011-2022 走看看