在开发过程中,难免遇到将网页转换为ppt并下载下来演示的需求。尤其是在一些报告类型的网站,数据后台网站中,这类需求会更多。
为了实现这个功能,我们需要两个js库来帮忙,一个是PptxGenJS,另外一个是html2canvas
js生成ppt
直接使用js生成ppt
条件允许的情况下,直接使用js生成ppt效果是最好的,生成ppt后可以重新编辑,效果也是最好。具体方法可以看我之前的博客使用js导出ppt之PptxGenJS中文文档。将网页转换成ppt
- 将网页转换成ppt也有两种方式,第一种是按照用table写页面,然后进行转换。这个方式对样式的限制比较多,如果一开始没有按照要求开发,代码可能需要重构。具体方法可以看我之前的博客使用js导出ppt之PptxGenJS中文文档。
- 另外一个方式是将现有的网页生成截图,然后将一整张图片插入ppt中。因为我们的网页之前已经写好了,所以今天主要介绍的也是这个方法。
网页转换成ppt
在将网页转换为ppt的过程中,首先需要将页面转换成图片,我用的是dom-to-image,具体代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20const node = document.getElementById(id);
if (node) {
domtoimage.toPng(node, {
quality: 1,
height: node.offsetHeight * scale,
style: style,
width: node.offsetWidth * scale
}).then((dataUrl) => {
const pptx = new PptxGenJS()
const imgData = dataUrl.replace('data:', '')
pptx.addNewSlide().addImage({ data: imgData, x: 0, y: 0, w: 10, h: 5.625, sizing: {
type: 'crop',
w: 10,
h: 5.625
} })
pptx.save('testDemo')
}).catch(function (error) {
alert('发生错误')
})
}
这样,一个单页的ppt就生成了。在实际的生产环境中,生成单页ppt的需求可能性很小,所以上面的代码需要改动一下
1 | async function makePpt(list) { |
这样,网页转ppt就完成了。