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

Vue項(xiàng)目中使用pdfjs-dist實(shí)現(xiàn)在線瀏覽PDF文件功能

 更新時(shí)間:2025年08月13日 08:53:30   作者:好好好明天會(huì)更好  
pdfjs-dist是一個(gè)用于在瀏覽器中渲染 PDF 文件的 JavaScript 庫(kù),它能夠?qū)?nbsp;PDF 文件解析并渲染為 HTML5 的 canvas 元素,從而實(shí)現(xiàn)跨平臺(tái)、無(wú)需插件的 PDF 預(yù)覽,本文給大家介紹了Vue項(xiàng)目中如何使用pdfjs-dist實(shí)現(xiàn)在線瀏覽PDF文件功能,需要的朋友可以參考下

1. 安裝 pdfjs-dist

首先,通過(guò) npm 安裝 pdfjs-dist

npm install pdfjs-dist@2.5.207 --save

2. 配置 Worker 文件路徑

pdfjs-dist 需要一個(gè) Worker 文件來(lái)處理 PDF 的加載和渲染。需要指定 Worker 文件的路徑:

import * as pdfjsLib from 'pdfjs-dist';
import 'pdfjs-dist/build/pdf.worker.entry'; // 確保 worker 文件被引入

pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
  'pdfjs-dist/build/pdf.worker.min.js',
  import.meta.url
).toString();

3. 創(chuàng)建 PDF 查看器組件

在 Vue 組件中,使用 pdfjs-dist 加載并渲染 PDF 文件:

<template>
  <div>
    <canvas v-for="page in pages" :key="page" :id="`pdf-canvas-${page}`" class="pdf-page" />
  </div>
</template>

<script>
import * as pdfjsLib from 'pdfjs-dist';
import 'pdfjs-dist/build/pdf.worker.entry';

pdfjsLib.GlobalWorkerOptions.workerSrc = new URL(
  'pdfjs-dist/build/pdf.worker.min.js',
  import.meta.url
).toString();

export default {
  data() {
    return {
      pdfUrl: 'http://example.com/path/to/your.pdf', // PDF 文件路徑
      pages: 0, // PDF 總頁(yè)數(shù)
    };
  },
  mounted() {
    this.loadPdf();
  },
  methods: {
    async loadPdf() {
      const loadingTask = pdfjsLib.getDocument(this.pdfUrl);
      const pdf = await loadingTask.promise;
      this.pages = pdf.numPages; // 獲取 PDF 總頁(yè)數(shù)

      for (let i = 1; i <= this.pages; i++) {
        this.renderPage(pdf, i);
      }
    },
    renderPage(pdf, pageNumber) {
      pdf.getPage(pageNumber).then((page) => {
        const canvas = document.getElementById(`pdf-canvas-${pageNumber}`);
        const context = canvas.getContext('2d');
        const viewport = page.getViewport({ scale: 1.5 }); // 設(shè)置縮放比例
        canvas.width = viewport.width;
        canvas.height = viewport.height;

        const renderContext = {
          canvasContext: context,
          viewport,
        };
        page.render(renderContext);
      });
    },
  },
};
</script>

<style>
.pdf-page {
  border: 1px solid #ccc;
  margin-bottom: 10px;
}
</style>

到此這篇關(guān)于Vue項(xiàng)目中使用pdfjs-dist實(shí)現(xiàn)在線瀏覽PDF文件功能的文章就介紹到這了,更多相關(guān)Vue pdfjs-dist在線瀏覽PDF文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于vue項(xiàng)目proxyTable配置和部署服務(wù)器的問(wèn)題

    關(guān)于vue項(xiàng)目proxyTable配置和部署服務(wù)器的問(wèn)題

    這篇文章主要介紹了關(guān)于vue項(xiàng)目proxyTable配置和部署服務(wù)器的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue中使用swiper輪播圖的正確姿勢(shì)(親測(cè)有效)

    vue中使用swiper輪播圖的正確姿勢(shì)(親測(cè)有效)

    最近在用Vue制作移動(dòng)端項(xiàng)目,碰到了輪播圖的制作,接下來(lái)就讓小編一步一步帶大家動(dòng)作制作吧,下面這篇文章主要給大家介紹了關(guān)于vue中使用swiper輪播圖的正確姿勢(shì),需要的朋友可以參考下
    2022-06-06
  • Vuejs對(duì)象常用操作之取對(duì)應(yīng)的值、取key和value值、轉(zhuǎn)數(shù)組及合并等

    Vuejs對(duì)象常用操作之取對(duì)應(yīng)的值、取key和value值、轉(zhuǎn)數(shù)組及合并等

    最近在學(xué)Vue和javascript感覺(jué)js的好多方法都不太清楚,這里徹底總結(jié)下,這篇文章主要給大家介紹了關(guān)于Vuejs對(duì)象常用操作之取對(duì)應(yīng)的值、取key和value值、轉(zhuǎn)數(shù)組及合并等的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • element中使用formdata進(jìn)行上傳文件的方法

    element中使用formdata進(jìn)行上傳文件的方法

    本文主要介紹了elementUI中使用formdata進(jìn)行上傳文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 同步cookie插件原理及實(shí)現(xiàn)示例

    同步cookie插件原理及實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了同步cookie插件原理及實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Vue實(shí)例從初始化到掛載的完整流程

    Vue實(shí)例從初始化到掛載的完整流程

    本文詳細(xì)解析了Vue實(shí)例從初始化到掛載的完整流程,首先通過(guò)new Vue()觸發(fā)_init方法進(jìn)行初始化,依次完成配置合并、生命周期/事件/渲染初始化,需要的朋友可以參考下
    2025-12-12
  • Vue使用NPM方式搭建項(xiàng)目

    Vue使用NPM方式搭建項(xiàng)目

    這篇文章主要介紹了Vue項(xiàng)目搭建過(guò)程,使用NPM方式搭建的,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-10-10
  • element-ui如何在table中使用tooltip

    element-ui如何在table中使用tooltip

    這篇文章主要介紹了element-ui如何在table中使用tooltip問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue插槽簡(jiǎn)介和使用示例詳解

    Vue插槽簡(jiǎn)介和使用示例詳解

    插槽就是子組件中的提供給父組件使用的一個(gè)占位符,用<slot></slot>?表示,父組件可以在這個(gè)占位符中填充任何模板代碼,如?HTML、組件等,填充的內(nèi)容會(huì)替換子組件的<slot></slot>標(biāo)簽,這篇文章主要介紹了Vue插槽的理解和使用,需要的朋友可以參考下
    2023-03-03
  • vue之郵箱、密碼、手機(jī)號(hào)碼等輸入驗(yàn)證規(guī)則說(shuō)明

    vue之郵箱、密碼、手機(jī)號(hào)碼等輸入驗(yàn)證規(guī)則說(shuō)明

    這篇文章主要介紹了vue之郵箱、密碼、手機(jī)號(hào)碼等輸入驗(yàn)證規(guī)則說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10

最新評(píng)論

东辽县| 安达市| 孟村| 商丘市| 富阳市| 江永县| 申扎县| 安远县| 江口县| 深圳市| 沐川县| 沂源县| 松溪县| 衢州市| 乌拉特前旗| 随州市| 达日县| 广安市| 万宁市| 理塘县| 德阳市| 郴州市| 上蔡县| 峨边| 万全县| 麦盖提县| 故城县| 惠水县| 景德镇市| 安吉县| 岱山县| 温宿县| 屏山县| 南城县| 佛学| 仙桃市| 长白| 北碚区| 新巴尔虎左旗| 卢氏县| 通江县|