npm install html2canvas
npm install jspdf
// 引入
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.28
const a4Height = 841.89
// 可以上传后端或者直接显示
// 用于将canvas对象转换为base64位编码
var context = canvas.getContext('2d')
context.mozImageSmoothingEnabled = false
context.webkitImageSmoothingEnabled = false
context.msImageSmoothingEnabled = false
context.imageSmoothingEnabled = false
let position = 0
// 生成的画布元素宽高
const canvasWidth = canvas.width
const canvasHeight = canvas.height
// 页面等比例缩放后宽高
const pageWidth = a4Width
const 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 = pageHeight
if (height < a4Height) {
// 第三,四个参数是图片偏移位置,第五六个参数是生成的图片的宽高
pdf.addImage(jpeg, 'JPEG', 5, 5, pageWidth, pageHeight) // 从图片顶部开始打印
} else {
while (height > 0) {
pdf.addImage(jpeg, 'JPEG', 0, position, pageWidth, pageHeight)
height -= a4Height
position -= a4Height
// 避免添加空白页
if (height > 0) {
pdf.addPage()
}
}
}
pdf.save(`${
downloadName}.pdf`)
})
}
相关资料记录:
https://juejin.cn/post/7230757380820533303
文章浏览阅读429次。报错信息如下:[Code: 1093, SQL State: HY000] You can’t specify target table ‘bd_bankaccbas’ for update in FROM clause译文:不能在FROM子句中指定目标表‘bd_bankaccbas’进行更新。有问题的SQL语句如下,它在oracle数据库的语法是支持的,但是mysql就不支持直接这么写:from和update都是同一张表。<span style="col..._you can't specify target table 't_bill' for update in from clause
文章浏览阅读421次。为什么80%的码农都做不了架构师?>>> ..._@jmslistener rabitmq
文章浏览阅读414次。转载:https://mp.weixin.qq.com/s/VQb_mAFbStQXurtByBa0oQ_测试版cpu是怎么流出的?
文章浏览阅读1.5w次,点赞91次,收藏384次。Nginx - 学相伴分享人:秦疆(遇见狂神说)公司产品出现瓶颈?我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户。但是慢慢的,使用我们平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了。于是我们横向扩展,又增加了服务器。这个时候几个项目启动在不同的服务器上,用户要访问,就需要增加一个代理服务器了,通过代理服务器来帮我们转发和处理请求。我们希望这个代理服务器可以帮助我们接_遇见狂神说 nginx
文章浏览阅读474次。一种基于北斗的低功耗双向非实时通信方法【技术领域】[0001]本发明涉及一种基于北斗的低功耗双向非实时通信方法,属于北斗系统通信技术领域。【背景技术】[0002]北斗卫星系统具备的短报文通信功能在水文、气象、海洋、林业领域的遥测系统已经广泛应用。但鉴于目前北斗通讯终端的功耗较大,发信频度受限的问题,这些遥测系统在应用北斗卫星作为数据传输载体时,一般只实现了野外遥测站向数据采集中心站的单向传输功能,..._北斗双向通信
文章浏览阅读981次,点赞2次,收藏2次。windows域名映射_windows域名映射文件
文章浏览阅读171次。1 安装在官网下载对应版本, 如果要破解,请找到破解用 charles.jar(charles用java写的),替换掉安装目录中 jar 文件2 取得管理权限下载证书pc移动端证书help -> proxy ssl -> 选择对应的选项,安装好选项,授权永久信任,再输入当前用户密,最后输入 grant 用户权限密码(如果自己的电脑无需)3 使用charles 配置..._macbook charles method connection
文章浏览阅读7.3k次,点赞30次,收藏133次。2023最新Android Studio安装、卸载、解决c盘占用教程,从安装到hello world运行_build configuration language
文章浏览阅读245次。摘要:这项工作解决了一个具有挑战性的问题,即从单目视频中估计完整的三维人体形状和姿态。由于现实世界的三维网格标记数据集有限,目前大多数的三维人体形状重建方法只关注单一的RGB图像,丢失了所有的时间信息。与此相反,我们提出了一种临时细化的图形网,包括图像级模块和视频级模块,来解决这一问题。imagelevel模块是用于从图像中进行人体形状和姿态估计的图U-Nets,其中图卷积神经网络(Graph CNN)有助于相邻顶点的信息交流,U-Nets架构扩大了每个顶点的接受域,融合了高层和低层特征。videolev_temporally refined graph u-nets for human shape and pose estimation from mon
文章浏览阅读2.0k次。注意:Oracle安装不能用root用户安装,必须新建用户安装1、 sqlplus命令不识别问题(bash :sqlplus command not found)当你首次安装oracle后,也许会出现这种情况,第一次或许有点棘手,不知道如何改怎么办。这时不用着急,想想Linux里面的命令是如何运行的,如adduser等,我们发现是因为在/bin/文件夹下有这样的一个文件adduser,于是我们也想..._ubuntu中oracle提示sqlpus: command not found
文章浏览阅读2.6k次。elasticsearch-setup-passwords interactive[root@node-zwf ~]# su elasticsearch[elasticsearch@node-zwf root]$ cd /home/elasticsearch/elasticsearch-7.8.0/[elasticsearch@node-zwf elasticsearch-7.8.0]$ elasticsearch-setup-passwords interactiveba..._bash: elasticsearch-setup-passwords: command not found
文章浏览阅读922次。第一条为了进一步加强学校涉密计算机和涉密移动存储介质(移动硬盘、U盘、软盘、光盘、存储卡等)的安全保密工作,维护国家安全和利益,维护学校稳定和发展,结合我校工作实际,特制定本规定。第二条学校保密委员会负责全校涉密计算机、移动存储介质保密管理的指导、协调和监督工作。保密技术防范和管理工作由学校网络中心负责。第三条涉密计算机的日常管理制度(一)涉密计算机不得直接或间接接入国际互联网、校园网和其他公共信..._大学 涉密计算机安全保密策略