js通过html2canvas,jspdf,canvg来对网页进行截图生成pdf

2023-10-25 07:20

本文主要是介绍js通过html2canvas,jspdf,canvg来对网页进行截图生成pdf,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过html2canvas,jspdf就能够生成截图以及pdf,但是如果对图表(svg)就需要canvg来转换svg生成为图片,再插入到pdf里。

1.html2canvas用法:

首先需要引入这两个文件,最新的可以去git下载

示列:
function down2(){var str = $('#example-2');  
//console.log(str);  
html2canvas([str.get(0)], {scale: 1,onrendered: function (canvas) {  var image = canvas.toDataURL("image/png");  console.log(image);var pHtml = "<img src="+image+" />";  $('#pic').html(pHtml);  }  
});  }
<body><!-- `greet` 是在下面定义的方法名 --><button v-on:click="greet">Greet</button><button οnclick="down()">pdf</button><button οnclick="down2()">ok</button><button οnclick="exportPDF()">export</button><button οnclick="showQRCode()">showQRCode</button><div id="example-2"><div id="chart-container">FusionCharts will render here</div><div id="chart-container2">FusionCharts will render here</div><div id="chart-container3">FusionCharts will render here</div><div id="chart-container4">FusionCharts will render here</div></div><div id="all">
<canvas id='myCanvas01' /></canvas>
</div><div id="pic">
图片
</div>
<img src="" />
</body>

这就是一个最简单的截图示列。

2.jspdf生成pdf

需要引入jspdf.js

//l:横向, p:纵向; 单位: in:英寸,mm毫米;px:像素;  画布大小:默认是A4纸大小  var pdf = new jsPDF('p', 'mm', [230, 250]); //230 x 250  //添加字,以及字体大小设置pdf.setFontSize(40);pdf.text(35, 25, "乡村教师基本情况分析-现状");//添加图片pdf.addImage(img, 'JPEG', 20, 50, 200 , 200); //第3、4个参数是位置(x,y),距离左边20mm,上面50mm第5、6个参数是宽,高,宽200mm,高200mm    //保存pdf,名字是:分析报告.pdfpdf.save('分析报告.pdf');

其他参考资料:https://www.cnblogs.com/new_2050/p/8097867.html

3.通过canvg转换svg生成图片

需要引入以下文件:

$('#myCanvas01').show();//获取svgvar svgHtml = document.getElementById('chartobject-1').innerHTML;console.log(svgHtml)//转换canvg('myCanvas01',svgHtml);//生成图片$('#all').html2canvas({},function(imgData,w,h){$('#myCanvas01').hide();var pHtml = "<img src="+imgData+" />";  $('#pic').html(pHtml);  });
<body><!-- `greet` 是在下面定义的方法名 --><button v-on:click="greet">Greet</button><button οnclick="down()">pdf</button><button οnclick="down2()">ok</button><button οnclick="exportPDF()">export</button><button οnclick="showQRCode()">showQRCode</button><div id="example-2"><div id="chart-container">FusionCharts will render here</div><div id="chart-container2">FusionCharts will render here</div><div id="chart-container3">FusionCharts will render here</div><div id="chart-container4">FusionCharts will render here</div></div><div id="all">
<canvas id='myCanvas01' /></canvas>
</div><div id="pic">
图片
</div>
<img src="" />
</body>

2019.10.30更新

最近在GitHub上发现一个与html2canvas类似功能的dom转图片工具dom-to-image,鉴于二者比较:

html2canvas截图花费时长较多,且有cancas的dom节点可能出现截图不完整,因此推荐采用dom-to-image,二者用法类似。

这篇关于js通过html2canvas,jspdf,canvg来对网页进行截图生成pdf的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280954

相关文章

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放