利用html2canvas + jspdf将页面内容生成pdf并且下载

2023-10-07 13:30

本文主要是介绍利用html2canvas + jspdf将页面内容生成pdf并且下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

依赖安装

npm install html2canvas
npm install jspdf

函数调用以及实现(vue)

// 引入
import html2canvas from 'html2canvas'
import JsPDF from 'jspdf'const previewEl = document.getElementById('targetDom')
// 函数调用
this.savePdf(previewEl).then(res => {
})// 函数实现savePdf(html2canvasDom, downloadName = '下载文件') {return html2canvas(html2canvasDom, {// width: 1714,// height: 200,backgroundColor: '#fff',useCORS: true, // 解决文件跨域问题scale: window.devicePixelRatio * 2, // 按比例增加分辨率dpi: 300}).then(canvas => {const a4Width = 595.28const a4Height = 841.89// 可以上传后端或者直接显示// 用于将canvas对象转换为base64位编码var context = canvas.getContext('2d')context.mozImageSmoothingEnabled = falsecontext.webkitImageSmoothingEnabled = falsecontext.msImageSmoothingEnabled = falsecontext.imageSmoothingEnabled = falselet position = 0// 生成的画布元素宽高const canvasWidth = canvas.widthconst canvasHeight = canvas.height// 页面等比例缩放后宽高const pageWidth = a4Widthconst pageHeight = (a4Width / canvasWidth) * canvasHeight// 返回图片dataURL,参数:图片格式和清晰度(0-1)const jpeg = canvas.toDataURL('image/jpeg', 1.0)// 第一个参数是纵横向,第二个参数是单位,第三个参数是生成pdf的大小,自定义pdf大小的话可以传入一个数组,eg:[164.14, 424.5]// 方向默认竖直,尺寸ponits,格式a4 [595.28,841.89]// const pdf = new JsPDF('', 'pt', [595.28, 841.89]/* [a4Width, a4Height] */)const pdf = new JsPDF('', 'pt', [605.28, 841.89]/* [a4Width, a4Height] */)// const pdf = new JsPDF('', 'pt', [this.contentWidth, 841.89]/* [a4Width, a4Height] */)// const pdf = new JsPDF('', 'pt', 'a4'/* [a4Width, a4Height] */)// 有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)// 当内容未超过pdf一页显示的范围,无需分页let height = pageHeightif (height < a4Height) {// 第三,四个参数是图片偏移位置,第五六个参数是生成的图片的宽高pdf.addImage(jpeg, 'JPEG', 5, 5, pageWidth, pageHeight) // 从图片顶部开始打印} else {while (height > 0) {pdf.addImage(jpeg, 'JPEG', 0, position, pageWidth, pageHeight)height -= a4Heightposition -= a4Height// 避免添加空白页if (height > 0) {pdf.addPage()}}}pdf.save(`${downloadName}.pdf`)})}

相关资料记录:
https://juejin.cn/post/7230757380820533303

这篇关于利用html2canvas + jspdf将页面内容生成pdf并且下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

详解如何在React中执行条件渲染

《详解如何在React中执行条件渲染》在现代Web开发中,React作为一种流行的JavaScript库,为开发者提供了一种高效构建用户界面的方式,条件渲染是React中的一个关键概念,本文将深入探讨... 目录引言什么是条件渲染?基础示例使用逻辑与运算符(&&)使用条件语句列表中的条件渲染总结引言在现代

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

Java实现Excel与HTML互转

《Java实现Excel与HTML互转》Excel是一种电子表格格式,而HTM则是一种用于创建网页的标记语言,虽然两者在用途上存在差异,但有时我们需要将数据从一种格式转换为另一种格式,下面我们就来看看... Excel是一种电子表格格式,广泛用于数据处理和分析,而HTM则是一种用于创建网页的标记语言。虽然两

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

基于C#实现PDF文件合并工具

《基于C#实现PDF文件合并工具》这篇文章主要为大家详细介绍了如何基于C#实现一个简单的PDF文件合并工具,文中的示例代码简洁易懂,有需要的小伙伴可以跟随小编一起学习一下... 界面主要用于发票PDF文件的合并。经常出差要报销的很有用。代码using System;using System.Col

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后