一、业务需求:

需要将查看页面中的HTML内容及对应的鱼骨图(sbg)导出到word文档中;

二、解决方案:

1、需要svg通过后端请求转成png,重新写入到div中,供导出使用;

2、使用jQuery-Word-Export插件,将重构后的div内容导出到word中。

三、前端实现代码:

1、HTML页面中引入jquery.min.js、FileSaver.js、jquery.wordexport.js三个文件;

2、页面添加导出div,将导出内容写入(含转换后的png);

3、添加导出按钮,导出按钮添加click事件:

$("#download").wordExport("分析与评价");

四、遇到的问题:

1、svg转png:前端插件很多不兼容IE浏览器,改成后端实现(Svg.dll【从官网上拉的源码修改后编译再引入项目中使用】);

2、图片导出到word,很多后端插件不兼容office word 2003,改用前端实现;

3、jquery.wordexport.js的导出方法wordExport()中var img = markup.find('img');不支持谷歌 浏览器,需改成var img = new Image();改后,导出的图片在WPS中不显示。

再次修改插件源码(生成canvas部分代码)如下:

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,//最大宽度defaultLength: 300 //默认高度};// Clone selected element before manipulating itvar markup = $(this).clone();// Remove hidden elements from the outputmarkup.each(function () {var self = $(this);if (self.is(':hidden'))self.remove();});// Embed all images using Data URLsvar images = Array();var img = markup.find('img');var mhtmlBottom = "\n";//var img = new Image();for (var i = 0; i < img.length; i++) {// Calculate dimensions of output imagevar w = Math.min(img[i].width == 0 ? options.maxWidth : img[i].width, options.maxWidth);var h = (img[i].height == 0 ? options.defaultLength : img[i].height) * (w / (img[i].width == 0 ? options.maxWidth : img[i].width));// Create canvas for converting image to data URLvar canvas = document.createElement("CANVAS");canvas.width = w;canvas.height = h;// Draw image to canvasvar context = canvas.getContext('2d');context.drawImage(img[i], 0, 0, w, h);// Get data URL encoding of imagevar uri = canvas.toDataURL("image/png");console.log(i+":"+uri);$(img[i]).attr("src", img[i].src);img[i].width = w;img[i].height = h;mhtmlBottom += "--NEXT.ITEM-BOUNDARY\n";mhtmlBottom += "Content-Location: " + uri + "\n";mhtmlBottom += "Content-Type: " + uri.substring(uri.indexOf(":") + 1, uri.indexOf(";")) + "\n";mhtmlBottom += "Content-Transfer-Encoding: " + uri.substring(uri.indexOf(";") + 1, uri.indexOf(",")) + "\n\n";mhtmlBottom += uri.substring(uri.indexOf(",") + 1) + "\n\n";}mhtmlBottom += "--NEXT.ITEM-BOUNDARY--";//TODO: load css from included stylesheetvar styles = "";// Aggregate parts of the file togethervar fileContent = static.mhtml.top.replace("_html_", static.mhtml.head.replace("_styles_", styles) + static.mhtml.body.replace("_body_", markup.html())) + mhtmlBottom;// Create a Blob with the file contentsvar 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)");}
}

五、参照网址:

http://hoohtml.com/jQuery/Tools/2016090927.html

https://www.cnblogs.com/liudaihuablogs/p/9726700.html

https://blog.csdn.net/weixin_33743880/article/details/92385994

https://www.llxrandom.com/test/jqueryword

前端导出HTML(含图片)到word文档中实践总结相关推荐

  1. office服务器草稿位置,精确定位图片在Word文档中的位置的操作方法

    除了嵌入型图片外,图片在Word文档中的位置可以通过鼠标拖动来调整.如果需要对图片位置进行精确定位,可以使用相关的命令来进行操作,下面介绍精确定位图片在Word文档中的位置的具体操作方法. 1.在文档 ...

  2. 计算机word工具栏图片,在word文档中画出逼真的电脑显示器

    9.用PS制作一张英文字母图片,字母设置为白色,作为电脑显示器的LOGO,把LOGO图片保存为PNG格式. 回到word文档这里,在文档上方的菜单栏中顺序点:插入--图片--来自文件: 把刚才PS弄好 ...

  3. 如何给WPS里全是图片的word文档中利用题注自动编号

    打开需要编号的word文档. 操作如下(可按图片中的数字序号顺序操作): 第一步,利用JS宏代码自动换行插入回车符 这里的代码需要复制dujianxiong大神的代码, https://blog.cs ...

  4. 在Word文档中插入矢量图片

    在Word文档中插入矢量图片 在 Word 文档中插入矢量图片,可以按照以下步骤进行: 打开 Word 文档,点击插入选项卡,选择"图片"命令. 在弹出的"插入图片&qu ...

  5. C# 替换Word文档中的图片

    C# 替换Word文档中的图片 图片是Word文档中非常常见的一种元素,我们在处理Word文档时经常会对图片进行如添加,提取,替换和删除等操作.之前我已经介绍过如何提取Word文档中的图片,这篇文章将 ...

  6. 【Python】批量导出word文档中的图片、嵌入式文件

    Python 批量导出word文档中的图片.嵌入式文件 需求 学生试卷中的题目有要提交截图的,也有要提交文件的,为了方便学生考试,允许单独交或者嵌入Word中提交,那么事后如何整理学生的答案?单独提交 ...

  7. java freemarker 图片_java通过freemarker导出包含富文本图片的word文档

    废话不多说,进入正题! 本文重点在于:对富文本图片的导出(基础的freemarker+word模板导出这里不做详细解说哈) (ps:大神的东西太深奥~~懵逼了 一周才搞定,为了方便后来在更加简单,清晰 ...

  8. 将word文档中的图片批量导出到文件夹中的办法

    有两个办法. 第一个办法: 1.打开需要导出图片的Word文档,打开后,选择菜单栏的[文件]选项-[另存为]: 2.将文件选择路径之后另存为,在下方文件类型下拉菜单中选择[(*.htm; *.html ...

  9. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  10. python批量提取word文档中的图片(含图片格式转换和GUI)

    作者:小小明 文章目录 doc格式批量转为docx 批量提取docx文档的图片 批量图片格式转换 完整代码 GUI图形化工具开发 打包exe 给GUI加入进度条 日常工作中,领导要求你将一份 Word ...

最新文章

  1. 奖学金申请 | 2019年清华-青岛数据科学研究院​“RONG”奖学金申请通知
  2. js中关于new Object时传参的一些细节分析
  3. phpcmsv9 幻灯片管理模块_UTF8
  4. 工作日志之个人统计篇
  5. Java如何连接openvas_gas: chinese Gui for openvAS(GAS)
  6. 盘点中兴通讯强悍的战斗力
  7. SQL2005安装及链接
  8. 如何构建有效的大数据战略
  9. 漫谈 Clustering (3): Gaussian Mixture Model
  10. 据说:一个线程性能相当于30%核心
  11. 【前端】vue阶段案例:组件化-房源展示
  12. 停止在csdn发文及上传资源的声明
  13. 关于laravel 使用__call,__callStatic实现静态,动态方法互相调用
  14. 联想服务器SR650升级网卡固件微码
  15. javaAPI文档中文版(JDK11在线版)无需下载、直接打开
  16. JVM参数详细配置说明
  17. 一个老程序员写给换行业的朋友的信
  18. 读了两年“游戏学院”才知被忽悠
  19. 悬镜安全与小佑科技达成战略合作,打造DevSecOps云原生安全技术创新生态
  20. C语言之制作带有难度选择,计时,计次,排行榜的猜数字游戏

热门文章

  1. matlab app-designer自建软件运行后,自定义左上角名字
  2. 【MySQL学习笔记】第7章 复制、删除表和记录
  3. python 金数据API调用数据
  4. 【Unity记录】Cannot reparent window to suggested parent. Window will not automayically close.
  5. “Docker 容器命令:解析容器化应用程序的运行时“
  6. docker容器高级操作
  7. Android Studio 使用vivo手机真机运行时安装spk安装包总是安装失败
  8. 大孔径显微镜研究偏振效应
  9. Exchange 常见问题(转自微软论坛)
  10. 如何调整VISIO的显示 比例