VUE 表格导出PDF格式

简介: VUE 表格导出PDF格式
<div @click="exportPDF">导出PDF格式</div>
const exportPDF = () => {
  const ele: HTMLElement | null = document.getElementById('main-charts');
  html2canvas(ele as HTMLElement, {
    dpi:106, // 分辨率
    scale: 2, // 设置缩放
    useCORS: true, // 允许canvas画布内 可以跨域请求外部链接图片, 允许跨域请求。,
    bgcolor: '#ffffff', // 应该这样写
  }).then((canvas) => {
    const contentWidth = canvas.width;
    const contentHeight = canvas.height;
    // 一页pdf显示html页面生成的canvas高度;
    const pageHeight = (contentWidth / 592.28) * 841.89;
    // 未生成pdf的html页面高度
    let leftHeight = contentHeight;
    // 页面偏移
    let position = 0;
    // a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
    const imgWidth = 595.28;
    const imgHeight = (595.28 / contentWidth) * contentHeight;
    const ctx: any = canvas.getContext('2d');
    const pageData = canvas.toDataURL('image/jpeg', 1.0);
    const 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(`文件名.pdf`);
  });
  }

如果想添加自己的水印

 ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
 ctx.rotate((25 * Math.PI) / 180);
ctx.font = '20px Microsoft Yahei';
ctx.fillStyle = 'rgba(184, 184, 184, 0.8)';
 for (let i = contentWidth * -1; i < contentWidth; i += 240) {
 for (let j = contentHeight * -1; j < contentHeight; j += 100) {
   ctx.fillText('印名', i, j);
  }
   }
相关文章
|
8天前
|
人工智能 缓存 Linux
Confluence PDF导出中文支持
Confluence PDF导出中文支持
|
8天前
|
资源调度
Vue3导入表格功能
Vue3导入表格功能
|
8天前
|
JavaScript
【Ant designe vue】中有关表格列中日期展示 yyyy-mm-dd 格式问题
【Ant designe vue】中有关表格列中日期展示 yyyy-mm-dd 格式问题
27 0
|
7天前
|
资源调度 JavaScript 前端开发
将Elementui里的Table表格做成响应式并且和Pagination分页组件封装在一起(Vue实战系列)
将Elementui里的Table表格做成响应式并且和Pagination分页组件封装在一起(Vue实战系列)
|
8天前
|
JavaScript
vue3表格编辑(数据回显)和删除功能实现
vue3表格编辑(数据回显)和删除功能实现
15 1
|
8天前
|
JavaScript
Vue 获取当前日期(时间,格式为YYYY-MM-DD HH:mm:ss)
Vue 获取当前日期(时间,格式为YYYY-MM-DD HH:mm:ss)
38 0
|
8天前
|
JavaScript
Ant design vue 样式调整(包含导航栏、a-table表格、分页)
Ant design vue 样式调整(包含导航栏、a-table表格、分页)
56 1
|
8天前
|
JavaScript 前端开发
【vue】设计一个表格,增删改查,分页,固定列,特殊字符校验
【vue】设计一个表格,增删改查,分页,固定列,特殊字符校验
16 0
【vue】设计一个表格,增删改查,分页,固定列,特殊字符校验
|
8天前
|
JavaScript
vue element 导出blob后台文件流xlsx文件自动下载(且规避乱码)
vue element 导出blob后台文件流xlsx文件自动下载(且规避乱码)
|
8天前
|
存储 JavaScript 定位技术
vue中实现地图与数据表格交互的六种场景(附具体代码示例)
vue中实现地图与数据表格交互的六种场景(附具体代码示例)
73 0