Vue.js框架:前端转化html元素为pdf并导出

一、安装依赖

  主要用到以下两个依赖:

  html2canvas:通过获取HTML的某个元素,然后生成Canvas,能让用户保存为图片。

  jspdf:基于HTML5的客户端解决方案,用于生成各种用途的 PDF 文档。

npm install html2canvas jspdf --save

  

 二、全局引入

  定义引入方法,单独添加一个js文件进行存储:

// 导出页面为PDF格式 import html2Canvas from 'html2canvas' import JsPDF from 'jspdf' export default{ install (Vue, options) { Vue.prototype.getPdf = function () {    //获取页面标题,作为文件名称,也可以使用时间戳生成不重复的文件名使用 var title = this.htmlTitle html2Canvas(document.querySelector('#pdfDom'), { allowTaint: true, //防止页面过宽导致右侧出现黑灰色背景区域 scale: 2 }).then(function (canvas) { let contentWidth = canvas.width let contentHeight = canvas.height //A4纸张标准宽高进行转换 let pageHeight = contentWidth / 592.28 * 841.89 let leftHeight = contentHeight let position = 0 let imgWidth = 595.28 let imgHeight = 592.28 / contentWidth * contentHeight let pageData = canvas.toDataURL('image/jpeg', 1.0) let PDF = new JsPDF('', 'pt', 'a4') if (leftHeight < pageHeight) { PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight) } else { while (leftHeight > 0) { PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight) leftHeight -= pageHeight position -= 841.89 if (leftHeight > 0) { PDF.addPage() } } } //文件导出生成 PDF.save(title + '.pdf') } ) } } }

  在全局main.js文件中进行引入并全局挂载

import htmlToPdf from '@/components/utils/htmlToPdf' // 使用Vue.use()方法就会调用工具方法中的install方法 Vue.use(htmlToPdf)

三、页面内调用导出方法进行文件导出下载

  1、页面标签元素部分如下:

<div id="pdfDom"> <!-- 要下载的HTML页面,页面是由后台返回 --> <div v-html="pageData"></div> </div> <el-button type="primary" size="small" @click="getPdf('#pdfDom')">点击下载</el-button>

  2、页面js部分如下:

export default { data () { return {   htmlTitle: '页面导出PDF文件名' } } }

  


__EOF__

本文作者我命倾尘
本文链接https://www.cnblogs.com/guobin-/p/14451837.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   我命倾尘  阅读(2517)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示