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

山西建设工程执业注册中心网站网站开发维护合同

山西建设工程执业注册中心网站,网站开发维护合同,长沙seo在哪,温州seo平台数据量太大使用dom》canvas》image》pdf.addimage方法弊端是canvas超出 浏览器承受像素会图片损害,只能将其切割转成小块的canvas,每一次调用html2canvas等待时间都很长累积时间更长,虽然最终可以做到抽取最小dom节点转canvas拼接数据,但是死…

数据量太大使用dom=》canvas=》image=》pdf.addimage方法弊端是canvas超出

浏览器承受像素会图片损害,只能将其切割转成小块的canvas,每一次调用html2canvas等待时间都很长累积时间更长,虽然最终可以做到抽取最小dom节点转canvas拼接数据,但是死卡

jspdf提供了不需要操作dom的方法,

Global - Documentation

 使用line方法和text方法可以通过传递线坐标和文字位置在pdf页上画线和文字,组成表格

function getStrLen(cItem, strLen) {let str = typeof cItem === 'string' || typeof cItem === 'number' ? cItem : 'null'let len = Math.ceil(str.length / strLen)if (len <= 1) {return str}str = String(str)let strn = ''for (let i = 0; i < len; i++) {strn = strn + str.substring(i * strLen, (i + 1) * strLen) + '\n'}return strn
}async function downPDF(list, columns) {// 1in = 2.54cm = 25.4 mm = 72pt = 6pclet tablePdf = null
//绘制表格的参数let cardTop = 10, cardLeft = 7, textLeft = 9, textTop = 14, oneColumnNum = 35, oneRowNum = 7, oneCellWidth = 28, oneCellHeight = 8, oneStrLen = 5, pdfWidth = 203, pdfHeight = 290, strLen = 8let endPageNum = 0
//表格数据的整理
//整理格式成一个二维数组,第一层以列为单个元素,元素是整列的值组成的数组let testList = columns[0].childrenlet propList = testList.map((item) => {return { prop: item.props.prop, label: item.props.label }})let dataList = []propList.forEach((item, index) => {let cArr = []cArr.push(item.label)list.forEach((cItem, cIndex) => {cArr.push(cItem[item.prop])})dataList.push(cArr)})console.log(dataList)//处理好表格数据的二维数组,配置pdf对象tablePdf = new jsPDF('p', 'mm', 'a4');
//解决中文乱码tablePdf.addFont("/fonts/SourceHanSansCN-Normal.ttf", "SourceHanSans", "normal")tablePdf.setFont("SourceHanSans");//1)doc中设置font: "SourceHanSans" // 2)style中设置tablePdf.setLineWidth(0.1)tablePdf.setFontSize(8)tablePdf.line(cardLeft, cardTop, pdfWidth, cardTop);let columnPages = Math.ceil(dataList.length / oneRowNum) + 1let rowPages = Math.ceil(dataList[0].length / oneColumnNum) + 1let currentData = []for (let i = 1; i < columnPages; i++) {
//横向分页let currentColumnData = dataList.slice((i - 1) * oneRowNum, i * oneRowNum)
//纵向分页for (let rowInddex = 1; rowInddex < rowPages; rowInddex++) {currentData = currentColumnData.map((item, index) => {return item.slice((rowInddex - 1) * oneColumnNum, rowInddex * oneColumnNum)})currentData.forEach((item, index) => {item.forEach((cItem, cIndex) => {cItem = getStrLen(cItem, strLen)//填文字,超过长度换行tablePdf.text(cItem, textLeft + index * oneCellWidth, textTop + cIndex * oneCellHeight, 'left')//画一次横线if (index === currentData.length - 1) {tablePdf.line(cardLeft, cardTop + cIndex * oneCellHeight, pdfWidth, cardTop + cIndex * oneCellHeight);//画最后一条横线if (cIndex === item.length - 1) {tablePdf.line(cardLeft, cardTop + (cIndex + 1) * oneCellHeight, pdfWidth, cardTop + (cIndex + 1) * oneCellHeight);endPageNum = item.lengthlet ks = (pdfHeight - cardTop) / oneColumnNumfor (let l = 0; l < oneRowNum + 1; l++) {tablePdf.line(cardLeft + l * oneCellWidth, cardTop, cardLeft + l * oneCellWidth, endPageNum * ks + cardTop);}}}})});if (rowInddex + 1 !== rowPages) {tablePdf.addPage();}}if (i + 1 !== columnPages) {tablePdf.addPage();}}tablePdf.save('dd.pdf')
}

 数组datalist结构

效果

http://www.yayakq.cn/news/154717/

相关文章:

  • 通辽企业网站建设做网站怎么把字弄图片上去
  • 百度网站排名抓取规则公司网站建设的费用
  • 域名解析好了怎么做网站WordPress是静态的吗
  • 建设什么网站可以上传视频代理ip自动提取网站源码
  • 免费网站地址申请广州新际网站建设
  • 如何做网站推广自己的产品网站的设计流程有哪些步骤
  • 做网站常用代码做网站怎么建站点
  • 建网站发信息做推广wppay wordpress
  • thinkphp 门户网站做企业平台网站成本
  • 国内网站制作特点软件开发分工5个角色
  • Excel怎么做网站链接外贸网站域名
  • 做一个属于自己的网站有什么做房屋装修的网站
  • 饶平网站建设jquery验证网站地址
  • 网站群管理平台wordpress手机主题浮动导航
  • 网站建设订单模板汕头网站建设技术外包
  • 怎么用php做网站网站按钮样式
  • 珠海网站建设q479185700棒淘宝客网站主机
  • 成都论坛网站建设康巴什网站建设
  • 网站开发专业能力网站平台内容建设提纲
  • 学校网站建设的难点seo平台有哪些
  • 深圳建网站兴田德润实惠网站设计 成都
  • 瑞安 网站建设区块链网站开发价格
  • 安徽建设工程信息网关闭 新网站南陵网站建设
  • 网站建设方案及报价模板查看网站有没有备案
  • 涟源网站seo科技网站配色方案
  • 网站备案背景墙WordPress设置会话有效时间
  • 化州 网站建设咸阳网站网站建设
  • 关于门户网站建设东道设计一个logo多少钱
  • 网站上添加图片的原则备案期间网站能用吗
  • 镇江网站制作哪家好建设厅官方网站