本次案例是vue的点击生成pdf文件和png格式的图片
一、生成pdf文件案例
看代码之前,我们肯定得需要看看,效果图是什么的啦,这样子才能先看看自己想要实现的效果是不是这样子的!上效果图嘿嘿嘿~
A、实现的效果图
这是页面,点击生成pdf则可以生成文件
这就是效果图啦,如果是你想要的效果,那我们一起来look一下详细代码~
B、代码
(1)首先,我们要引入依赖
npm install html2canvas jspdf
(2)代码
<template> <div> <h1>页面标题</h1> <p>这是一些页面内容...</p> <button @click="generatePDF">生成PDF</button> </div> </template> <script> // 引入依赖import html2canvas from 'html2canvas'; import jsPDF from 'jspdf'; export default { methods: { async generatePDF() { try { // 将需要生成PDF的DOM元素转换为Canvas const element = document.querySelector('div'); // 这里选择整个div作为示例 //也可以上面定义一个id,然后document.getElementById('id'); const canvas = await html2canvas(element); // 使用jsPDF将Canvas转换成PDF const imgData = canvas.toDataURL('image/png'); //jsPDF('p', 'mm', 'a4') 第一个参数p(portrait)意思是纵向,横向为l(landscape)//第二个参数是单位,mm是毫米,第三个是文档页面的大小const pdf = new jsPDF('p', 'mm', 'a4'); // A4大小,纵向//定义pdf的宽高 const imgWidth = pdf.internal.pageSize.getWidth(); const imgHeight = canvas.height * imgWidth / canvas.width; pdf.addImage(imgData, 'PNG', 0, 0, imgWidth, imgHeight); pdf.save('download.pdf'); // 保存PDF } catch (error) { console.error('生成PDF失败:', error); } }, }, }; </script> <style> /* 你的样式 */ </style>
这些代码就可以实现基本的,点击按钮,生成pdf文件啦~
二、生成png图片的案例
老样子,来看看效果图
A、效果图
B、代码
(1)引入依赖
npm install html2canvas
(2)案例代码
<template> <div> <!-- 这里是你想要转换成图片的HTML内容 --> <div id="capture" style="padding: 10px; background: #f5f5f5;"> <h4>这是标题</h4> <p>这是一些文本内容...</p> </div> <button @click="capture">生成图片并保存</button> </div>
</template> <script>
import html2canvas from 'html2canvas'; export default { methods: { async capture() { try { // 捕获指定元素的截图 const canvas = await html2canvas(document.querySelector('#capture')); // 将canvas转换成图片URL const image = canvas.toDataURL("image/png"); // 创建一个链接元素用于下载 const link = document.createElement('a'); link.download = 'page-snapshot.png'; // 指定下载文件的名称 link.href = image; link.click(); // 模拟点击进行下载 // 清理 link.remove(); } catch (error) { console.error('截图失败:', error); } } }
}
</script> <style scoped>
/* 你的样式 */
</style>