zoukankan      html  css  js  c++  java
  • 基于VUE利用pdf.js实现文件流形式的pdf显示

    首先推荐大家看一下这个demo vue-pdf.js-demo,这里面包含固定本地地址,远程pdf地址,通过打开文件的方式打开pdf

    这儿我们着重介绍一下通过文件流的形式打开pdf。(所谓文件流,就是通过ajax请求,返回的数据是文件流的形式)

    1. 首先通过下载pdf.js的相关文件,当然我推荐直接拷贝 vue-pdf.js-demo里面的文件,然后放到static目录里面

    2. 第二步就是直接使用了

    在组件中合适的地方放入 iframe

    <iframe class="prism-player" :src="pdfUrl" width="100%" height="100%"></iframe>
    

    3. 然后就是获取pdfUrl(这儿也推荐两种方式)

    第一种,直接调用文件流的请求地址

    // 这儿的url, 就是通过 axios 进行请求的地址,只不过换成了从导航url进行请求的方式
    let url = process.env.BASE_API + '/coursePartDetail/getFileStreamByCoursePartDetailId?CoursePartDetailId=' + this.sectionMsg.id
    this.pdfUrl = `/static/pdf/web/viewer.html?file=${encodeURIComponent(url)}`
    

    第二种,通过 axios 请求获取到的文件流进行处理(当然如果有加密相关的也可以通过这种方式,将获取到的文件进行解密,这种方式就要自己去研究了)

    // 这儿的 getPdf() 是获取文件流的 axios 封装方法
    getPdf().then( res => {
        // 这儿的res是返回的文件流
        this.pdfUrl  = this.getObjectURL(res)
    })
    
    // 将返回的流数据转换为url
    getObjectURL(file) {
          let url = null;
          if (window.createObjectURL != undefined) { // basic
              url = window.createObjectURL(file);
          } else if (window.webkitURL != undefined) { // webkit or chrome
              try {
                url = window.webkitURL.createObjectURL(file);            
              } catch (error) {
                
              }
          } else if (window.URL != undefined) { // mozilla(firefox)
            try {
              url = window.URL.createObjectURL(file);
            } catch (error) {
              
            }
          }
          return url;
        }
    
  • 相关阅读:
    eclipse中统计代码行数
    vmware ubuntu 最近遇到的一些问题
    Shows how to create and run composites dynamically
    程序员的艺术:排序算法舞蹈
    Apache Mina 网络通信
    OutOfMemoryError汇总
    c++/java/c# 几种编程语言的指针、引用比较
    Silverlight开发工具集合
    web.cong 详解
    ASP.NET中的web.config配置
  • 原文地址:https://www.cnblogs.com/usebtf/p/10329977.html
Copyright © 2011-2022 走看看