在 vue3 项目中使用 pdfjs 渲染 pdf 文档

快速开始

  1. 安装依赖
npm i pdfjs-dist@4.5.136
  1. 将 pdf.worker.mjs 文件放入服务端静态文件中,这是为了方便在下面设置 workerSrc 准确找到资源。因为该包是通过 npm 管理的包,引用路径的时候会很不方便。而将找个 js 文件方法 public 中在开发阶段会找不到路径。因此放入服务端。该文件在 node_modules/pdfjs-dist/build/pdf.worker.mjs
  2. 页面中使用
<template>
  <div style="height: 100%;">
    <canvas id="the-canvas"></canvas>
    <button @click="nextPage">下一页</button>
  </div>
</template>

<script setup>
import {onMounted, ref} from 'vue'
// 将 pdflib 库放入到 window 对象中
import 'pdfjs-dist'

onMounted(() => {
  pdfShow()
})

const pageNum = ref(1)
const pdfContent = ref(null)
// http://192.168.1.30:30001 是本地启动的 node 服务,用于模拟服务端的情况
const pdfShow =async (url= 'http://192.168.1.30:30001/static/pdf/aaa.pdf') => {
  window.pdfjsLib.GlobalWorkerOptions.workerSrc = 'http://192.168.1.30:30001/static/pdf/pdf.worker.mjs'
  console.log(window.pdfjsLib.GlobalWorkerOptions.workerSrc);
  const pdf = await window.pdfjsLib.getDocument(url)
  pdfContent.value = pdf
  pdf.promise.then(async (res) => {2. 
    const page =await res._transport.getPage(pageNum.value)
    pageRender(page)
  })
}
const pageRender = (page) => {
  const scale = 1.5
  const viewport = page.getViewport({scale})
  const outputScale = window.devicePixelRatio || 1;
  const canvas = document.getElementById('the-canvas');
  const context = canvas.getContext('2d');
  canvas.width = Math.floor(viewport.width * outputScale);
  canvas.height = Math.floor(viewport.height * outputScale);
  canvas.style.width = Math.floor(viewport.width) + "px";
  canvas.style.height =  Math.floor(viewport.height) + "px";
  const transform = outputScale !== 1
  ? [outputScale, 0, 0, outputScale, 0, 0]
  : null;

  const renderContext = {
    canvasContext: context,
    transform: transform,
    viewport: viewport
  };
  page.render(renderContext);
}
const nextPage = () => {
  pageNum.value += 1
  console.log(pdfContent.value);
  pdfContent.value.promise.then(async (res) => {
    const page =await res._transport.getPage(pageNum.value)
    pageRender(page)
  })
}
</script>

<style lang="scss" scoped>

</style>
Vue项目使用pdfjs-dist是相对简单的。下面是一些步骤来帮助你进行集成: 1. 首先,你需要使用npm或yarn安装pdfjs-dist。在终端运行以下命令: ``` npm install pdfjs-dist ``` 或者 ``` yarn add pdfjs-dist ``` 2. 安装完成后,在你的Vue组件引入pdfjs-dist库。可以在需要使用的组件添加以下代码: ```javascript import pdfjsLib from 'pdfjs-dist' ``` 3. 接下来,你需要加载PDF文档并显示它。你可以在Vue组件的方法添加以下代码来加载和显示PDF: ```javascript loadPDF() { const url = '/path/to/your/pdf/document.pdf' pdfjsLib.getDocument(url).promise.then(pdf => { // 获取第一页 pdf.getPage(1).then(page => { const canvas = document.getElementById('pdf-canvas') const context = canvas.getContext('2d') const viewport = page.getViewport({ scale: 1 }) canvas.width = viewport.width canvas.height = viewport.height // 渲染页面到canvas上 page.render({ canvasContext: context, viewport: viewport }) }) }) } ``` 在上面的代码,你需要将`/path/to/your/pdf/document.pdf`替换为你实际的PDF文档路径。然后,将一个canvas元素添加到你的模板,并为其指定一个id(例如`pdf-canvas`)。 ```html <template> <div> <canvas id="pdf-canvas"></canvas> </div> </template> ``` 4. 最后,在适当的候调用`loadPDF`方法来加载和显示PDF文档。你可以在Vue组件的生命周期钩子或用户交互事件调用它。 希望这些步骤能帮助你在Vue项目成功使用pdfjs-dist库来加载和显示PDF文档。如果有任何问题,请随提问!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值