前言

在某某夜黑风高的一天即将下班的时候,老板召集公司大神们,进行了一个紧急会议,此会议主要目的是老板的客户提出了一些小需求,

有一个前端小 需求,需要将前端HTML导出为Word文档,因为没有做过此功能,所以在下面开会时作为菜鸟的我那是瑟瑟发抖呀!

当时的思绪就是我是谁?我在哪?我在干什么?嘿嘿嘿嘿

天不负我呀!嘚嘚嘚嘚,站在巨人肩膀上的我,找到了我想要的需求。(当然需求中还是不能达到100%的,此处机智的

我改了插件源码。哈哈哈哈哈哈,快夸我,快夸我。)

好了废话不多说了,来演示


一、通过jquery.wordexport.js导出word

大致浏览了一下此插件的代码,了解到该插件可以导出文本和图片(心中狂喜呀),当然图片指定是按照我们常理中的canvas的形式绘制滴,文本就需要依赖FileSaver.js插件了,详细的咱就不说了,需要的话可以去了解哟!

1.此处需要掌声,来来来来

他来了他来了,他带着代码走来了

FileSaver.js

var saveAs = saveAs || (function(view) {"use strict";if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {return;}var doc = view.document, get_URL = function() {return view.URL || view.webkitURL || view;}, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a"), can_use_save_link = "download" in save_link, click = function(node) {var event = new MouseEvent("click");node.dispatchEvent(event);}, is_safari = /constructor/i.test(view.HTMLElement), is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent), throw_outside = function(ex) {(view.setImmediate || view.setTimeout)(function() {throw ex;}, 0);}, force_saveable_type = "application/octet-stream", arbitrary_revoke_timeout = 1000 * 40 // in ms, revoke = function(file) {var revoker = function() {if (typeof file === "string") { // file is an object URLget_URL().revokeObjectURL(file);} else { // file is a Filefile.remove();}};setTimeout(revoker, arbitrary_revoke_timeout);}, dispatch = function(filesaver, event_types, event) {event_types = [].concat(event_types);var i = event_types.length;while (i--) {var listener = filesaver["on" + event_types[i]];if (typeof listener === "function") {try {listener.call(filesaver, event || filesaver);} catch (ex) {throw_outside(ex);}}}}, auto_bom = function(blob) {if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});}return blob;}, FileSaver = function(blob, name, no_auto_bom) {if (!no_auto_bom) {blob = auto_bom(blob);}var filesaver = this, type = blob.type, force = type === force_saveable_type, object_url, dispatch_all = function() {dispatch(filesaver, "writestart progress write writeend".split(" "));}, fs_error = function() {if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {var reader = new FileReader();reader.onloadend = function() {var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');var popup = view.open(url, '_blank');if(!popup) view.location.href = url;filesaver.readyState = filesaver.DONE;dispatch_all();};reader.readAsDataURL(blob);filesaver.readyState = filesaver.INIT;return;}if (!object_url) {object_url = get_URL().createObjectURL(blob);}if (force) {view.location.href = object_url;} else {var opened = view.open(object_url, "_blank");if (!opened) {view.location.href = object_url;}}filesaver.readyState = filesaver.DONE;dispatch_all();revoke(object_url);};filesaver.readyState = filesaver.INIT;if (can_use_save_link) {object_url = get_URL().createObjectURL(blob);setTimeout(function() {save_link.href = object_url;save_link.download = name;click(save_link);dispatch_all();revoke(object_url);filesaver.readyState = filesaver.DONE;});return;}fs_error();}, FS_proto = FileSaver.prototype, saveAs = function(blob, name, no_auto_bom) {return new FileSaver(blob, name || blob.name || "download", no_auto_bom);};if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {return function(blob, name, no_auto_bom) {name = name || blob.name || "download";if (!no_auto_bom) {blob = auto_bom(blob);}return navigator.msSaveOrOpenBlob(blob, name);};}FS_proto.abort = function(){};FS_proto.readyState = FS_proto.INIT = 0;FS_proto.WRITING = 1;FS_proto.DONE = 2;FS_proto.error =FS_proto.onwritestart =FS_proto.onprogress =FS_proto.onwrite =FS_proto.onabort =FS_proto.onerror =FS_proto.onwriteend =null;return saveAs;}(typeof self !== "undefined" && self|| typeof window !== "undefined" && window|| this.content));
if (typeof module !== "undefined" && module.exports) {module.exports.saveAs = saveAs;
} else if ((typeof define !== "undefined" && define !== null) && (define.amd !== null)) {define([], function() {return saveAs;});
}

2.jquery.wordexport.js

if (typeof jQuery !== "undefined" && typeof saveAs !== "undefined") {(function($) {$.fn.wordExport = function(fileName) {fileName = typeof fileName !== 'undefined' ? fileName : "jQuery-Word-Export";var static = {mhtml: {top: "Mime-Version: 1.0\nContent-Base: " + location.href + "\nContent-Type: Multipart/related; boundary=\"NEXT.ITEM-BOUNDARY\";type=\"text/html\"\n\n--NEXT.ITEM-BOUNDARY\nContent-Type: text/html; charset=\"utf-8\"\nContent-Location: " + location.href + "\n\n<!DOCTYPE html>\n<html>\n_html_</html>",head: "<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<style>\n_styles_\n</style>\n</head>\n",body: "<body>_body_</body>"}};var options = {maxWidth: 624};var markup = $(this).clone();markup.each(function() {var self = $(this);if (self.is(':hidden'))self.remove();});var images = Array();var img = markup.find('img');for (var i = 0; i < img.length; i++) {var w = Math.min(img[i].width, options.maxWidth);var h = img[i].height * (w / img[i].width);var canvas = document.createElement("CANVAS");canvas.width = w;canvas.height = h;var context = canvas.getContext('2d');context.drawImage(img[i], 0, 0, w, h);var uri = canvas.toDataURL("image/png/jpg");$(img[i]).attr("src", img[i].src);img[i].width = w;img[i].height = h;images[i] = {type: uri.substring(uri.indexOf(":") + 1, uri.indexOf(";")),encoding: uri.substring(uri.indexOf(";") + 1, uri.indexOf(",")),location: $(img[i]).attr("src"),data: uri.substring(uri.indexOf(",") + 1)};}var mhtmlBottom = "\n";for (var i = 0; i < images.length; i++) {mhtmlBottom += "--NEXT.ITEM-BOUNDARY\n";mhtmlBottom += "Content-Location: " + images[i].location + "\n";mhtmlBottom += "Content-Type: " + images[i].type + "\n";mhtmlBottom += "Content-Transfer-Encoding: " + images[i].encoding + "\n\n";mhtmlBottom += images[i].data + "\n\n";}mhtmlBottom += "--NEXT.ITEM-BOUNDARY--";var styles="";var fileContent = static.mhtml.top.replace("_html_", static.mhtml.head.replace("_styles_", styles) +         static.mhtml.body.replace("_body_", markup.html())) + mhtmlBottom;var blob = new Blob([fileContent], {type: "application/msword;charset=utf-8"});saveAs(blob, fileName + ".doc");};})(jQuery);
} else {if (typeof jQuery === "undefined") {console.error("jQuery Word Export: missing dependency (jQuery)");}if (typeof saveAs === "undefined") {console.error("jQuery Word Export: missing dependency (FileSaver.js)");}
}

3.最最最最重要的一步它来啦

<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title>快导出我吧</title>
</head>
<body>
<div class="comeOn"><p align="center" style="font-size:20pt;font-weight:bold;">我就是你想看到的文档哟!!!!!</p>
</div>
<button onclick="download()" type="button">导它导它</button>
<script src="https://cdn.bootcss.com/jquery/2.2.4/jquery.js"></script>
<script type="text/javascript" src="js/FileSaver.js"></script>
<script type="text/javascript" src="js/jquery.wordexport.js"></script>
<script>function download(){$(".comeOn").wordExport('生成word文档'); //此处可以写上自己想取的名字哟!!!}
</script>
</body>
</html>

总结

打工不易需要努力呀!励志做一个不敲代码的项目经理,杠杠杠杠滴!先订个小目标,赚它100000000,噢噢不不多打几个零

同时也欢迎大家一起交流哟!V+:dagonghun996

HTML导出生成Word文档相关推荐

  1. js将HTML导出生成word文档

    在项目开发中中,遇到将HTML导出生成word文档,刚开始在网上找了很多资料,基本都是jQuery中的插件jquery.wordexport.js,刚开始是不想用这个的,这个要引用另一个插件FileS ...

  2. 用js将HTML文本导出生成word文档

    在项目开发中中,遇到将HTML导出生成word文档,刚开始在网上找了很多资料,基本都是jQuery中的插件jquery.wordexport.js,刚开始是不想用这个的,这个要引用另一个插件FileS ...

  3. Java项目中利用Freemarker模板引擎导出--生成Word文档

    应邀写的一篇文章:Java项目中利用Freemarker模板引擎导出--生成Word文档 资源下载:https://download.csdn.net/download/weixin_41367523 ...

  4. 将HTML导出生成word文档

    前言: 项目开发中遇到了需要将HTML页面的内容导出为一个word文档,所以有了这边随笔. 当然,项目开发又时间有点紧迫,第一时间想到的是用插件,所以百度了下.下面就介绍两个导出word文档的方法. ...

  5. PowerDesigner将PDM导出生成WORD文档

    环境 PowerDesigner15 1.点击Report Temlates 制作模板 2.如果没有模板,单击New图标创建.有直接双击进入. 3.在弹出的类型(Type)对话框中想选择PBM(Phy ...

  6. java导出生成word文档_java使用freemarker 生成word文档

    最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar生成一个word文件然后将数据写到该文件中,API非常繁琐而且拼出来的样式也不美观,于是选择了另一种方式--- ...

  7. PowerDesigner将PDM导出生成WORD文档(转)

    今天的温习老知识,是如何将一个PD设计的PDM来导出WORD文档,这是一个非常实用的功能,可以在软件过程的数据库设计文档编写中节省N多时间, 那不废话了,我们就开始今天的讲解吧! 第一步,点击Repo ...

  8. 如何在PowerDesigner将PDM导出生成WORD文档或者html文件

    a)         使用PowerDesigner打开pdm文件 b)         点击Report Temlates 制作模板 点击PowerDesigner菜单栏"Report&q ...

  9. java导出生成word文档并进行下载的方法

    前端html内容展示 <div class="col-md-1 col_top_daochu">导出内容并进行下载 </div> 前端js内容展示 < ...

最新文章

  1. vmware-tools安装指南
  2. C语言,获得堆栈增长方向的一种方法
  3. 月薪6万的腾讯产品经理是什么水平?
  4. random模块详解
  5. 【Python】直接赋值,深拷贝和浅拷贝
  6. PHP安卓获取gpgga,这个单片机程序中 感觉GPS的 GPGGA这条信息没有被保存
  7. 需求文档(PRD文档)
  8. TCP/IP协议栈扫盲班
  9. 525、Java工程师的进阶之路 -【 RocketMQ (二)】 2022.01.06
  10. Qt保存QTextEdit内存至.txt文件中
  11. 初级软件测试工程师工资(薪资待遇)一般是多少?
  12. 中式红木整装塑造出中式家居的浪漫氛围
  13. AWS KVS(Kinesis Video Streams)之WebRTC的C库测试
  14. Directx11 Effects
  15. Oracle Clob类型和Blob类型之间的转换
  16. Symbian 模拟器在Vista Win7下无法正常启动
  17. 3DMax—吹风机建模
  18. 批量加密pdf方法(完全免费)
  19. matplotlib绘制局部放大图
  20. 成功的产品设计师,必须知道的8件事

热门文章

  1. ADXL345测量角度
  2. PCL 点云配准衡量指标
  3. 超详细Openstack核心组件——Placement部署
  4. 绿盟于旸:让阿里安娜火箭爆炸的缓冲区溢出 linkboy语录:tk出品必是精品呵呵
  5. Android 11.0 12.0系统默认授予读写权限给第三方app
  6. 爱快docker青龙面板保姆级
  7. 【毕业设计】8-基于STM32的水质_浊度检测仪设计与实现(原理图+源码+实物照片+答辩论文)
  8. “adb”不是内部或外部命令,也不是可运行的程序或批处理文件——解决方案
  9. 成长语录——留给以后的自己
  10. 微星 H670 Tomahawk 参数