前端解析pdf文件内容二维码

解析pdf内容,并解析二维码

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" http-equiv="Access-Control-Allow-Origin" content="*" />
    <title></title>
</head>

<body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.13.216/pdf.min.js"></script>
    <script src="/jsQR.js"></script>
    <script id="script">
        // 设置 workerSrc 
        pdfjsLib.GlobalWorkerOptions.workerSrc =
            'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.13.216/pdf.worker.min.js';

        // 加载远程PDF
        var loadingTask = pdfjsLib.getDocument({
            url: 'http://127.0.0.1:9999/b.pdf',

        });
        loadingTask.promise.then(function (pdf) {

            pdf.getPage(1).then(function (page) {

                page.getOperatorList().then(function (ops) {
                    var objs = [];
                    for (var j = 0; j < ops.fnArray.length; j++) {
                        //解析出pdf内容为image类型
                        if (ops.fnArray[j] == pdfjsLib.OPS.paintImageXObject) { 
                            var op = ops.argsArray[j][0]
                            objs.push(ops.argsArray[j][0])
                            var img = page.objs.get(op);
                            var scale = img.width / page.view[2];
                            var viewport = page.getViewport({ scale: scale });
                 
                             //创建canvas,填充数据
                            var canvas = document.createElement('canvas') 
                            document.body.append(canvas)
                            var ctx = canvas.getContext('2d');
                            var imageData = ctx.createImageData(img.width, img.height);
                            var imageBytes = imageData.data;

                            for (var y = 0, k = 0, jj = img.width * img.height * 4; y < jj;) {
                                imageBytes[y++] = img.data[k++];
                                imageBytes[y++] = img.data[k++];
                                imageBytes[y++] = img.data[k++];
                                imageBytes[y++] = 255;
                            }

                            canvas.width = img.width;
                            canvas.height = img.height;
                            ctx.putImageData(imageData, 0, 0);
                            
                            //使用jsQR,解析iamge
                            code = jsQR(imageData.data, img.width, img.height);
                            if(code){
                                console.log(code.data)
                            }
                         
                        }
                    }

                })
            })
    </script>
</body>

</html>

运行结果

在这里插入图片描述


总结

以上就是前端解析pdf文件内容,并解析二维码案列,有更好的方案,欢迎小伙伴们在评论区下讨论

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值