html2canvas+JsPDF实现单或多图片导出PDF

import html2canvas from 'html2canvas';
import JsPDF from 'jspdf';

/**
 * @param  ele          要生成 pdf 的DOM元素(容器)
 * @param  padfName     PDF文件生成后的文件名字
 * @width  pdfW					pdf文件夹大小
 * @height pdfH					pdf文件大小
 * */

const downloadPDF = async (ele, pdfName, pdfW, pdfH) => {
	let eles = Array.isArray(ele) ? ele : [ele];
	console.log( pdfW, pdfH);
	let eleW = ele.offsetWidth; // 获得该容器的宽
	let eleH = ele.offsetHeight; // 获得该容器的高
  
  // 创建jspdf
  let pdf = new JsPDF( {
		orientation: 'p',
		unit: 'mm',
		format: [pdfW, pdfH],
	});

	// html2canvas配置
	const style = {
		taintTest: false,
		dpi: 300, 							// 将分辨率提高到特定的DPI 提高四倍
		allowTaint: true, 			// 允许 canvas 污染, allowTaint参数要去掉,否则是无法通过toDataURL导出canvas数据的
		useCORS: true, 					// 允许canvas画布内 可以跨域请求外部链接图片, 允许跨域请求。
		backgroundColor: null, 	// 画布背景颜色 null为透明
	}
	
    // 循环所有的 img 元素
	for (let i = 0; i < eles.length; i++) {
		const ele = eles[i];
		// 使用 html2canvas 将 img 元素转换为 canvas 对象
		const canvas = await html2canvas(ele, style);
		// 将 canvas 添加到 PDF 文档中
		pdf.addImage(
			canvas.toDataURL('image/png'),
		  'PNG',
		  0,
		  0,
		  pdf.internal.pageSize.width,
		  pdf.internal.pageSize.height
		)
		// 如果不是最后一个元素,则添加一页 PDF 文档
		if (i !== eles.length-1) pdf.addPage();
	}
	
    // 生成pdf
	pdf.save(pdfName);
	
	// 将 PDF 导出为 base64 数据
	const pdfBase64 = pdf.output('datauristring');
	return pdfBase64;

};



export default {
	downloadPDF,
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ZiWie丶ZHANG

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

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

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

打赏作者

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

抵扣说明:

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

余额充值