Js:使用 html2canvas+jsPDF将html页面变成pdf文件(纯前端)

html2canvas+jspdf:通过js将html页面转pdf Html To Pdf 最近项目中有将报告页面转成pdf的需求,为了方便,想在js中转化,然后找了一下,发现html2canvas好像满足这个需求,尝试了一下,基本上能实现html转pdf。 <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.4/jspdf.debug.js">... 阅读详情

一、html2canvas – 将dom变成图片:

下载或者安装html2canvas:官网

1、将文档放在本地,用原生js进行引用和使用。

① 新建一个名为 html2canvas.min.js 的文件,并且将线上的内容进行复制。
② 引入 js 文件:

// js直接引入 -- 未尝试
<script type="text/javascript" src="XXX/html2canvas.js"></script>


// layui使用
// 首先在html2canvas.js文件中添加exports
layui.define([],function(exports){
   
   
    // 复制的内容...
    exports('html2canvas',html2canvas);
})
// 其次进行自定义插件的引入
layui.define(['appsmenu'],function (exports) {
   
   
	exports("conf", {
   
   
	    // 第三方扩展
		extend: {
   
   
			// 引入html转图片的插件
			html2canvas: "lay/extends/html2canvas.min",
		}
	}
})
2、使用 npm 进行安装使用:

待续。。。

二、jsPDF – 将图片变成pdf:

下载或者安装jsPDF :

  • github
  • 中文网站
  • CDN
    • Jspdf.es.js:ES 2015 模块格式。
    • Jspdf.umd.js:UMD模块格式,用于 AMD 或脚本标签加载。
    • Jspdf.polyfills.js:Internet Explorer等旧浏览器所需的兼容文件。
1、将文档放在本地,用原生js进行引用和使用。

① 新建一个名为 jsPDF.min.js 的文件,并且将线上(我找到的都不能用)或者资源 的内容进行复制。
② 引入 js 文件:

// js直接引入 -- 未尝试
<script type="text/javascript" src="XXX/jsPDF.js"></script>
// CDN引入 -- 未尝试
<script type="text/javascript" src="https://cdn.staticfile.org/jspdf/2.5.1/jspdf.umd.min.js"></script>


// layui使用
// 首先在jsPDF.min.js文件中添加exports
layui.define([],function(exports){
   
   
    exports('jsPDF',jsPDF);
})
// 其次进行自定义插件的引入
layui.define(['appsmenu'],function (exports) {
   
   
	exports("conf", {
   
   
	    // 第三方扩展
		extend: {
   
   
			// 引入图片转pdf的插件
			jsPDF: "lay/extends/jsPDF.min",
		}
	}
})
2、使用 npm 进行安装使用:

待续。。。

三、普通使用(html2canvas+jsPDF):

1、 layui 或者原生js使用:
// html:
<div id="box">
    <button id="btn">下载为pdf</button>
    内容....
</div>
// js:
// layui引入:
layui.define(['html2canvas', 'jsPDF'], function (exports) {
   
   
	var html2canvas = layui.html2canvas; // 引入html转图片
	var jsPDF = layui.jsPDF; // 引入图片转pdf
	// 初始化
	var init = function() {
   
   
		// 点击下载按钮
		document.getElementById("btn").onclick=function(){
   
   
				html2canvas(document.getElementById("box"),{
   
   
					allowTaint: false, // 是否允许跨域图像。会污染画布,导致无法使用canvas.toDataURL 方法
					backgroundColor: '#fff', // 画布背景色(如果未在DOM中指定)。设置null为透明
					useCORS: true, // 是否尝试使用CORS从服务器加载图像
					dpi: 192, // 导出pdf清晰度
					scale: window.devicePixelRatio * 3, // 用于渲染的比例。默认为浏览器设备像素比率。
				}).then(canvas => {
   
   
					// html生成图片的数据
					var imageData = canvas.toDataURL('image/jpeg', 1.0);
					// 原本的html页面的宽高
					const canvasWidth = canvas.width;
					const canvasHeight = canvas.height;
					// 当分辨率是72像素/英寸时,A4纸像素长宽分别是842×595
					var a4Width = 595; // A4 宽度
					var a4Height = (595 / canvasWidth) * canvasHeight; // A4总高度
					// 生成pdf的一页显示html的高度
					let pageHeight = canvasWidth / 595 * 842;
					// 未生成pdf的html页面高度,最初是整体的高度
					let restHeight = canvasHeight;
					// 页面上下偏移的大小
					var position = 0;
					/**
					 * 参数1:方向:l:横向  p:纵向
					 * 参数2:单位:"pt"、"mm"、"cm"、"m"、"in"、"px"
					 * 参数3:格式:默认为a4
					*/
					var pdf = new jsPDF('p', 'pt', 'a4');
					// 当内容未超过pdf一页显示的范围,无需分页
					if (restHeight < pageHeight) {
   
   
						/**
						 * 将图像添加到PDF中
			
纯前端HTML转PDF下载(html2canvas + jsPdf 实现) 目录纯前端HTML转PDF下载(html2canvas + jsPdf 实现)实现过程安装好html2canvas和jspdfhtml2canvas参数jspdf参数应用几个应用的点 纯前端HTML转PDF下载(html2canvas + jsPdf 实现) 最近的一个需求,需要将页面的内容转为PDF并且下载,通过搜索终于实现了想要的效果,以下是一些笔记内容。 实现过程 我们会用到html2Canvas和JsPDF去实现。 1.html2Canvas会将html页面截屏并转为canvas 2.然后利用JsP 阅读详情

相关推荐

html2canvas.min.js

html2canvas.min.js的源码,方便大家下载

数字取证双雄:Passware Kit Forensic 与 ElcomSoft 在实战场景下的能力边界解析

本文深入解析了Passware Kit Forensic与ElcomSoft在数字取证实战中的能力边界,涵盖Windows、macOS、iOS和Android系统的密码恢复与数据提取技术。通过真实案例对比两款工具在硬件加速、分布式计算及云取证等场景下的表现差异,为取证专家提供关键决策参考。特别探讨了密码恢复软件在加密设备突破中的核心作用。

weixin_30342209的博客 394

MacX DVD Ripper Pro for Mac(DVD解码器) 6.2.120190416免激活版

只需要5分钟即可转档一张DVD光碟!并允许我们在编码之前预览、编辑、裁剪、修剪或扩展视频。第一款也是唯一一款能够支持DVD到MP4,H.264,MOV,FLV,MPEG4等所有格式DVD(新DVD,99-标题DVD,损坏和无法播放的DVD)和翻录DVD / ISO映像的工具,AVI,QT,MP3等。借助350多种预设配置文件MacX DVD Ripper Pro for Mac(DVD解码器) 6...

llhf688的博客 882

延迟相乘叠加求和 DMAS (Field II 仿真代码)

(Delay Multiply and Sum, DMAS)算法,最初是为雷达微波系统设计的,研究者们对 DMAS 波束合成方法进行了修改,并应用超声成像。结果表明,DMAS 波束合成在模拟和实验中的表现都优于传统的延时叠加(Delay and Sum, DAS),这种新方法带来的主要改进是对比度分辨率明显提高(即主瓣和侧瓣更窄),从而增加了动态范围,提高了 B 型超声图像质量。与传统 DAS 相似,DMAS 算法通过对来自超声换能器阵元的信号应用几何计算延迟来聚焦接收到的波束。

weixin_38452364的博客 3076

从技术债红线到系统治理:透视 SAP Clean Core 中的 Level D

SAP推出的Clean Core分级体系将扩展风险划分为A到D四个等级,其中Level D代表最高风险类别,涉及直接修改标准代码、隐式增强、使用noAPI对象等不被推荐的做法。这些做法虽然短期见效快,但会带来升级冲突、数据完整性风险等长期问题。SAP强调治理重点不是完全消除经典ABAP,而是优先清理Level D对象,逐步向稳定接口迁移。典型案例显示,依赖内部细节的扩展往往在系统升级或云迁移时集中暴露出问题。企业应通过工具链持续监控Level D占比,将其纳入技术债管理范畴。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1054

别再用LabelImg了!我手搓了一个C#“一站式”YOLO工具箱,标注训练推理全搞定

这个工具箱目前已经在两个小型产线项目中试用,反馈非常好。效率提升:原本需要 2 天完成的“数据准备 - 训练 - 验证”循环,现在缩短到了 2 小时。门槛降低:产线技术员经过 10 分钟培训,就能独立完成新产品的模型迭代。当然,它还有改进空间未来计划集成主动学习功能:自动筛选出置信度低的图片,推荐优先标注。支持多模型管理:方便在不同产品型号间快速切换。增加PLC 通信模块:直接在推理界面配置 IO 信号,实现真正的软硬联动。最后想说工具的本质是服务于人。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 426

【Leetcode】269.火星词典(Hard)

应用拓扑排序

明朗晨光的专栏 757

2023华为od机试C卷【最富裕的小家庭】Java&Go 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 1888

【保姆级】联想服务器 Ubuntu 装机:RAID 0/1/5/10 从原理到配置(新手也能一次成)

联想服务器RAID配置指南:Ubuntu系统适配方案 摘要: 联想服务器采用LSI MegaRAID硬件控制器,支持RAID0/1/10/5四种阵列模式。RAID0提供最高性能但无冗余,适合临时数据;RAID1完全镜像确保数据安全,推荐用于系统盘;RAID10兼顾性能与冗余,适合数据库等高要求场景;RAID5平衡容量与成本,适用于文件服务器。配置可通过本地BIOS(Ctrl+R)或XCC远程管理完成,Ubuntu安装时可自动识别虚拟磁盘。注意事项包括:使用同型号硬盘、监控重建进度、避免SSD与机械盘混用等。

2501_93651177的博客 482

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: Vue 编译报错:BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
下一篇: vue2中使用.env文件
ᥬ 小月亮
博客等级 码龄9年 204粉丝 166原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ᥬ 小月亮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值