首页 > 其他分享 >vue3+js使用插件实现pc端导出pdf

vue3+js使用插件实现pc端导出pdf

时间:2024-01-30 17:25:54浏览次数:25  
标签:插件 canvas js html2canvas let vue3 leftHeight PDF

1.安装jspdf插件:npm install jspdf --save

2.安装html2canvas插件:npm install html2canvas --save 

3.代码:

<el-row>
            <el-button type="primary" @click="downloadPDF">导出PDF</el-button>
        </el-row>
        <div class="mainDiv" id="pdfDom">
            打印内容
        </div>
<script setup>
import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'
import { ElLoading } from "element-plus"
function downloadPDF(){
  let loadingInstance = ElLoading.service({
    lock: true,
    text: "正在下载,请耐心等待",
    spinner: "el-icon-loading",
    background: "rgba(0, 0, 0, 0.7)",
    target: document.querySelector("#futureTransferDialog"),
  })
  var title = 'DPF标题' 
  html2Canvas(document.querySelector('#pdfDom'), {
    allowTaint: true,
    taintTest: false,
    useCORS: true,
    y:10, // 对Y轴进行裁切
    // width:1200,
    // height:5000,
    dpi: window.devicePixelRatio * 4, //将分辨率提高到特定的DPI 提高四倍
    scale: 4 //按比例增加分辨率
  }).then(function (canvas) {
    let contentWidth = canvas.width
    let contentHeight = canvas.height
    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')
  })
  loadingInstance.close()
}
</script>

 


标签:插件,canvas,js,html2canvas,let,vue3,leftHeight,PDF
From: https://www.cnblogs.com/ai01/p/17997524

相关文章

  • PHP的json问题
    在PHP中使用json是很简单的事情,直接使用json_encode,json_decode函数处理就好绝大部分情况下直接使用是没有任何问题的,今天就分享下json在PHP中一些有意思的操作中文不转义使用json_encode的数据中含有中文时,如果什么参数都不传,生成的json字符串中文会变成UNICODE编码,直接看js......
  • 无涯教程-ExpressJS - 身份验证
    为了创建身份验证系统,无涯教程需要创建一个注册页面和一个用户密码存储,以下代码创建了一个帐户并将其存储在内存中,这只是出于演示的目的;建议始终使用永久性存储(数据库或文件)来存储用户信息。varexpress=require('express');varapp=express();varbodyParser=require('body......
  • Vue3+Vant+Vite H5移动端开发(二)
    vue3项目创建使用vue创建项目命令npmcreatevue@latest基础配置配置IP和localhost打开项目,修改'package.json'文件下的‘scripts’配置--host0.0.0.0显示ip地址可以打开项目--open启动项目,在浏览器中自动打开"scripts":{"dev":"vite--host0.0.0.0......
  • JS遍历对象的方法 Object.keys() Object.values()
    1.Object.keys():返回对象可枚举属性组成的数据2.Object.values():返回对象可枚举的属性的属性值,组成的数据letperson={name:'小李',age:'15',}console.log(Object.keys(person));//['name','age']//返回对象可枚举属性组成的数......
  • WPS JS 宏根据单元格内容填充颜色
    WPSJS宏根据单元格内容填充颜色直接上代码/***Macro1Macro*宏由Steven录制,时间:2024/01/30*/functionSetCellColorsBYMacro(){ //获取表格的行数和列数varrowCount=48;varcolAll=['A','B','C','D','E',&......
  • vue3+ts使用插件vue3-esign完成签字、重签(h5、vant)
    1.安装vue3-esign:npmivue3-esign2.main.ts中引入:importVue3Esignfrom'vue3-esign'app.use(Vue3Esign)3.页面中代码:<van-nav-bartitle="手写签字"left-arrowfixed/><divid="sign_box"><divclass="text&......
  • 无涯教程-ExpressJS - Cookies
    Cookie是简单的files/data,随服务器请求发送到客户端并存储在客户端,每次用户重新访问网站时,该cookie都会与请求一起发送。要将Cookie与Express一起使用,无涯教程需要cookie解析器中间件。要安装它,请使用以下代码-npminstall--savecookie-parser现在要在Express中使用cookie,需......
  • vue3+js使用canvas实现签字、重签
    <el-dialogtitle="签字板"v-model="visible"width="1000px"append-to-body><canvas@mousemove="canvasMove"@mouseup="canvasUp"ref="canvas"width="1000"height="5......
  • 【NodeJS】- 使用NVM安装npm失败后,手动安装npm
    安装NVM之后,我们通常会配置镜像,在setting文件中,添加镜像路径node_mirror:https://npm.taobao.org/mirrors/nodenpm_mirror:https://npm.taobao.org/mirrors/npm但是这两天镜像突然炸了,于是我删掉了镜像地址,使用官方直接下载。但是npm下载非常困难,而且高版本的npm还存在wo......
  • python之常用标准库-json/pickle/shelve
    json,用于各个平台语言的字符串和python数据类型间进行转换json的方法:dumps,loads,dump,loadpickle-用于python特有的类型(字符串,列表,字典,集合等)和python的数据类型间进行转换pickle的方法:dumps,loads,dump,load,但是都是以二进制存储shelve,是一个简单的k,v将内存数据通过......