// 导出页面为PDF格式
// import html2Canvas from 'html2canvas'
// import jsPDF from 'jspdf'
// pdf导出:消除分页内容割裂的具体步骤
// 主要思路:pfd导出页面背景设置为纯白色, 根据内容之间的空白像素点来分页导出。
// 0、导出页面等比例转换成a4纸的格式, 此时宽度为a4w, 高度为H。
// 1、从高度为H的导出页面(已转换)取出一页a4纸高宽度内容, 内容高度为a4h, 位置标记高度h0(h0 = 0,从h0高度开始取), 页面宽度为a4w。
// 2、对高度范围为h (h = a4h + h0) 到h0, 宽度为a4w的内容从下到上, 从左到右遍历像素点。
// 3、当连续遍历到p (p是一个阈值, 一般设为10; 根据实际情形调整) 个白色(#fff)像素点时, 停止遍历。
// 4、记录此时的遍历高度h1 (h0 < h1 < h) ; 宽度为a4w, 高度范围为h1到h0的内容就是这一页要展示的内容(把该内容复制到新的canvas里, 然后将该canvas利用pdf导出来)。
// 5、更新位置高度h0 (h0 = h0 + h1)。
// 6、循环【1】到【5】直到 h0 > H 时跳出循环。
// export default {
// install(Vue) {
// Vue.prototype.getPdf = function(pdfDom) {
// this.loading = true // 显示导出loading
// const title = this.htmlTitle // PDF导出文件描述
// const w = document.querySelector(pdfDom).offsetWidth // 获得该容器的宽
// const h = document.querySelector(pdfDom).offsetHeight // 获得该容器的高
// const scale = 1 // 定义缩放倍数
// const canvas = document.createElement('canvas') // 定义画布canvas
// // PDF内容失真处理
// canvas.width = w * scale // 将画布宽&&高放大两倍
// canvas.height = h * scale
// canvas.state = false // canvas生成pdf过程状态
// canvas.getContext('2d').scale(scale, scale)
// const options = {
// scale: scale,
// canvas: canvas,
// width: w,
// height: h,
// background: '#ffffff'
// }
// html2Canvas(document.querySelector(pdfDom), options).then(function(canvas) {
// const a4Width = 552.28 // A4纸原始宽度为592.28, 这里减去了左右间距2个20
// const a4Height = 801.89 // A4纸原始高度为841.89, 这里减去了左右间距2个20
// const a4HeightRef = Math.floor(canvas.width / a4Width * a4Height) // html页面在a4纸中的高度 ,这里向下取整, 后面与这个变量相关的值都是近似值
// const pageData = canvas.toDataURL('image/jpeg', 1.0)
// let actualHeight = canvas.height // html页面在canvas中的高度
// let positionHeight = 0 // canvas分页, 位置高度
// // eslint-disable-next-line new-cap
// const pdf = new jsPDF('x', 'pt', 'a4')
// const currentCanvas = document.createElement('canvas') // 遍历canvas, 每一页生成的临时canvas
// let height // canvas分页, 每页实际分割的高度(如果每页没有空白, 该高度=a4HeightRef, 有空白的, 会将下面的空白高度去掉)
// function createPdfPage(canvas) {
// if (actualHeight > 0) {
// let checkCount = 0 // 统计出现空白的次数, 按照每页像素点从下到上, 从左到右同时去遍历; 这里根据实际PDF出现的内容, 灵活调整阈值, 使其分割更为合理(这里的阈值为10)
// if (actualHeight > a4HeightRef) {
// let currentHeight = positionHeight + a4HeightRef // 当前单页
// for (let i = currentHeight; i >= positionHeight; --i) {
// let isWrite = true
// for (let j = 0; j < canvas.width; ++j) {
// const c = canvas.getContext('2d').getImageData(j, i, 1, 1).data // 获取横轴为j, 纵轴为i, 高度宽度均为1的像素数据[255,255,255,0.8]
// if (c[0] !== 0xff || c[1] !== 0xff || c[2] !== 0xff) {
// isWrite = false
// break
// }
// }
// if (isWrite) {
// ++checkCount
// if (checkCount >= 10) {
// currentHeight = i
// break
// }
// } else {
// ++checkCount
// }
// }
// height = Math.round(currentHeight - positionHeight)
// } else {
// height = actualHeight
// }
// currentCanvas.width = canvas.width
// currentCanvas.height = height
// // 将当前遍历的canvas页内容复制到新的currentCanvas中
// currentCanvas.getContext('2d').drawImage(canvas, 0, positionHeight, canvas.width, height, 0, 0, canvas.width, height)
// pdf.addPage()
// // 将currentCanvas添加到页面中
// pdf.addImage(currentCanvas.toDataURL('image/jpeg', 1.0), 'JPEG', 20, 20, a4Width, a4Width / currentCanvas.width * height)
// actualHeight -= height
// positionHeight += height
// if (actualHeight > 0) {
// createPdfPage(canvas)
// } else {
// pdf.save(`${title}.pdf`)
// canvas.state = true
// }
// }
// }
// // 当内容未超过pdf一页显示的范围, 无需分页
// if (actualHeight < a4HeightRef) {
// // 这里默认执行了一次pdf.addPage();
// pdf.addImage(pageData, 'JPEG', 20, 20, a4Width, a4Width / canvas.width * actualHeight)
// pdf.save(`${title}.pdf`)
// canvas.state = true
// } else {
// // 删除第一张空白页
// // html2Canvas方法默认就有一页pdf,即在进入createPdfPage()方法前就已经执行了一次pdf.addPage();
// pdf.deletePage(1)
// createPdfPage(canvas)
// }
// })
// .then(() => {
// if (canvas.state) {
// this.loading = false
// } else {
// this.$message({
// message: 'Error exporting pdf',
// type: 'error'
// })
// }
// })
// }
// }
// }