1. vue导出word文档打开报错,内容有问题
可能是word文档的格式有问题,可以尝试重新生成一个文档,或者使用其他文档格式试试。
2. canvas怎么导入word
一、使用的插件
html-docx-js
二、整体思路
因为canvas是运行在内存中的,所以不能简单的通过dom获取canvas图片,需要手动的先将canvas转为image。
三、实现
先克隆要下载的DOM的副本。
因为canvas是运行在内存中的,所以也不能通过cloneNode方法克隆下来(克隆下来是空的)。我们这里将原DOM中的canvas转成图片,然后插入到副本的对应位置,这样操作不会影响原DOM。
将DOM副本传入插件,生成文件对象,并下载下来。
import htmlDocx from 'html-docx-js/dist/html-docx'
/*
步骤1 :因为canvas是运行在内存中的,所以也不能通过cloneNode方法克隆下来(克隆下来是空的),
所以先克隆再在克隆的dom上进行操作是不可取的。所以需要在原DOM上生成img,
设置display: none从而使图片不影响页面展示,并插入到对应canvas元素之前(为了保证顺序不变)。
*/
const app = document.getElementById('app')
const cloneApp = app.cloneNode(true)
const canvases = app.getElementsByTagName('canvas')
const cloneCanvases = cloneApp.getElementsByTagName('canvas')
const promises = Array.from(canvases).map((ca, index) => {
return new Promise((res) => {
const url = ca.toDataURL('image/png', 1)
const img = new Image()
img.onload = () => {
URL.revokeObjectURL(url)
res()
}
img.src = url
// 插入clone的dom的canvas之前
cloneCanvases[index].parentNode.insertBefore(img, cloneCanvases[index])
})
})
/*
步骤2 :删除掉canvas元素
*/
// 删除clone的dom中的所有的canvas
const cloneCanvas = cloneApp.getElementsByTagName('canvas')
Array.from(cloneCanvas).forEach((ca) => ca.parentNode.removeChild(ca))
/* 步骤3 :将dom副本传入插件,生成文件对象,并下载下来 */
Promise.all(promises).then(() => {
const converted = htmlDocx.asBlob(`
<!DOCTYPE html>
<html lang="en">
${document.head.outerHTML}
<body>
${cloneApp.outerHTML}
</body>
</html>`)
saveAs(converted, 'test.docx')
})
// 下载文件
function saveAs (blob, fileName) {
const a = document.createElement('a')
const url = URL.createObjectURL(blob)
a.href = url
a.download = fileName
a.display = 'none'
document.body.appendChild(a)
a.click()
document.body.removeChild(a)
URL.revokeObjectURL(url)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
打开CSDN,阅读体验更佳
Canvas转化为图片下载,导出Word_canvas转word-Javascript文档类...
1.通用的canvas转化图片下载是没有后缀名的,这个可以有;2.因为canvas是页面加载之后才canvas转word更多下载资源、学习资料请访问CSDN文库频道.
继续访问
html5中word文件阅读,使用 HTML5 Canvas 进行数据可视化_汽车之家...
根据W3C HTML5 规范 (http://www.wendangwang.com/TR/html5/the-canvas-element.html),canvas 元素“为脚本提供取决于分辨率的位图画布,该画布可用于动态呈现图形、游戏图形或其他可视图像。”Canvas 实际是在两个 W3C 规范中定义的...
继续访问
Canvas转化为图片下载,导出Word
1.通用的canvas转化图片下载是没有后缀名的,这个可以有; 2.因为canvas是页面加载之后才导出,这样图像就不能导出到word,资源中先把canvas生成的图片放到img中,在隐藏canvas,然后再导出,ok
html-docx-js, 在浏览器中,将HTML文档转换为 DOCX.zip
html-docx-js, 在浏览器中,将HTML文档转换为 DOCX html-docx-js这是一个非常小的库,它是将HTML文档转换为DOCX格式的cap,它由Microsoft和onward使用。 它通过使用称为'altchunks'的特性来在浏览器中执行转换。 简而言之,它允许将内容嵌入到不同的标
最新发布 纯前端导出word文件
jszip-utils是与jszip一起使用的跨浏览器的工具库jszip是一个用于创建、读取和编辑.zip文件的JavaScript库,且API的使用也很简单。FileSaver.js 是在客户端保存文件的解决方案,非常适合需要生成文件,或者保存不应该发送到外部服务器的敏感信息的应用。
继续访问
《web课程》第二节
宋体、黑软雅黑
继续访问
Javascript cloneNode无法克隆事件
cloneNode的使用 var box = document.querySelector('.box'); // 影子克隆: 只克隆节点本身 var box1 = box.cloneNode(false); // 深度克隆: 克隆节点以及所有子节点 var box2 = box.cloneNode(true); 无法克隆非内联事件 使用原生克隆方法之克隆属性和内联事件,对于通过事件...
继续访问
用Canvas实现截取网页内容保存为图片
最近有个客户提出需求,要把报表导出成电子版,什么格式都行。 当时我想啊,转成word、Excel不可取,转成pdf可以完整保留页面样式,所以就找各种html转pdf的插件,也试了pechkin、itextsharp等等,然后就发现一个致命的问题。 我的数据是js绑定的,页面里点和线的高度也是根据参照物在页面中的高度计算的,所以要等数据加载完成后再转换,而这两个插件都没转成功。 所以就想啊,只
继续访问
html5 canvas word,使用 HTML5 Canvas 进行数据可视化
图 1 已设置样式的空白 Canvas 元素使用画布时,您将在 JavaScript 中执行大多数工作,可通过 JavaScript 利用画布绘图上下文公开的 API 来操作图面的每个像素。要获取画布绘图上下文,您需要从 DOM 获得您的 canvas 元素,然后调用该元素的 getContext 方法。var _canvas = document.getElementById('chart');...
继续访问
Python读取本地HTML中的canvas以图片形式存入Word文档
Python读取本地HTML中的canvas以图片形式存入Word文档
继续访问
jQuery wordExport实现网页导出word
最近项目上有个需求,需要把网页的内容导出word中(页面中包含echarts图和表格),通过后台实现需要重新写代码,修改起来太麻烦,于是找到了jquery的wordExport插件。 下载地址:https://github.com/Jasmine1227/jquery.wordexport.js 下载地址:https://github.com/eligrey/FileSave...
继续访问
Echart生成图片、自定义Echart、jquery-word-export 导出word文档
近期开发需求当中的导出word文档技术分享 使用技术: Echart "echarts": "^5.0.2", jquery "jquery": "^3.6.0", jquery.wordexport.js 代码详情 file-saver "file-saver": "^2.0.5", 使用 jquery.wordexport.js 导出的时候需要注意一些样式,只能写行内样式,还可以在 jquery.wordexport.js 内 style变量内写 的位置写例如: var styles = 'ta
继续访问
带样式的文本、表格、echarts图导出到word中整理思路梳理
年前一个需求扔了过来,就是把页面展示的文本、表格、echats图、等等等等,按照页面展示的样子导出到word中,还要纯前端完成。扯皮了很久之后,无奈的开始了各种网络+api的尝试。 一、首先尝试jquery+FileSaver+wordexport的方案 参考demo:wordExport 导出页面word文档格式 - 简书 可以导出页面上的文字和表格,但是样式必须写在行内,否则无效。 二、html-docx-js + raw-loader 方案 安装相关的组件 npm install -...
继续访问
html转word的原理,vue导出html、word原理
vue导出html、word原理日期:2020-06-10来源:程序思维浏览:1313次今天给大家说说如何用vue导出html静态页面和word的原理。由于导出word时,页面样式无法正常使用,因此整体页面采用table布局,仅在几个地方添加style样式,没有其余样式:/*** 当页面中有canvas时,我的做法是* 在页面中预先放置一个src为空的img标签* 点击导出时,将canvas转为b...
继续访问
【已实现】纯前端导出带echarts的word文档,内附完整实现代码
主要利用docxtemplater实现.
继续访问
前端导出word(包含图表)
前端导出word文档,包含(图表),先把canvas转成图片,再导出,还有点问题,不过功能实现了,不用通过后台,看到的大神可以留言提出改进的方法 代码如下: canvas转图片用的是html2canvas插件 Install:npm install html2canvas use:import html2canvas from ‘html2canvas’; vue 组件代码: Vue组件内的js...
继续访问
html5 canvas word,HTML5 Canvas
Canvas 转为图片我们可以使用 Canvas2image 库将 canvas 转换为图片。使用方式如下:Canvas2Image.saveAsImage(canvasObj, width, height, type)Canvas2Image.saveAsPNG(canvasObj, width, height)Canvas2Image.saveAsJPEG(canvasObj, width, ...
继续访问
echarts图表截图保存成word文件的方法
echarts图表截图保存成word文件的方法
继续访问
wordExport导出word时关于echarts图表生成图片的解决方案
一、基本介绍 wordExport是一款基于前端处理生成word的处理方式 在对应页面引入FileSaver.js和jquery.wordexport.js 使用:需生成word的部分.wordExport(文件名,文件样式) 二、echarts相关 一般我们页面存在echarts图表导出word时通常时将其先生成为一张图片,再将其导出,在图表转变图片的这个过程中,经常会出现一些问题,经常会出现导出文档中的echarts图片生成不完整的情况,要么直接是一张破图,要么是一张未加载完成的图片,针对这类问题,
继续访问
js将html转为word文档,js将html导出到word文档(含echarts图表)
需求在开发项目途中遇到了一个需求,就是将一个整个HTML界面导出到word文档,其中包含了echarts图表,经过一番折腾,终于完成了~~~(鸡肋),过程中用到了几个插件,总结了一下几个步骤,希望可以帮到大家。将插件导入项目顺序一定不能乱,顺序按照图中顺序导入,插件的源码网上搜一下很多的~~~注册echarts图表HTMl代码写一个空的div来存echarts图表js代码这里是引用的官方的例子,这...
继续访问
html画布显示PPT,【前端】有没有办法让HTML5 canvas显示/预览word/excel/powerpoint 文档?...
目前想实现类似网络文库那样的在线文档预览,但是他们使用的一般都是Flash,而HTML5 canvas可以在大多数情况下代替Flash,那么有没有办法让canvas显示/预览Office文档?如果不用Flash,目前唯一的方法是,用OpenOffice/LibreOffice或者在线服务(比如七牛里面第三方提供的文档转换服务)转换成PDF,然后用Mozilla的pdf.js来在线预览。回答其实不一...
继续访问
js导出页面中的canvas(包括但不限于echart渲染)到doc文档
问题由来 网上好多导出html到pdf的,今天来挑战下自己,试下能不能html导出到doc文档,网上有个方法是用wordexport.js这个库,但是这个库没法导出图片和canvas,那么只好重新找库,下面我们来分析! 问题分析 我们只需要html中的图片,canvas能导出来即可,其他的简单,那么我们多方查证和测试,发现只有图片能导出到doc,也就是canvas要转换成img格式,图片的url还...
继续访问
canvas转word
echarts
前端
写评论
评论
3. vue导出word模板换行
1、首先拿州哪姿出电脑,并册绝打开。
2、其次进入电脑,找到word,并打缓蚂开。
3、最后点击文件,上面vue即可导出word模板进行换行。
4. vue实现转图片打印
首先安装两个插件
npm install --save html2canvas
npm install print-js --save
1,设置打印区域ref
2,引入插件 转图片打印需要先腔稿敬安装html2Canvas和伍慎print-js
3,js
4,单纯的打印,与html2canvas不同的是,这里的printCons要设敬猜置为id而不是ref
5. 前端导出word文档(基于vue)
工作中经常会遇到根据不同数据导出文档的情况,现在源陆我们就来看一下基于 docxtemplater 来导出word文档的方法,使用起来非常便捷。
下面简单介绍一下这几个插件的功能:
下面列出几中常见雹拿顷的 docxtemplater 语法
word模板文件中语法:
word模板文件中语法:
word模板文件中语法:
word模板文件中语法:
在这里关于模板文件的路径 tempDocxPath 我们要着重说一下。
在使用的过程中应该有不少人会遇到这种报错: Can't find end of central directory : is this a zip file ?
那这到底是什么原因导致的呢?
获得模板文件的二进制内容的方法,JSZipUtils.getBinaryContent(path, option) 提供path和option两个参数。我们来看一下path,前端开发最首先想到的可能是绝对敏宏路径或者相对路径,你可能还会用到@这个符号作为根目录使用,但在这里你显然不能这么用。
6. 纯前端导出word(含echarts)
解决的是导出含有echarts的页面为word文档,需要考虑echarts图表的大小,采用的是设置角度解析器来预设置图片宽高,也考虑到多图导出问题,下面是我的解决过程
建立一个word.js,内容如下
不知道模板文件如何导入或导入错误,JszipUtils.getBinaryContent(fileDocx, function(err, res) {})时,不知道这个fileDocx模板文件放在哪里,然后出现引入路径错误
Error: Can't find end of central directory : is this a zip file?
在使用vue-cli2时,我们需要把模板文件放到static目录下
在使用vue-cli3时,我们需要把模板文件放在public目录下
然后当config中的publicPath是'./'时,直接传入文件名就好,如
JszipUtils.getBinaryContent('template.docx', function(err, res) {})
当config中的publicPath是 ‘/’时,则需要../一层层到相应位置,要特别注意省去public目录,如
JszipUtils.getBinaryContent('../../template.docx', function(err, res) {})
我的环境是vue-cli3,然后再public目录下建立word文件夹存放模板文件weektmp.docx
7. vue怎么导出word文档
使用vue.js构造modal组件的方法是使用 v-model 指令:
v-model 指令在表单控件元素上创建双向数据绑定。根据控件类型它自动选取正确的方法更新元素。
比如,多个勾选框,绑定到同一个数组:
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<br>
<span>Checked names: {{ checkedNames | json }}</span>
new Vue({
el: '...',
data: {
checkedNames: []
}
})
8. vue2中导出带有图片的excel表格
1、安装插件碧派
2、新建一个excel.js文件,写出你需要导缓液出的数据
3、在需要导出的vue文悔哪贺件中引入
4、导出