uniapp使用html2canvas实现PCWeb或手机H5截图

uniapp使用html2canvas实现PCWeb或手机H5截图

1、导入html2canvas

npm install --save html2canvas

2、所需页面引入

import html2canvas from 'html2canvas';

3、JS部分代码

let dom = document.querySelector('#page'); // 获取dom元素
html2canvas(dom, {
	width: dom.clientWidth, //dom 原始宽度
	height: dom.clientHeight,
	scrollY: 0, // html2canvas默认绘制视图内的页面,需要把scrollY,scrollX设置为0
	scrollX: 0,
	useCORS: true //支持跨域,但好像没什么用
}).then(canvas => {
	// 将生产的canvas转为base64图片
	let base64 = canvas.toDataURL('image/png');
	// 将base64转换为图片保存
	if (window.navigator.msSaveOrOpenBlob) {
		let bstr = atob(base64.split(',')[1]);
		let n = bstr.length;
		let u8arr = new Uint8Array(n);
		while (n--) {
			u8arr[n] = bstr.charCodeAt(n);
		}
		let blob = new Blob([u8arr]);
		window.navigator.msSaveOrOpenBlob(blob, 'pigeons-download' + '.' + 'png');
	} else {
		// 这里就按照chrome等新版浏览器来处理
		const a = document.createElement('a');
		a.href = base64;
		a.setAttribute('download', 'pigeons-download');
		a.click();
	}
});

4、html部分代码

<template>
	<view class="body">
		<top-navigation :isBack="true">
			<template #center-slot>
				<view class="title">报名详情</view>
			</template>
			<!-- #ifdef APP-PLUS -->
			<template #right-slot>
				<view class="title" @tap="clickWx">分享</view>
			</template>
			<!-- #endif -->
		</top-navigation>
		<view class="content" id="page">
			<view class="main">
				<view style="margin-bottom: 30rpx;">
					<view>比赛公棚:{{registrationDetails.bob_name}}</view>
					<view>比赛名称:{{registrationDetails.match_name}}</view>
					<view>报名时间开始时间:{{registrationDetails.sign_end}}</view>
					<view>报名时间结束时间:{{registrationDetails.sign_start}}</view>
					<view style="width: 650rpx;">
						比赛说明:
						<text class="instructions">{{registrationDetails.match_content}}</text>
					</view>
					<view>报名会员:{{registrationDetails.name}}</view>
					<view>投注金额:¥{{registrationDetails.total_money}}</view>
					<view>支付状态:{{registrationDetails.is_paid == 0 ? '待付款' : '已付款'}}</view>
				</view>
			</view>
		</view>
		<view class="bottom-btn">
			<view class="btn-box" @tap="savePic">
				保存到相册
			</view>
			<view class="btn-box" style="border-top: none;" @tap="toMyRegistrationDetail">查看订单记录</view>
		</view>
	</view>
</template>

5、效果截图
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值