当前位置: 首页 > news >正文

网站支付怎么做的阿里云公司网站制作

网站支付怎么做的,阿里云公司网站制作,wordpress防止查看源,网站301跳转代码vue3将页面导出成PDF文件(完美解决图片、表格内容分割问题) 1、安装依赖2、在utils中创建htmlToPDF.js文件3、在vue中引入并使用 1、安装依赖 npm install --save html2canvas // 页面转图片 npm install jspdf --save // 图片转pdf2、在utils中创建h…

vue3将页面导出成PDF文件(完美解决图片、表格内容分割问题)

  • 1、安装依赖
  • 2、在utils中创建htmlToPDF.js文件
  • 3、在vue中引入并使用

1、安装依赖

npm install --save html2canvas  // 页面转图片
npm install jspdf --save  // 图片转pdf

2、在utils中创建htmlToPDF.js文件

// 页面导出为pdf格式 //title表示为下载的标题,html表示document.querySelector('#myPrintHtml')
import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'
var noTableHeight = 0 //table外的元素高度export const htmlPdf = (title, html, fileList, type) => {// type传有效值pdf则为横版if (fileList) {const pageHeight = Math.floor(277 * html.scrollWidth / 190) + 20 //计算pdf高度for (let i = 0; i < fileList.length; i++) { //循环获取的元素const multiple = Math.ceil((fileList[i].offsetTop + fileList[i].offsetHeight) / pageHeight) //元素的高度if (isSplit(fileList, i, multiple * pageHeight)) { //计算是否超出一页var _H = '' //向pdf插入空白块的内容高度if (fileList[i].localName !== 'tr') { //判断是不是表格里的内容_H = multiple * pageHeight - (fileList[i].offsetTop + fileList[i].offsetHeight)} else {_H = multiple * pageHeight - (fileList[i].offsetTop + fileList[i].offsetHeight + noTableHeight) + 20}var newNode = getFooterElement(_H)  //向pdf插入空白块的内容const divParent = fileList[i].parentNode // 获取该div的父节点const next = fileList[i].nextSibling // 获取div的下一个兄弟节点// 判断兄弟节点是否存在if (next) {// 存在则将新节点插入到div的下一个兄弟节点之前,即div之后divParent.insertBefore(newNode, next)} else {// 否则向节点添加最后一个子节点divParent.appendChild(newNode)}}}}html2Canvas(html, {allowTaint: false,taintTest: false,logging: false,useCORS: true,dpi: window.devicePixelRatio * 1,scale: 1 // 按比例增加分辨率}).then(canvas => {var pdf = new JsPDF('p', 'mm', 'a4') // A4纸,纵向var ctx = canvas.getContext('2d')var a4w = type ? 277 : 190; var a4h = type ? 190 : 277 // A4大小,210mm x 297mm,四边各保留10mm的边距,显示区域190x277var imgHeight = Math.floor(a4h * canvas.width / a4w) // 按A4显示比例换算一页图像的像素高度var renderedHeight = 0while (renderedHeight < canvas.height) {var page = document.createElement('canvas')page.width = canvas.widthpage.height = Math.min(imgHeight, canvas.height - renderedHeight)// 可能内容不足一页// 用getImageData剪裁指定区域,并画到前面创建的canvas对象中page.getContext('2d').putImageData(ctx.getImageData(0, renderedHeight, canvas.width, Math.min(imgHeight, canvas.height - renderedHeight)), 0, 0)pdf.addImage(page.toDataURL('image/jpeg', 1.0), 'JPEG', 10, 10, a4w, Math.min(a4h, a4w * page.height / page.width)) // 添加图像到页面,保留10mm边距renderedHeight += imgHeightif (renderedHeight < canvas.height) {pdf.addPage()// 如果后面还有内容,添加一个空页}// delete page;}// 保存文件pdf.save(title + '.pdf')})
}
// pdf截断需要一个空白位置来补充
const getFooterElement = (remainingHeight, fillingHeight = 0) => {const newNode = document.createElement('div')newNode.style.background = '#ffffff'newNode.style.width = 'calc(100% + 8px)'newNode.style.marginLeft = '-4px'newNode.style.marginBottom = '0px'newNode.classList.add('divRemove')newNode.style.height = (remainingHeight + fillingHeight) + 'px'return newNode
}
const isSplit = (nodes, index, pageHeight) => {// 判断是不是tr 如果不是高度存起来// 表格里的内容要特殊处理// tr.offsetTop 是tr到table表格的高度// 所以计算高速时候要把表格外的高度加起来// 生成的pdf没有表格了这里可以不做处理 直接计算就行if (nodes[index].localName !== 'tr') {  //判断元素是不是trnoTableHeight += nodes[index].clientHeight}if (nodes[index].localName !== 'tr') {return nodes[index].offsetTop + nodes[index].offsetHeight < pageHeight && nodes[index + 1] && nodes[index + 1].offsetTop + nodes[index + 1].offsetHeight > pageHeight} else {return nodes[index].offsetTop + nodes[index].offsetHeight + noTableHeight < pageHeight && nodes[index + 1] && nodes[index + 1].offsetTop + nodes[index + 1].offsetHeight + noTableHeight > pageHeight}
}

3、在vue中引入并使用

<template><div><button class="primary-btn" @click="handleExport">导出</button><div class="check-wrapper" id="pdfRef"><div class="page1-box pdfRef">11</div><div class="page2-box pdfRef">11</div><div class="page3-box pdfRef">11</div><div class="page4-box pdfRef">11</div><div class="page5-box pdfRef">11</div><div class="page6-box pdfRef">11</div><div class="page7-box pdfRef">11</div><div class="page8-box pdfRef">11</div></div></div>
</template>
<script setup>// 引入方法import { htmlPdf } from "@/utils/htmlToPDF.js"  // 导出成PDFconst handleExport = (name) => {var fileName= '投资评审报告'const fileList = document.getElementsByClassName('pdfRef')   // 很重要htmlPdf(fileName, document.querySelector('#pdfRef'), fileList)}
</script>
http://www.yayakq.cn/news/763204/

相关文章:

  • 安徽建工集团网站那个网站专门做幽默视频的
  • 舵落口网站建设wordpress的滑块换成图片
  • 广州网站优化专家wordpress 双语站点
  • 贵阳网站设计多少钱北京网站建设产品介绍
  • 网站建设与设计实习报告国航网站建设
  • 企业网站功能模块设计中国原材料价格网
  • 企业网站建设方案效果咸阳网站建设公司电话
  • wordpress网站备份做电子请帖网站有哪些
  • 网站怎么做微博认证吗网络广告推广案例
  • 青岛市住房和城乡建设局网站查询网站搭建报价
  • 会议网站建设域名解析系统的英文缩写
  • 宜兴建设局官方网站wordpress注册跳过邮箱验证码
  • 网站建设报价单下载网站建设服务合同样本
  • 电子商务网站建设实训目的建站公司经营
  • 建设公司网站费用建一个网站首先要怎么做
  • 哪家专门做特卖的网站?广州好玩的地方和景点
  • 饮用水品牌营销型网站乐清网络推广公司
  • 如何做网站优化推广wordpress 知更鸟
  • 关键词排名点击软件首页网站seo做哪些工作
  • 北京网站建设明细网站页头背景
  • 深圳建设工程造价管理站上海太江建设网站
  • wordpress指定模板深圳网站seo地址
  • 玩具网站设计个人介绍网站内容
  • 山东网站建设都有那些网站怎么看被百度收录
  • 菠菜网站如何做推广怎么样建设网站网站
  • 手机版网站做一下多少钱wordpress vendor
  • 大一网页设计电商网站作业担路网口碑做网站好吗
  • 一鸣东莞网站建设公司整合营销是做什么的
  • 做网站为什么选择竞网智赢如何做微信下单小程序
  • 作文网站排行榜前十名怎么做网站上翻译泰剧