zoukankan      html  css  js  c++  java
  • vue pdf下载

    主要技术栈是Vue,两个库: 

        html2canvas npm地址

        jspdf 

    具体实现代码如下:

    <template>
      <div class="priview_resume_container">
            <div style="font-size: 16px" @click="getResume">点这里下载 </div>
      </div>
    </template>
    <script>
      export default {
        name: 'priviewResume',
        methods: {
          getResume() {
            this.commonUtils.generateResume(
              $('.priview_resume_container')[0],
              '测试'
            )
          }
        },
        components: {}
      }
    </script>
    import html2canvas from 'html2canvas'
    import JsPDF from 'jspdf'
    export const generateResume = (el, name) => {
      html2canvas(el).then(canvas => {
        let contentWidth = canvas.width
        let contentHeight = canvas.height
        //一页pdf显示html页面生成的canvas高度;
        let pageHeight = (contentWidth / 592.28) * 841.89
        //未生成pdf的html页面高度
        let leftHeight = contentHeight
        //页面偏移
        let position = 0
        //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
        let imgWidth = 595.28
        let imgHeight = (592.28 / contentWidth) * contentHeight
        let pageData = canvas.toDataURL('image/jpeg', 1.0)
        let pdf = new JsPDF('', 'pt', 'a4')
        //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
        //当内容未超过pdf一页显示的范围,无需分页
        if (leftHeight < pageHeight) {
          pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
        } else {
          while (leftHeight > 0) {
            //arg3-->距离左边距;arg4-->距离上边距;arg5-->宽度;arg6-->高度
            pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
            leftHeight -= pageHeight
            position -= 841.89
            //避免添加空白页
            if (leftHeight > 0) {
              //添加新页
              pdf.addPage()
            }
          }
        }
        pdf.save(`${name}.pdf`)
      })
    }

    欢迎关注公众号,进一步技术交流:

  • 相关阅读:
    centos安装字体
    【C++ Primer | 15】访问控制与继承、继承中的类作用域
    树与二叉树 | 哈夫曼树
    【C++ Primer | 10】泛型算法
    【APUE | 03】文件I/O
    二叉树
    图论算法
    【深度探索C++对象模型 | 02】构造函数语意学
    【APUE | 08】进程控制
    c++重点理解
  • 原文地址:https://www.cnblogs.com/cczlovexw/p/11833445.html
Copyright © 2011-2022 走看看