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

相关文章

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Pandas进行周期与时间戳转换的方法

《Pandas进行周期与时间戳转换的方法》本教程将深入讲解如何在pandas中使用to_period()和to_timestamp()方法,完成时间戳与周期之间的转换,并结合实际应用场景展示这些方法的... 目录to_period() 时间戳转周期基本操作应用示例to_timestamp() 周期转时间戳基

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f