前端实现将多个页面导出为pdf(分页)

一、需要用到两个插件,需要安装

vue框架中实现导出pdf

javascript 复制代码
npm install --save html2canvas       // Dom转canvas再转image
npm install jspdf --save             // image转pdf

二、实现方法

分别获取每个页面的DOM元素,并转为canvas再转image,通过jsPDF插件把图片添加进来,再实现导出即可

jsPDF提供了一个很有用的API,addPage(),我们可以通过pdf.addPage(),来添加一页pdf,然后通过pdf.addImage(...),将图片赋予这页pdf来显示。

三、完整代码

javascript 复制代码
<template>
  <div class="main">
    <el-button @click="download">下载</el-button>
    
    <div id="page1">
      <img src="@/assets/images/page1.png" alt="page1" />
    </div>
    <div id="page2">
      <img src="@/assets/images/page2.png" alt="page2" />
    </div>
    <div id="page3">
      <img src="@/assets/images/page3.png" alt="page3" />
    </div>
  </div>
</template>

<script setup lang="ts">
import JsPDF from "jspdf";
import html2canvas from "html2canvas";

const download = () => {
  let pageDom1 = document.getElementById("page1") as HTMLElement;
  let pageDom2 = document.getElementById("page2") as HTMLElement;
  let pageDom3 = document.getElementById("page3") as HTMLElement;

  let listDom = [html2canvas(pageDom1), html2canvas(pageDom2), html2canvas(pageDom3)]; // dom转canvas

  Promise.all(listDom).then(canvasList => {
    let pdf = new JsPDF("p", "pt", "a4");
    canvasList.forEach((canvas, index) => {
      let imgData = canvas.toDataURL("image/png"); // canvas转图片
      pdf.addImage(imgData, "PNG", 0, 0, 595, 842); // 595  842 a4纸宽高
      if (index < canvasList.length - 1) {
        pdf.addPage(); // 添加新页面
      }
    });
    pdf.save("download.pdf"); // 导出
    window.history.go(-1); // 关闭当前页面
  });
};
</script>

<style scoped lang="scss">
.main {
  width: 595px;
  margin: 0 auto;
  img {
    display: block;
    width: 595px;
    height: 842px;
  }
}
</style>
相关推荐
是梦终空12 小时前
计算机毕业设计252—基于Java+Springboot+vue3+协同过滤推荐算法的农产品销售系统(源代码+数据库+2万字论文)
java·spring boot·vue·毕业设计·源代码·协同过滤算法·农产品销售系统
Beginner x_u17 小时前
从组件点击事件到业务统一入口:一次前端操作链的完整解耦实践
前端·javascript·vue·业务封装
E_ICEBLUE18 小时前
PDF vs PDF/A:区别、场景与常用转换方法(2025 全面解读)
python·pdf
TextIn智能文档云平台19 小时前
从散乱资料到智能知识库:基于TextIn与Coze的RAG实战
人工智能·pdf·知识库·rag·coze·文档解析
苏打水com21 小时前
第十篇:Day28-30 工程化优化与部署——从“能跑”到“好用”(对标职场“项目上线”需求)
前端·css·vue·html·js
m0_5649149221 小时前
图片怎么快速转为PDF?PDF怎么快速转为图片?
pdf
武哥聊编程1 天前
【从0带做】基于Springboot3+Vue3的生态养殖管理系统
java·学习·vue·毕业设计·springboot
2501_930707781 天前
如何使用C#代码将多张图片整合为一个PDF文档
开发语言·pdf·c#
拓端研究室1 天前
赢战2025电商新趋势下的增长策略报告:平台格局、跨境趋势、大促消费|附600+份报告PDF、数据、可视化模板汇总下载
大数据·pdf
xiaoxue..1 天前
从 “手动搬砖“ 到 “自动施法“:界面开发的三次 “渡劫“ 升级记
前端·前端框架·vue