vue在线预览PDF

本文介绍了如何在Vue项目中使用pdfjs-dist和axios库来实现PDF文件的在线预览功能。通过创建pdfViewer组件,并在父组件中调用,实现了显示PDF总页数和加载完成的逻辑。
摘要由CSDN通过智能技术生成

一、引入pdfjs-dist、axios包

npm i pdfjs-dist axios --save

二、pdfViewer组件

<template>
  <div
    class="pdf-viewer"
    tabIndex="1"
  >
    <!-- <div class="position page">
      <span
        class="span_1"
        @click="pageUp"
      >上一页</span>
      <span>页码:{
   {
    `${
     pageNo}/${
     totals.length}` }}</span>
      <span
        class="span_2"
        @click="pageDown"
      >下一页</span>
    </div> -->
    <div
      v-show="!copy"
      class="position info"
    >
      <!-- <div style="font-size:12px;">
        注意:此页面无法复制文本,由于部分条款较大,会导致卡顿,如需复制请到“条款标注”、“条款文本”复制,或者点击<a
          :href="`/tool/viewer?url=${encodeURIComponent(pdfUrl)}`"
          target="_blank"
        >新窗口预览</a>
      </div> -->
    </div>
    <div
      id="mainContent"
      ref="mainContent"
      class="pdf-main-content"
    >
      <div
        v-for="(item, index) in totals"
        :id="`page${id}-${item}`"
        :key="'view-'+index"
        class="pdf-box"
      >
        <div style="padding: 10px;background: #fff;">{
   {
   item}}/{
   {
   totalLength}}</div>
        <canvas
          :id="`canvas-pdf${id}-${item}`"
          class="canvas-pdf" 
        />
      </div>
    </div>
  </div>
</template>

<script>
import PDFJS from 'pdfjs-dist'
import axios from 'axios'
import 'pdfjs-dist/web/pdf_viewer.css'
const pdfjsWorker = import('pdfjs-dist/build/pdf.worker.entry');
pdfjsWorker.then(worker => {
   
  PDFJS.GlobalWorkerOptions.workerSrc = worker;
})
  
// PDFJS.workerSrc = require(pdfjs-dist/build/pdf.worker.js)
export default {
   
  name: 'PdfViewer',
  props: {
   
    pdfUrl: {
   
      type: String,
      default: ''
    },
    pdfInfo: {
   
      type: Object,
      default() {
   
        return {
   };
      }
    },
    id: {
   
      type: String,
      default: ''
    },
    copy: {
   
      type: Boolean,
      default: false
    },
    totalLength: {
   
      type: Number,
      default(){
   </
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值