Vue——使用html2pdf插件,下载pdf文档到本地

1.安装
html2pdf官网地址

javascript 复制代码
npm install html2pdf.js
pnpm add html2pdf.js

2.引入

javascript 复制代码
import html2pdf from 'html2pdf.js'

3.我的项目是使用的原生avascript,table tr td画表格然后通过html2pdf插件下载pdf。

问题:下载pdf时内容被截断,如下图所示:


javascript 复制代码
出现上述问题,pdf分页时多了边框原因是<table border="1"></table>写了边框。
javascript 复制代码
解决方案:去掉table 上的边框border,给每一行的td 上写上边框。

代码如下:

<el-button type="success" style="margin-bottom: 10px" @click="downClick"
        >点击下载</el-button
      >
      
<div ref="fileContent">
        <table
          width="95%"
          height="40"
          style="border-collapse: collapse"
        >
          <tr>
            <td width="15%" style="border: 1px solid;border-right: none;">文件名称</td>
            <td style="border: 1px solid;">内容</td>
          </tr>
          <tr>
            <td width="15%" style="border: 1px solid;border-right: none;">标题</td>
            <td style="border: 1px solid;">
              自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。
            </td>
          </tr>
          <tr>
            <td width="15%" style="border: 1px solid;border-right: none;">格式</td>
            <td style="border: 1px solid;">内容</td>
          </tr>
          <tr>
            <td width="15%" style="border: 1px solid;border-right: none;">参考文献</td>
            <td style="border: 1px solid;">
              自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。
            </td>
          </tr>
          <tr>
            <td width="15%" style="border: 1px solid;border-right: none;">文件记录</td>
            <td style="border: 1px solid;">
              自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。
            </td>
          </tr>
          <tr>
            <td width="15%" style="border: 1px solid;border-right: none;">会议</td>
            <td style="border: 1px solid;">
              自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。自从我第一次拿起羽毛球拍,这项运动就成了我生活中不可或缺的一部分。每当周末的阳光洒向球场,我和爸爸就会准时出现在那里,开始我们的羽毛球对决。
              起初,我总是接不到爸爸的高远球,每次跑动都显得笨拙而缓慢。爸爸耐心地一遍遍给我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。我示范,教我如何握拍、站位和挥拍。在他的鼓励下,我逐渐掌握了技巧,从简单的发球到复杂的扣杀,每一次进步都让我兴奋不已。
              记得有一次,学校举办了一场羽毛球比赛,我毫不犹豫地报名参加了比赛。比赛那天,观众席上坐满了同学和老师,气氛紧张而热烈。我信心满满地走上赛场。对手是一个比我高大的同学,但他显然低估了我的实力。比赛开始,我灵活地移动步伐,精准地击球,很快就占据了上风。我全神贯注地应对每一个来球,时而轻盈吊球,时而迅猛扣杀,每一次得分都让我信心倍增。最终,在激烈的角逐中,我赢得了比赛的冠军。
              如今,打羽毛球已经成为我最自豪的拿手好戏。它不仅锻炼了我的身体,更培养了我坚韧不拔的精神。每当我在球场上挥洒汗水,那份快乐和成就感总是油然而生。在未来的日子里,我会继续在羽毛球的道路上不断前进,享受每一次跃动带来的快乐。
            </td>
          </tr>
        </table>
      </div>



methods:{
downClick() {
      this.$nextTick(() => {
        const element = this.$refs.fileContent;
        const options = {
          margin: 1,
          filename: "文件" + ".pdf",
          image: { type: "jpeg", quality: 0.98 },
          html2canvas: { scale: 2 },
          jsPDF: {
            unit: "in",
            format: "letter",
            orientation: "portrait",
          },
          pagebreak: { mode: "avoid-all", },
        };
        html2pdf().from(element).set(options).save();
      });
    },}
相关推荐
海石1 小时前
📱随时随地大小编:TraeSolo 移动端初体验
前端·ai编程·trae
爱滑雪的码农3 小时前
详细说说React大型项目结构以及日常开发核心语法
前端·javascript·react.js
七牛开发者3 小时前
HTML is the new Markdown:来自 Claude Code 团队的实践
前端·人工智能·语言模型·html
南风微微吹3 小时前
【2026年6月最新】英语六级大纲词汇表5500个PDF电子版(含正序版、乱序版和默写单词版)
pdf
@大迁世界4 小时前
43.HTML 事件处理和 React 事件处理有什么区别?
前端·javascript·react.js·html·ecmascript
CloneCello4 小时前
AI时代程序员认知调整指南
前端
ZC跨境爬虫5 小时前
跟着 MDN 学 HTML day_38:(DocumentFragment 文档片段接口详解)
前端·javascript·ui·html·音视频
@大迁世界6 小时前
41.ShadCN 是什么?它如何和 Tailwind CSS 集成,从而更容易构建可访问且可自定义的 React 组件?
前端·javascript·css·react.js·前端框架
千叶风行6 小时前
Text-to-SQL 技术设计与注意事项
前端·人工智能·后端
软件开发技术深度爱好者6 小时前
HTML5+JavaScript读取DOCX 文档完整内容
前端·html5