vue 预览 pdf pdf.js 的具体使用

1、下载依赖

npm  install pdfjs-dist@2.2.228

2、在需要用的页面引入

<script>
   import * as PDFJS from 'pdfjs-dist';
   export default{
      data(){
          return{
            
        }
     },
     created(){
       PDFJS.GlobalWorkerOptions.workerSrc = require('pdfjs-dist/build/pdf.worker.min.js')
     },
     mounted(){
       this.hanle()
     }
   }
</script>

3、其它都在methods

     //pdf 创建画布
     createPdfContainer(id,className) {
            var pdfContainer = document.getElementById('pdf-container');
            var canvasNew =document.createElement('canvas');
            canvasNew.id = id;
            canvasNew.className = className;
            pdfContainer.appendChild(canvasNew);
            this.loadings = false
     },
     // 渲染pdf 给pdf定宽度
     renderPDF(pdf,i,id) {
            pdf.getPage(i).then(function(page) {
                var scale = 1.67;
                var viewport = page.getViewport(scale);
                //
                //  准备用于渲染的 canvas 元素
                //
                var canvas = document.getElementById(id);
                var context = canvas.getContext('2d');
                canvas.height = viewport.height;
                canvas.width = viewport.width;

                //
                // 将 PDF 页面渲染到 canvas 上下文中
                //
                var renderContext = {
                    canvasContext: context,
                    viewport: viewport
                };
                page.render(renderContext);

            });
     },
        //创建和pdf页数等同的canvas数
    createSeriesCanvas(num,template) {
               const _this = this
            var id = '';
            for(var j = 1; j <= num; j++){
                id = template + j;
                _this.createPdfContainer(id,'pdfClass');
            }

     },
     hanle() {
          const _this= this
          _this.loadings = true
//如果pdf加密了 就用下面的obj
          let obj = {
               url:_this.dataurl,
               password:'你的密码'
          }
//如果pdf没有加密 就路径就好
    let obj = {
               url:_this.dataurl
          }
            PDFJS.getDocument(obj).then(function(pdf) {
                //用 promise 获取页面
                var id = '';
                var idTemplate = 'cw-pdf-';
                var pageNum = pdf.numPages;
                //根据页码创建画布
                _this.createSeriesCanvas(pageNum,idTemplate);
                //将pdf渲染到画布上去
                for (var i = 1; i <= pageNum; i++) {
                    id = idTemplate + i;
                    _this.renderPDF(pdf,i,id);
                }

            });
        },

4、页面

    <div class="left" ref="content">
               <div ref="pdfViewer" id="pdf-container" class="pdfView" v-loading="loadings"></div>
             </div>

相关推荐

  1. vue pdf pdf.js 具体使用

    2024-05-02 20:16:01       10 阅读
  2. vue简单图片

    2024-05-02 20:16:01       34 阅读
  3. vuePDF文件方法

    2024-05-02 20:16:01       8 阅读
  4. vue v-html 富文本里图片 使用vant

    2024-05-02 20:16:01       15 阅读
  5. vue3+vite使用viewerjs实现图片

    2024-05-02 20:16:01       8 阅读
  6. vue实现图片

    2024-05-02 20:16:01       6 阅读
  7. vue,uniapppdf等文件在线

    2024-05-02 20:16:01       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-02 20:16:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-02 20:16:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-02 20:16:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-02 20:16:01       18 阅读

热门阅读

  1. 第一章 Python基础介绍

    2024-05-02 20:16:01       9 阅读
  2. 深入解析 Spring Boot 中的 Reactor 模型

    2024-05-02 20:16:01       9 阅读
  3. PyMJCF 使用教程

    2024-05-02 20:16:01       10 阅读
  4. 分布式存储系统学习(1)

    2024-05-02 20:16:01       10 阅读
  5. Pyserini

    Pyserini

    2024-05-02 20:16:01      11 阅读
  6. Flutter:继承接口类,并将多个子类实例化

    2024-05-02 20:16:01       9 阅读
  7. 使用 Python 和 Keras 实现卷积神经网络

    2024-05-02 20:16:01       15 阅读
  8. 13、Flink 的 Operator State 详解

    2024-05-02 20:16:01       8 阅读
  9. C#面:ASP.NET 的身份验证方式有哪些

    2024-05-02 20:16:01       10 阅读
  10. 认识异常,自定义异常

    2024-05-02 20:16:01       7 阅读
  11. 创建并管理Python虚拟环境:深入理解venv

    2024-05-02 20:16:01       9 阅读