国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【vue-pdf】PDF文件預(yù)覽插件

這篇具有很好參考價(jià)值的文章主要介紹了【vue-pdf】PDF文件預(yù)覽插件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1 插件安裝

npm install vue-pdf

vue-pdf GitHub:https://github.com/FranckFreiburger/vue-pdf#readme

參考文檔:https://www.cnblogs.com/steamed-twisted-roll/p/9648255.html

catch報(bào)錯(cuò):vue-pdf組件報(bào)錯(cuò)vue-pdf Cannot read properties of undefined (reading ‘catch‘)_你看我像是會(huì)的樣子嗎?的博客-CSDN博客

2 代碼示例

Example.01 超簡(jiǎn)單分頁(yè)預(yù)覽

<template>
    <div class="container">
      <div class="header">
        <van-nav-bar
          title="文件預(yù)覽"
          left-text="關(guān)閉"
          left-arrow
          @click-left="returnTo"
        />
      </div>
      <div class="main">
        <pdf
          :src="src"
          :page="currentPage"
          @num-pages="pageCount=$event"
          @page-loaded="currentPage=$event"
          @loaded="loadPdfHandler">
        </pdf>
      </div>
      <div class="footer">
        <van-pagination v-model="currentPage" :page-count="pageCount" mode="simple"/>
      </div>
    </div>
</template>

<script>
  import pdf from 'vue-pdf'
  // 引入api
  import { getItemDetailAPI } from '@/api'

  export default {
    name: 'PreView',
    components: {
      pdf
    },
    data () {
      return {
        file_id: '',
        src: '',
        currentPage: 0, // pdf文件頁(yè)碼
        pageCount: 0 // pdf文件總頁(yè)數(shù)
      }
    },
    created () {
      this.file_id = this.$route.query.item_id
      // this.fetchFileDetail()
      this.src = '/files/xxxx.pdf' // 本地測(cè)試版
    },
    methods: {
      returnTo () {
        // this.$router.go(-1)
        this.$router.back() // 返回
      },
      // 改變PDF頁(yè)碼,val傳過(guò)來(lái)區(qū)分上一頁(yè)下一頁(yè)的值,0上一頁(yè),1下一頁(yè)
      changePdfPage (val) {
        // console.log(val)
        if (val === 0 && this.currentPage > 1) {
          this.currentPage--
          // console.log(this.currentPage)
        }
        if (val === 1 && this.currentPage < this.pageCount) {
          this.currentPage++
          // console.log(this.currentPage)
        }
      },
      // pdf加載時(shí)
      loadPdfHandler (e) {
        this.currentPage = 1 // 加載的時(shí)候先加載第一頁(yè)
      },
      // 根據(jù)fileId獲取文件
      async fetchFileDetail () {
        /** 文件地址 **/
          // this.src = `/hbdjv1/files/${this.file_name}` // 發(fā)布版
          // this.src = `/files/${this.file_name}` // 本地測(cè)試版
        const params = {
            file_id: this.file_id
          }
        this.$toast.loading({ // 打開(kāi)toast提示
          message: '加載中...',
          forbidClick: true,
          loadingType: 'spinner',
          duration: 0
        })
        console.log('=====文件詳情===')
        console.log(params)
        const res = await getItemDetailAPI(params)
        this.$toast.clear() // 關(guān)閉toast
        if (res && res.code === 200) {
          if (res.data && res.data.length > 0) {
            this.src = res.data[0].url
          }
        }
      }
    }
  }
</script>

Example.02 少于20頁(yè)滾動(dòng)預(yù)覽,多于20分頁(yè)預(yù)覽文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-622245.html

<template>
  <div class="container">
    <div class="header">
      <van-nav-bar
        title="文件預(yù)覽"
        left-text="關(guān)閉"
        left-arrow
        @click-left="returnTo"
      />
    </div>
    <div class="main" v-if="loaded">
      <!-- 頁(yè)數(shù) <= 20 直接滑動(dòng) -->
      <div v-show="pageCount <= divider ">
        <pdf v-for="index in pageCount" :key="index" :src="src" :page="index"></pdf>
      </div>
      <!-- 頁(yè)數(shù) > 20 分頁(yè) -->
      <div v-show="pageCount > divider">
        <pdf
          :src="src"
          :page="currentPage"
          @num-pages="pageCount=$event"
          @page-loaded="currentPage=$event"
          @loaded="loadPdfHandler">
        </pdf>
      </div>
    </div>
    <div class="footer" v-show="pageCount > divider" v-if="loaded">
      <van-pagination v-model="currentPage" :page-count="pageCount" mode="simple"/>
    </div>
    <van-empty description="文件加載失敗" v-else/>
  </div>
</template>
<script>
  import pdf from 'vue-pdf'
  // 引入api
  import { getItemDetailAPI } from '@/api'

  export default {
    name: 'PreView',
    components: {
      pdf
    },
    data () {
      return {
        file_id: '',
        src: '',
        currentPage: 0, // pdf文件頁(yè)碼
        pageCount: 0, // pdf文件總頁(yè)數(shù)
        divider: 20, // 設(shè)置分割數(shù)
        loaded: false
      }
    },
    created () {
      this.file_id = this.$route.query.item_id
      this.fetchFileDetail()
    },
    methods: {
      returnTo () {
        // this.$router.go(-1)
        this.$router.back() // 返回
      },
      // 改變PDF頁(yè)碼,val傳過(guò)來(lái)區(qū)分上一頁(yè)下一頁(yè)的值,0上一頁(yè),1下一頁(yè)
      changePdfPage (val) {
        // console.log(val)
        if (val === 0 && this.currentPage > 1) {
          this.currentPage--
          // console.log(this.currentPage)
        }
        if (val === 1 && this.currentPage < this.pageCount) {
          this.currentPage++
          // console.log(this.currentPage)
        }
      },
      // pdf加載時(shí)
      loadPdfHandler (e) {
        this.currentPage = 1 // 加載的時(shí)候先加載第一頁(yè)
      },
      // 根據(jù)fileId獲取文件
      async fetchFileDetail () {
        /** 文件地址 **/
          // this.src = `/hbdjv1/files/${this.file_name}` // 發(fā)布版
          // this.src = `/files/${this.file_name}` // 本地測(cè)試版
        const params = {
            file_id: this.file_id
          }
        this.$toast.loading({ // 打開(kāi)toast提示
          message: '加載中...',
          forbidClick: true,
          loadingType: 'spinner',
          duration: 0
        })
        console.log('=====文件詳情===')
        console.log(params)
        const res = await getItemDetailAPI(params)
        this.$toast.clear() // 關(guān)閉toast
        if (res && res.code === 200) {
          if (res.data && res.data.length > 0) {
            // this.src = res.data[0].url
            this.src = pdf.createLoadingTask(res.data[0].url)
            this.src.promise.then(pdf => {
              this.$nextTick(() => {
                this.pageCount = pdf.numPages // pdf總頁(yè)數(shù)
                this.loaded = true
              })
            })
          }
        }
      }
    }
  }
</script>

到了這里,關(guān)于【vue-pdf】PDF文件預(yù)覽插件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue前端預(yù)覽pdf并加水印、ofd文件,控制打印、下載、另存,vue-pdf的使用方法以及在開(kāi)發(fā)中所踩過(guò)的坑合集

    vue前端預(yù)覽pdf并加水印、ofd文件,控制打印、下載、另存,vue-pdf的使用方法以及在開(kāi)發(fā)中所踩過(guò)的坑合集

    根據(jù)公司的實(shí)際項(xiàng)目需求,要求實(shí)現(xiàn)對(duì)pdf和ofd文件的預(yù)覽,并且需要限制用戶是否可以下載、打印、另存pdf、ofd文件,如果該用戶可以打印、下載需要控制每個(gè)用戶的下載次數(shù)以及可打印的次數(shù)。正常的預(yù)覽pdf很簡(jiǎn)單,直接調(diào)用瀏覽器的預(yù)覽就可以而且功能也比較全,但是一

    2024年02月16日
    瀏覽(93)
  • 前端(vue)js在線預(yù)覽PDF、Word、Excel、ppt等office文件

    可選參數(shù) pdf=true,word文檔嘗試以pdf方式顯示,默認(rèn)false watermark=水印文本,顯示文本水?。弧癷mg:”+圖片url表示圖片水印,如:img:https://view.xdocin.com/demo/wm.png saveable=true,是否允許保存源文件,默認(rèn)false printable=false,是否允許打印,默認(rèn)true ?able=false,是否允許選擇復(fù)制內(nèi)容,

    2024年02月13日
    瀏覽(94)
  • 使用vue-pdf插件加載pdf

    使用vue-pdf插件加載pdf

    安裝: 使用: 報(bào)錯(cuò):? 這樣執(zhí)行會(huì)報(bào)一個(gè)catch的錯(cuò)誤,然后找到node_modules下面的vue-pdf目錄src文件下面的pdfjsWrapper.js文件中,第197行的catch注釋掉就好。

    2024年01月18日
    瀏覽(15)
  • 前端js打開(kāi)pdf文件--文件通過(guò)瀏覽器打開(kāi),以pdf形式進(jìn)行預(yù)覽

    通過(guò)點(diǎn)擊button按鈕,觸發(fā) @click=\\\"openPDF(performance_report)\\\"方法,把對(duì)應(yīng)需要展示的pdf傳送到openPDF()方法內(nèi),這里的pdf文件格式必須包括id、name、url。 在這里,performance_report為預(yù)覽的文件:

    2024年02月14日
    瀏覽(34)
  • Vue中使用pdf.js實(shí)現(xiàn)在線預(yù)覽pdf文件流

    以下是在Vue中使用pdf.js實(shí)現(xiàn)在線預(yù)覽pdf文件流的步驟: 在需要使用的組件中,使用以下代碼引入pdf.js: 使用pdf.js的 getDocument() 方法加載pdf文件流??梢詫⑽募髯鳛锽lob對(duì)象傳遞給該方法。例如,可以使用axios從服務(wù)器獲取pdf文件流: 在 loadPdf() 方法中,使用 getDocument() 方法

    2024年02月09日
    瀏覽(96)
  • vue+pdf.js預(yù)覽本地pdf文件(可以復(fù)制文本,滾動(dòng)頁(yè)碼展示)

    vue+pdf.js預(yù)覽本地pdf文件(可以復(fù)制文本,滾動(dòng)頁(yè)碼展示)

    1、安裝pdfjs-dist插件,推薦使用2.0.943這個(gè)版本 2、頁(yè)面中引入使用 3、頁(yè)面標(biāo)簽 3、解析pdf,獲取pdf所有頁(yè)數(shù)據(jù),使用canvas渲染,并使用TextLayerBuilder創(chuàng)建文本層,可以復(fù)制文本信息 在渲染pdf數(shù)據(jù)時(shí),當(dāng)pdf文件很大渲染量很多時(shí),會(huì)導(dǎo)致頁(yè)面卡住,無(wú)法執(zhí)行其他操作;這涉及到

    2024年01月21日
    瀏覽(28)
  • vue 純前端預(yù)覽pdf,純前端實(shí)現(xiàn)pdf加水印下載文件也帶水印,防止pdf下載

    vue 純前端預(yù)覽pdf,純前端實(shí)現(xiàn)pdf加水印下載文件也帶水印,防止pdf下載

    ? 原理:主要是利用pdfh5這個(gè)插件來(lái)完成的 ? 使用方法: ? 1.頁(yè)面需要有一個(gè)容器例子:div id=\\\"demo\\\"/div ? 2.下載pdfh5插件 npm install pdfh5 ? (注意:webpack5之后不會(huì)下載polyfill 需要手動(dòng)下載 所以引入pdfh5的時(shí)候會(huì)報(bào)錯(cuò)) ? 解決方案:下載 node-polyfill-webpack-plugin npm install node-polyfill-

    2024年04月15日
    瀏覽(129)
  • vue-pdf多頁(yè)預(yù)覽異常,Rendering cancelled, page 1 Error at BaseExceptionClosure xxx

    vue-pdf多頁(yè)預(yù)覽異常,Rendering cancelled, page 1 Error at BaseExceptionClosure xxx

    項(xiàng)目開(kāi)發(fā)使用vue-pdf,單頁(yè)情況預(yù)覽正常,多頁(yè)vue-pdf預(yù)覽異常,第一次預(yù)覽時(shí),會(huì)先彈出異常模態(tài)窗口,關(guān)閉模態(tài)窗口,pdf又是正常顯示,報(bào)錯(cuò)信息及異常截圖如下: 異常截圖,點(diǎn)擊右上角關(guān)閉X,pdf是正常預(yù)覽,再次打開(kāi)后也能正常預(yù)覽,僅第一次打開(kāi)預(yù)覽有異常。 1.vue-pdf預(yù)

    2024年02月07日
    瀏覽(23)
  • 【vue2】純前端實(shí)現(xiàn)本地的pdf/word/epub文件預(yù)覽

    需求是預(yù)覽本地的pdf/word/epub格式的文件,但是搜索后發(fā)現(xiàn)沒(méi)有可以直接使用的,格式不同,顯示的方式和效果也都略有不同。 最后還是 分別實(shí)現(xiàn)預(yù)覽 的功能。 如果只需要預(yù)覽pdf/word等格式的話,可以使用的方案:vue-office,支持多種文件(docx、excel、pdf)預(yù)覽的vue組件庫(kù),支持

    2024年02月11日
    瀏覽(38)
  • 【vue2】純前端實(shí)現(xiàn)本地的pdf/word/epub文件預(yù)覽(包括pdf選中文字,epub高亮等)

    需求是預(yù)覽本地的pdf/word/epub格式的文件,但是搜索后發(fā)現(xiàn)沒(méi)有可以直接使用的,格式不同,顯示的方式和效果也都略有不同。 最后還是 分別實(shí)現(xiàn)預(yù)覽 的功能。 如果只需要預(yù)覽pdf/word等格式的話,可以使用的方案:vue-office,支持多種文件(docx、excel、pdf)預(yù)覽的vue組件庫(kù),支持

    2024年02月11日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包