最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.0使用vue-pdf-embed在線預(yù)覽pdf 控制頁(yè)碼顯示范圍不生效問(wèn)題解決

 更新時(shí)間:2023年01月15日 15:11:32   作者:猴小七兒  
這篇文章主要介紹了vue3.0使用vue-pdf-embed在線預(yù)覽pdf 控制頁(yè)碼顯示范圍不生效問(wèn)題的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

vue3.0使用vue-pdf-embed在線預(yù)覽pdf 控制頁(yè)碼顯示范圍不生效問(wèn)題

本來(lái)想的很簡(jiǎn)單 覺(jué)得 把要展示到第幾頁(yè)的頁(yè)碼給到v-for的 i in PageRange 中的PageRange即可 但是本地沒(méi)問(wèn)題 打包部署就不顯示pdf

1.先安裝vue-pdf-embed

具體的安裝使用方法可以參考文章末尾介紹。
安裝使用中可能遇到的問(wèn)題都有寫(xiě) 很詳細(xì),跳轉(zhuǎn)到文末詳細(xì)講解。

2.安裝后 在使用頁(yè)面引入 

  import VuePdfEmbed from "vue-pdf-embed";
 components:{
    VuePdfEmbed,
 },
 <div>
    <vue-pdf-embed v-for="i in PageRange" :source="pdfSrc " :key="i" :page="i"></vue-pdf-embed>
  </div>
 data () {
      return {
        pdfSrc : '',
        PageRange: undefined, // pdf顯示的頁(yè)碼范圍
      }
    },
 	// 獲取pdf
      getPdf() {
        this.pdfSrc = 'data:application/pdf;base64,' + ‘base64'
        this.PageRange= parseInt('10') // 這里是需要顯示的頁(yè)碼范圍 eg: 10 50 100
      }

之前本地控制頁(yè)面顯示范圍一直沒(méi)有什么問(wèn)題 打包部署 pdf不加載
以為是加載順序?qū)е碌?嘗試多次修改后無(wú)效 我甚至還翻譯了官方文檔

我的神奇同事找到的最終原因:
parseInt()
這貨竟然要parseInt一下才行!?。?/p>

PS:vue3.0借用vue-pdf-embed實(shí)現(xiàn)在線預(yù)覽pdf文件

在需求中,經(jīng)常遇見(jiàn)pdf的在線預(yù)覽效果
很多pdf插件不支持vue3,或者是沒(méi)有集成翻頁(yè)放大縮小功能,比如vue-pdf。
實(shí)現(xiàn)原理:借用依賴(lài)vue-pdf-embed(pdf預(yù)覽),pdfjs-dist(獲取pdf總頁(yè)數(shù))
借用文檔:https://juejin.cn/post/6995856687106261000

實(shí)現(xiàn)效果

在這里插入圖片描述

實(shí)現(xiàn)步驟

一:安裝依賴(lài)

npm i vue-pdf-embed -S
npm install --save pdfjs-dist

二:頁(yè)面使用

vue文件中

<template>
  <div>
    <div class="div">
        <p class="arrow" style="text-align:center">
	        <!-- // 上一頁(yè) -->
	        <van-tag color="#7232dd" plain @click="prev">上一頁(yè)</van-tag>
	        {{pageNum}} / {{numPages}}
	        <!-- // 下一頁(yè) -->
	        <van-tag color="#7232dd" @click="next" style="margin-left: 5px>下一頁(yè)</van-tag>
	    </p>
	    <p style="text-align:center">
	      <van-tag color="#7232dd" plain @click="zoomA">放大</van-tag>
	      <van-tag color="#7232dd" @click="zoomB" style="margin-left: 5px">縮小</van-tag>
	    </p>
    </div>
    <vue-pdf-embed :source="source"
      class="vue-pdf-embed"
      :style="scaleFun"
      :page="pageNum" />
  </div>
</template>
<style scoped>
.div {
  top: 0;
  position: fixed;
  z-index: 999;
}
.vue-pdf-embed {
  text-align: center;
}
</style>

js文件中

// 引入組件
import VuePdfEmbed from "vue-pdf-embed";
const PDF = require('pdfjs-dist')
// 頁(yè)面報(bào)錯(cuò)解決,在將 pdfjs-dist/build/pdf.worker.js 復(fù)制一份放到項(xiàng)目 public 目錄下后引入
PDF.GlobalWorkerOptions.workerSrc = '/pdf.worker.js'
// 引入文件
import pdfUrl from '@/assets/file/example.pdf'
export default {
  components: {
    VuePdfEmbed,
  },
  data() {
    return {
      source: pdfUrl, // 文件路徑
      pageNum: 1, // 當(dāng)前頁(yè)數(shù)
      scale: 1,  // 縮放比例
      numPages: 0, // 總頁(yè)數(shù)
    };
  },
  mounted() {
    // 獲取總頁(yè)數(shù)
    this.getPdfNumPages()
  },
  computed: {
    scaleFun(index) { // 縮放
     var scale = this.scale;
      return `transform:scale(${scale})`;
    },
  },
  methods: {
     getPdfNumPages() {
      const url = this.source
      const loadingTask = PDFJS.getDocument(url)
      loadingTask.promise.then(pdf => {
        this.numPages = pdf.numPages
      })
    },
    prev() {
      if (this.pageNum > 1) {
        this.pageNum -= 1;
      }
    },
    next() {
      if (this.pageNum < this.numPages) {
        this.pageNum += 1;
      }
    },
    zoomA() {
      this.scale += 0.1;
    },
    zoomB() {
      this.scale -= 0.1;
    },
  },
};

三:可能報(bào)錯(cuò)一

問(wèn)題原因

缺少解析pdf所需loader

問(wèn)題解決

1:下載依賴(lài)

file-loader:file-loader可以用來(lái)幫助webpack打包處理一系列的文件;比如:.png 、 .jpg 、.jepg等格式的圖片,pdf格式的文件等等

npm install --save-dev file-loader
or
cnpm install --save-dev file-loader

2:配置vue.config.js文件

const path = require('path');
module.exports = {
	// webpack配置
	chainWebpack: config => { 
	   config.module.rule('pdfjs-dist').test({
         test: /\.js$/,
         include: path.join(__dirname, 'node_modules/pdfjs-dist')
       }).use('babel-loader').loader('babel-loader').options({
         presets: ['@babel/preset-env'],
         plugins: ['@babel/plugin-proposal-optional-chaining']
       }),
	  config.module
	  .rule('pdf')
	  .test(/\.pdf$/)
	  .use('file')
	    .loader('file-loader')
	    .end();
	}
}

三:可能報(bào)錯(cuò)二

在這里插入圖片描述

問(wèn)題原因

需要在引入 pdfjs-dist 之后配置 workerSrc ,但是引入 pdfjs-dist/build/pdf.worker.entry 之后瀏覽器還是有個(gè)警告:Warning: Setting up fake worker. ,經(jīng)過(guò)各種原因查找,最終找到了一句描述:pdf.worker.js必須位于自己的文件中(而不是與pdf.js捆綁在一起)。否則它不能在服務(wù)工作線程中運(yùn)行。

問(wèn)題解決

將 pdfjs-dist/build/pdf.worker.js 復(fù)制一份放到項(xiàng)目 public 目錄下

1:放置文件

在這里插入圖片描述

在node-module文件夾中,如圖找到pdfjs-dist/build/pdf.worker.js
放置到項(xiàng)目 public,與index.html同級(jí)

2:配置頁(yè)面中的js文件

// 也就是本文js文件中,最上方引入的代碼
PDF.GlobalWorkerOptions.workerSrc = '/pdf.worker.js'

到此這篇關(guān)于vue3.0使用vue-pdf-embed在線預(yù)覽pdf 控制頁(yè)碼顯示范圍不生效問(wèn)題的文章就介紹到這了,更多相關(guān)vue3.0在線預(yù)覽pdf 控制頁(yè)碼顯示范圍不生效內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue 中 a標(biāo)簽上href無(wú)法跳轉(zhuǎn)的解決方式

    Vue 中 a標(biāo)簽上href無(wú)法跳轉(zhuǎn)的解決方式

    今天小編大家分享一篇Vue 中 a標(biāo)簽上href無(wú)法跳轉(zhuǎn)的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Vue封裝的可編輯表格插件方法

    Vue封裝的可編輯表格插件方法

    今天小編就為大家分享一篇Vue封裝的可編輯表格插件方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • vue前臺(tái)顯示500和405錯(cuò)誤的解決(springboot為后臺(tái))

    vue前臺(tái)顯示500和405錯(cuò)誤的解決(springboot為后臺(tái))

    這篇文章主要介紹了vue前臺(tái)顯示500和405錯(cuò)誤的解決(springboot為后臺(tái)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Vue條件判斷之循環(huán)舉例詳解

    Vue條件判斷之循環(huán)舉例詳解

    在Vue進(jìn)行前端開(kāi)發(fā)中,條件判斷主要用于根據(jù)不同的條件來(lái)決定顯示或隱藏,或者進(jìn)行視圖之間的切換,這篇文章主要給大家介紹了關(guān)于Vue條件判斷之循環(huán)舉例詳解的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • Vue為何棄用Ajax,選擇Axios?ajax與axios的區(qū)別?

    Vue為何棄用Ajax,選擇Axios?ajax與axios的區(qū)別?

    ajax技術(shù)實(shí)現(xiàn)了局部數(shù)據(jù)的刷新,axios實(shí)現(xiàn)了對(duì)ajax的封裝;axios有的ajax都有,ajax有的axios不一定有。總結(jié)一句話就是axios是ajax,ajax不止axios。
    2023-01-01
  • react和vue的事件處理差異詳解

    react和vue的事件處理差異詳解

    這篇文章主要介紹了react和vue的事件處理差異,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue treeselect獲取當(dāng)前選中項(xiàng)的label實(shí)例

    vue treeselect獲取當(dāng)前選中項(xiàng)的label實(shí)例

    這篇文章主要介紹了vue treeselect獲取當(dāng)前選中項(xiàng)的label實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Vue OptionsAPI與CompositionAPI的區(qū)別與使用介紹

    Vue OptionsAPI與CompositionAPI的區(qū)別與使用介紹

    OptionsAPI和CompositionAPI是Vue.js框架中兩種不同的組件編寫(xiě)方式,OptionsAPI通過(guò)對(duì)象字面量定義組件,以屬性分隔不同功能,響應(yīng)式數(shù)據(jù)通過(guò)data屬性定義,本文給大家介紹Vue OptionsAPI與CompositionAPI的區(qū)別,感興趣的朋友一起看看吧
    2024-10-10
  • vue3+vite+tdesign實(shí)現(xiàn)日歷式可編輯的排課班表填寫(xiě)功能

    vue3+vite+tdesign實(shí)現(xiàn)日歷式可編輯的排課班表填寫(xiě)功能

    本文介紹了如何使用Vue3和tdesign實(shí)現(xiàn)一個(gè)日歷式、可編輯的排班填寫(xiě)功能,開(kāi)發(fā)過(guò)程中面臨了年份和月份下拉框的實(shí)現(xiàn)、周期顯示以及可編輯日歷的樣式和數(shù)據(jù)獲取等挑戰(zhàn),感興趣的朋友一起看看吧
    2025-01-01
  • Vue中原生template標(biāo)簽失效如何解決

    Vue中原生template標(biāo)簽失效如何解決

    這篇文章主要介紹了Vue中原生template標(biāo)簽失效如何解決,找了整一天也沒(méi)找著這事件為什么觸發(fā)不了,第二天意識(shí)到原生代碼里的template可能有問(wèn)題,在原生環(huán)境中template標(biāo)簽內(nèi)部的東西是不會(huì)渲染出來(lái)的,雖然解析器在加載頁(yè)面的時(shí)候確實(shí)會(huì)處理這部分代碼片段
    2023-02-02

最新評(píng)論

阿尔山市| 桑植县| 安宁市| 淮阳县| 肇源县| 娱乐| 苏尼特左旗| 额尔古纳市| 安国市| 翁牛特旗| 册亨县| 府谷县| 阿尔山市| 金坛市| 嘉鱼县| 嘉荫县| 太原市| 陵水| 古田县| 嵊泗县| 东光县| 恭城| 仁化县| 双城市| 保亭| 淅川县| 巴彦淖尔市| 丹东市| 沾益县| 雷州市| 奈曼旗| 黄陵县| 蓬安县| 霍林郭勒市| 泸州市| 宜阳县| 吉木萨尔县| 贵南县| 南川市| 南开区| 武义县|