后台卷子html页面导出为pdf

5 篇文章 0 订阅

这几天老板让我和客户对接一个考试系统的二开功能,在考卷模块,客户让加一个导出为pdf的功能。研究了大半天,在网上游了半天,有点眉目,这里记录一下,大家可以一块学习

总共分为三步:

  1. 下载html2canvas.js;
  2. 下载jspdf.js;
  3. 输入代码,网上很多;

下载html2canvas.js

这里用到的node.js的npm下载库,类似于php的composer,不会使用的可以: 点击这里
从这个链接可以学会安装node.js
你仔细看文章就会发现,npm在你装node.js的时候,就已经连带一块装了,这点比php简单多了,点个赞。
完了就去html2canvas官网
简单学习如何使用html2canvas。这里说明下,这个学习过程很关键。
我做完还做了一个小demo,很简单。就不做展示,相信有一定代码基础的人都会。

下载jspdf.js

这步的时候我偷了个懒直接用的线上链接

<script src="https://cdn.bootcss.com/jspdf/1.3.4/jspdf.debug.js"></script>

不得不说,线上链接是真的爽,一行代码就好了。
小伙伴们要依据项目环境区分使用线上链接还是线下。
附上jspdf的下载链接

输入代码,网上很多

<script type="text/javascript">
    (function(){
        if($("#see").val() == 1){
            return false;  //这样就不会报错了
        }
    })()
    var opts = {
        background: "#fff",   //这里给生成的图片默认背景,不然的话,如果你的html根节点没设置背景的话,会用黑色填充。
        // allowTaint: true,          //避免一些不识别的图片干扰,默认为false,遇到不识别的图片干扰则会停止处理html2canvas
        /*canvas: canvas,                       // 将自定义canvas作为配置项
        useCORS: true,                        // 允许图片跨域
        height: 300  // 修复截图不完整问题*/
    }
    html2canvas(document.querySelector("#to-pdf"), opts).then((canvas) => {
        var imgData = canvas.toDataURL('image/jpeg');
        var img = new Image();
        img.src = imgData;
        //根据图片的尺寸设置pdf的规格,要在图片加载成功时执行,之所以要*0.225是因为比例问题
        img.onload = function() {
            //此处需要注意,pdf横置和竖置两个属性,需要根据宽高的比例来调整,不然会出现显示不完全的问题
            if (this.width > this.height) {
                var doc = new jsPDF('l', 'mm', [this.width * 0.225, this.height * 0.225]);
            } else {
                var doc = new jsPDF('p', 'mm', [this.width * 0.225, this.height * 0.225]);
            }
            doc.addImage(imgData, 'jpeg', 0, 0, this.width * 0.225, this.height * 0.225);
            //根据下载保存成不同的文件名
            doc.save('report_pdf_' + new Date().getTime() + '.pdf');
        }
    });
</script>

参考文章: link
代码上都有备注,请自行解读
这是我导出来的,很长,就只截取了一部分: 在这里插入图片描述
再小的帆也能远航 致敬狂神

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张先生002

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值