前端PDF文件转图片方法(你值得收藏)

1 篇文章 0 订阅
1 篇文章 0 订阅

前端PDF文件转图片方法(你值得收藏)

第一步:先下载pdfjs,网址:PDF下载地址,再引入到项目中,我是标签直接引用的

<script src="pdfjs/build/pdf.js"></script>
<script src="pdfjs/build/pdf.worker.js"></script>

注意:两个都要引进来

第二步:html代码添加两行代码,一个是canvas用来绘图,一个是img用来最后展示转换后的pdf图片

<body>
	<img :src="imgUrl" alt="" width="100%" height="auto">
	<canvas id="the-canvas" style="display: none"></canvas>
</body>

第三步:js代码块,主要是将paf通过pdfjs插件绘制到canvas,然后再转换为base64格式的图片

//url参数是pdf地址,imgUrl是最后的base64格式图片
showPdf(url) {
    let _this = this;
    let imgArr = [];
    pdfjsLib.workerSrc = 'pdf.worker.js';
    let loadingTask = pdfjsLib.getDocument(url);
    // PDFJS.workerSrc = 'pdf.worker.js';// pdfjsLib为undefined可以换成这行
    // let loadingTask = PDFJS.getDocument(url);// pdfjsLib为undefined可以换成这行
    loadingTask.promise.then(function(pdf) {
        console.log('PDF loaded');
        let pageNum = pdf.numPages;
        // console.log(pageNum);
        for (let i=1; i<=pageNum; i++) {
            pdf.getPage(i).then(function(page) {
                console.log('Page loaded');

                let scale = 1;
                let viewport = page.getViewport(scale);

                // let canvas = document.getElementById('the-canvas');
                let canvas = document.createElement("canvas");
                let context = canvas.getContext('2d');
                canvas.height = viewport.height;
                canvas.width = viewport.width;

                let renderContext = {
                    canvasContext: context,
                    viewport: viewport
                };
                let renderTask = page.render(renderContext);
                renderTask.then(function () {
                    console.log('Page rendered');
                    let imgUrl = canvas.toDataURL('image/jpeg'); //转换为base64
                    if (imgUrl) {
                        imgArr[i-1] = imgUrl;
                    }
                    //pdf全部画完结束后操作
                    if (imgArr.length==pageNum&&!isEmpty(imgArr)) {
                        // let canvas2 = document.createElement("canvas");
                        let canvas2 = document.getElementById('the-canvas');
                        let context2 = canvas2.getContext('2d');
                        canvas2.height = viewport.height*pageNum;
                        canvas2.width = viewport.width;
                        let count = 0;
                        for (let j=0; j<imgArr.length; j++) {
                            let IMG = new Image();
                            IMG.src=imgArr[j];
                            IMG.width = viewport.width;
                            IMG.height = viewport.height;
                            IMG.onload = function () {
                                context2.drawImage(IMG,0,viewport.height*j);
                                count++;//确保所有img渲染结束后操作
                                if (count==pageNum) {
                                    let canvas = document.getElementById('the-canvas');
                                    //赋值给img
                                    _this.imgUrl = canvas.toDataURL('image/jpeg'); 
                                }
                            }
                        }
                    }
                });
            });
        }
    }, function (reason) {
        console.error(reason);
    });

    function isEmpty(arr) {
        for(let i=0;i<arr.length;i++) {
            if(!arr[i])
                return true;
        }
        return false;
    }
}
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
uniapp 是一款基于 Vue.js 的跨平台应用开发框架,可以帮助开发者快速地编写出适配多个平台的应用程序。如果需要将 pdf 文件换为图片格式,并且需要在 uniapp 项目中实现,可以考虑使用第三方库或者插件来实现这个功能。 实现 pdf 文件图片的功能,首先需要在 uniapp 项目中引入对应的插件或者库。可以搜索相关的 npm 包或者 GitHub 上的库,找到一个合适的库来处理 pdf 文件换的功能。一旦找到合适的库,就可以通过 npm 安装并引入到项目中。 一般来说,pdf 文件图片格式的功能需要调用相关的接口来实现。在 uniapp 中,可以利用 Vue.js 提供的生命周期函数和方法,来在合适的时机调用第三方库的接口进行 pdf 图片的处理。比如在页面加载完成后调用相应的方法,将 pdf 文件换为图片格式并显示在页面上。 需要注意的是,在进行 pdf 图片的过程中,可能会涉及到一些异步操作,需要合理处理异步回调,确保换过程能够正确执行并且能够将换后的图片正确显示出来。同时,还需要处理一些异常情况,比如 pdf 文件不存在或者换失败的情况,确保程序能够稳定地运行。 总体来说,在 uniapp 项目中实现 pdf 文件图片格式的功能,需要找到合适的第三方库或者插件,并且合理利用 Vue.js 提供的功能来调用相应的接口实现换功能。处理好异步操作和异常情况,就可以在 uniapp 项目中成功实现 pdf 文件图片格式的功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值