HTML导出生成Word文档
前言
在某某夜黑风高的一天即将下班的时候,老板召集公司大神们,进行了一个紧急会议,此会议主要目的是老板的客户提出了一些小需求,
有一个前端小 需求,需要将前端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文档相关推荐
- js将HTML导出生成word文档
在项目开发中中,遇到将HTML导出生成word文档,刚开始在网上找了很多资料,基本都是jQuery中的插件jquery.wordexport.js,刚开始是不想用这个的,这个要引用另一个插件FileS ...
- 用js将HTML文本导出生成word文档
在项目开发中中,遇到将HTML导出生成word文档,刚开始在网上找了很多资料,基本都是jQuery中的插件jquery.wordexport.js,刚开始是不想用这个的,这个要引用另一个插件FileS ...
- Java项目中利用Freemarker模板引擎导出--生成Word文档
应邀写的一篇文章:Java项目中利用Freemarker模板引擎导出--生成Word文档 资源下载:https://download.csdn.net/download/weixin_41367523 ...
- 将HTML导出生成word文档
前言: 项目开发中遇到了需要将HTML页面的内容导出为一个word文档,所以有了这边随笔. 当然,项目开发又时间有点紧迫,第一时间想到的是用插件,所以百度了下.下面就介绍两个导出word文档的方法. ...
- PowerDesigner将PDM导出生成WORD文档
环境 PowerDesigner15 1.点击Report Temlates 制作模板 2.如果没有模板,单击New图标创建.有直接双击进入. 3.在弹出的类型(Type)对话框中想选择PBM(Phy ...
- java导出生成word文档_java使用freemarker 生成word文档
最近需要做一个导出word的功能, 在网上搜了下, 有用POI,JXL,iText等jar生成一个word文件然后将数据写到该文件中,API非常繁琐而且拼出来的样式也不美观,于是选择了另一种方式--- ...
- PowerDesigner将PDM导出生成WORD文档(转)
今天的温习老知识,是如何将一个PD设计的PDM来导出WORD文档,这是一个非常实用的功能,可以在软件过程的数据库设计文档编写中节省N多时间, 那不废话了,我们就开始今天的讲解吧! 第一步,点击Repo ...
- 如何在PowerDesigner将PDM导出生成WORD文档或者html文件
a) 使用PowerDesigner打开pdm文件 b) 点击Report Temlates 制作模板 点击PowerDesigner菜单栏"Report&q ...
- java导出生成word文档并进行下载的方法
前端html内容展示 <div class="col-md-1 col_top_daochu">导出内容并进行下载 </div> 前端js内容展示 < ...
最新文章
- vmware-tools安装指南
- C语言,获得堆栈增长方向的一种方法
- 月薪6万的腾讯产品经理是什么水平?
- random模块详解
- 【Python】直接赋值,深拷贝和浅拷贝
- PHP安卓获取gpgga,这个单片机程序中 感觉GPS的 GPGGA这条信息没有被保存
- 需求文档(PRD文档)
- TCP/IP协议栈扫盲班
- 525、Java工程师的进阶之路 -【 RocketMQ (二)】 2022.01.06
- Qt保存QTextEdit内存至.txt文件中
- 初级软件测试工程师工资(薪资待遇)一般是多少?
- 中式红木整装塑造出中式家居的浪漫氛围
- AWS KVS(Kinesis Video Streams)之WebRTC的C库测试
- Directx11 Effects
- Oracle Clob类型和Blob类型之间的转换
- Symbian 模拟器在Vista Win7下无法正常启动
- 3DMax—吹风机建模
- 批量加密pdf方法(完全免费)
- matplotlib绘制局部放大图
- 成功的产品设计师,必须知道的8件事
热门文章
- ADXL345测量角度
- PCL 点云配准衡量指标
- 超详细Openstack核心组件——Placement部署
- 绿盟于旸:让阿里安娜火箭爆炸的缓冲区溢出 linkboy语录:tk出品必是精品呵呵
- Android 11.0 12.0系统默认授予读写权限给第三方app
- 爱快docker青龙面板保姆级
- 【毕业设计】8-基于STM32的水质_浊度检测仪设计与实现(原理图+源码+实物照片+答辩论文)
- “adb”不是内部或外部命令,也不是可运行的程序或批处理文件——解决方案
- 成长语录——留给以后的自己
- 微星 H670 Tomahawk 参数