博主信息
富贵人生
博文
87
粉丝
0
评论
0
访问量
3443
积分:0
P豆:174

前端PDF文件转图片方法

2021年10月07日 21:36:51阅读数:38博客 / 富贵人生

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

<script src="http://www.fly63.com/article/detial/9814/pdfjs/build/pdf.js"></script>
<script src="http://www.fly63.com/article/detial/9814/pdfjs/build/pdf.worker.js"></script>

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

<body>
   <img :src="http://www.fly63.com/article/detial/9814/imgUrl" alt="" width="100%" height="auto">
   <canvas id="the-canvas"></canvas>
</body>

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

//url参数是pdf地址,imgUrl是最后的base64格式图片
showPdf(url) {
   let _this = this;
   let imgArr = [];
   pdfjsLib.workerSrc = 'pdf.worker.js';
   let loadingTask = pdfjsLib.getDocument(url);
   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;
   }
}


版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • pngpdf格式的:1、选中png,右击选择“打开式”-“WPS ”;2、右击选择“输出PDF”;3、在弹出的“PDF”窗口中点击“开始换”;4、输入名称和保存目录,点击
    wpspdf:首先在官网下载安装WPS2019;然后找到想要打开的,并点击鼠标右键;接着在打开式当中,选择WPS;最后点击把换成pdf标即可。
    html换为pdf:1、使用【html2canvas+jsPDF】是一种专门在js生成pdf;2、iText生成的pdf质量会更高;3、wkhtmltopdf软生成pdf支持多种
    php base64换成:首先获取到传递的值;然后设置路径和命名名称;接着将数据流写入创建的内容中;最后将路径信息返回给使用即可。
    pdf换成cad纸的:首先打开pdf,并打开CAD软;然后点击【插入-OLE对象】,并找到acrobat类型的;接着找到PDF保存的路径位置;最后PDF被打开,提示会插入到
    ps导出pdf格式的:首先打开Photoshop软;然后点击“”,并打开需要换的;接着点击软左上的“”选项;最后选择“存储为”,并在窗口的“格式”找到PDF,点击保存即可。
    php将成二进制的:首先获取需要换的;然后使用filesize()获取的大小,使用fopen()打开;最后使用fread()读取,将成二进制数据。
    php把换成二进制的:首先通过filesize函数获取指定的大小;然后使用fread及fopen函数读取;最后执行相应即可将以二进制流的形式输出到客户
    jquery修改src的:首先打开相应的代码;然后通过“$("#img1").attr("src", "img/" +index
    用layui实现上传的:首先打开html,并引用其中的layui.css和layui.js;然后调用的html代码,设置id值;最后通过“upload.render({...})”实现上传即可
    php换成二进制流的:首先创建一个PHP示例;然后获取临时名;最后通过“base64EncodeImage(strTmpName);”成二进制流即可。
    php换base64编码的实现:首先获取;然后通过“base64EncodeImage”将指定的换为base64格式编码即可。
    php将html换成:1、新建一个html2pdf的夹;2、输入“include('.
    性能优化:1、减少http请求数;2、优化;3、使用CDN;4、开启GZIP;5、样式表和JS的优化;6、使用无cookie域名;7、代码结构的优化。
    php将成base64的:首先创建一个PHP示例;然后通过“function base64EncodeImage ($image_file) {...}”成base64即可。
    php把换成二进制字符串的:首先通过“$_FILES['file']['tmp_name'];”获取临时名;然后通过base64EncodeImage函数将成二进制流;最后输出换结果即可
    css让:首先创建一个HTML示例;然后通过img标签引入;最后通过给img添加transform和animation样式属性来实现效果即可。
    php base64:首先创建一个PHP示例;然后通过“file_put_contents('.
    章《ps小技巧:如何把为手绘效果(详解)》中,给大家介绍了一种小技巧,如何把成手绘效果。下面本篇章给大家介绍如何用ps给添加透视效果的,我们一起看看怎么做。
    pdf页面并保存的:首先打开,依次选择【视-工具-页面】;然后打开页面的工具操作栏,点击【旋页面】;最后选择【-保存】即可。