欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1. 安裝 pdfjs-dist

首先,通過 npm 安裝 pdfjs-dist

npm install pdfjs-dist@2.5.207 --save

2. 配置 Worker 文件路徑

pdfjs-dist 需要一個 Worker 文件來處理 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 總頁數(shù)
    };
  },
  mounted() {
    this.loadPdf();
  },
  methods: {
    async loadPdf() {
      const loadingTask = pdfjsLib.getDocument(this.pdfUrl);
      const pdf = await loadingTask.promise;
      this.pages = pdf.numPages; // 獲取 PDF 總頁數(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 }); // 設置縮放比例
        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項目中使用pdfjs-dist實現(xiàn)在線瀏覽PDF文件功能的文章就介紹到這了,更多相關(guān)Vue pdfjs-dist在線瀏覽PDF文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue項目中用cdn優(yōu)化的方法

    vue項目中用cdn優(yōu)化的方法

    本篇文章主要介紹了vue項目中用cdn優(yōu)化的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Vue 列表上下過渡效果的實例代碼

    Vue 列表上下過渡效果的實例代碼

    最近有個需求,一個列表上下移動要有簡單過渡效果。本文通過實例代碼給大家介紹Vue 列表上下過渡效果,需要的朋友可以參考下
    2019-06-06
  • vue3封裝Element導航菜單的實例代碼

    vue3封裝Element導航菜單的實例代碼

    這篇文章主要介紹了vue3封裝Element導航菜單的實例代碼,分為菜單數(shù)據(jù)格式示例,控制導航收縮的詳細代碼,本文通過實例代碼介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Vue-Router基礎學習筆記(小結(jié))

    Vue-Router基礎學習筆記(小結(jié))

    這篇文章主要介紹了Vue-Router基礎學習筆記(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • vue中keep-alive的用法及問題描述

    vue中keep-alive的用法及問題描述

    這篇文章主要介紹了vue中keep-alive的用法及問題描述,本文給大家介紹的非常詳細,具有一定的參考解決價值,需要的朋友可以參考下
    2018-05-05
  • vue.js編譯時給生成的文件增加版本號

    vue.js編譯時給生成的文件增加版本號

    這篇文章主要介紹了vue.js編譯時給生成的文件增加版本號,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Vue關(guān)于組件化開發(fā)知識點詳解

    Vue關(guān)于組件化開發(fā)知識點詳解

    在本篇文章里,小編給大家分享的是關(guān)于Vue關(guān)于組件化開發(fā)知識點詳解內(nèi)容,有興趣的朋友們可以學習下。
    2020-05-05
  • vue3+ts vite打包結(jié)構(gòu)控制通過rollup進行配置方式

    vue3+ts vite打包結(jié)構(gòu)控制通過rollup進行配置方式

    這篇文章主要介紹了vue3+ts vite打包結(jié)構(gòu)控制通過rollup進行配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • vue基于el-table拓展之table-plus組件

    vue基于el-table拓展之table-plus組件

    本文主要介紹了vue基于el-table拓展之table-plus組件,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue在?for?循環(huán)里使用異步調(diào)用?async/await的方法

    vue在?for?循環(huán)里使用異步調(diào)用?async/await的方法

    大家都遇到這樣的問題,在使用函數(shù)的async/await異步調(diào)用時候,放在正常函數(shù)中單個調(diào)用時沒有問題的,但是await放在forEach()循環(huán)里面就會報錯,本文給大家介紹vue?如何在?for?循環(huán)里面使用異步調(diào)用?async/await,感興趣的朋友一起看看吧
    2023-10-10

最新評論