Vue项目实现在线预览pdf 使用pdfjs实现


实现pdf在线预览   需求是不能另存为pdf(若使用iframe直接嵌入浏览器可以随意另存为) 

这样实现后把用户的右键、F12禁止即可

//html
<
div class="pdf-box"> <canvas v-for="i in pageCount" :key="i" class="myCanvas"></canvas> </div>

 

//JS  npm i pdfjs-dist@2.0.943(我的pdfjs版本)
import pdfJS from "pdfjs-dist/webpack.js";
export default {
  name: "PDFViewer",
  props: {
    src: {
      type: String,
      default: null
    }
  },
  data() {
    return {
      pageCount: 0 // 总页数
    };
  },
  created() {},
  mounted() {
    this.init();
  },
  methods: {
    // 初始化pdf
    init() {
      pdfJS.getDocument(this.src).promise.then(pdfDoc => {
        this.pageCount = pdfDoc.numPages;
        this.renderPage(pdfDoc);
      });
    },
    async renderPage(pdfDoc) {
      let canvas;
      await this.$nextTick(() => {
        canvas = document.querySelectorAll(".myCanvas");
      });
      // U
      console.log(canvas);
      canvas.forEach((item, index) => {
        pdfDoc.getPage(index + 1).then(page => {
          let viewport = page.getViewport(1); //得到一个页面
          item.height = viewport.height;
          item.width = viewport.width;
          console.log(viewport, item);
          let ctx = item.getContext("2d");
          var renderContext = {
            canvasContext: ctx, //画布
            viewport: viewport //内容
          };
          page.render(renderContext);
        });
      });
    }
  }
};

 

注意:引入pdfjs 要引入打包完成的webpack.js文件  不能直接引用

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM