• Vue3 实现 PDF 文件在线预览功能


    我们可以使用 pdf.js 这个库。首先需要安装 pdf.js

    npm install pdfjs-dist
    
    • 1

    接下来,我们在 Vue3 项目中创建一个名为 PdfViewer.vue 的组件:

    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    在这个组件中,我们首先导入了 onMountedrefgetDocument。然后,我们创建了一个名为 pdfCanvas 的引用,用于存储 PDF 文件的画布元素。我们还定义了一些变量,如 pdfDoc(用于存储 PDF 文档对象)、pageNum(用于跟踪当前显示的页面)、pageRendering(用于防止在渲染过程中多次触发渲染)和 pageNumPending(用于存储待处理的页面)。

    接下来,我们定义了一个名为 renderPage 的函数,该函数接受一个页面编号作为参数。在这个函数中,我们首先将 pageRendering 设置为 true,然后获取指定页面的 PDF 对象。接着,我们创建一个画布元素,并设置其高度和宽度为 PDF 页面的视口大小。然后,我们使用 pdf.js 提供的 render 方法渲染页面,并将渲染结果绘制到画布上。最后,我们将画布元素添加到页面中。

    setup 函数中,我们使用 onMounted 钩子在组件挂载时加载 PDF 文件。我们调用 getDocument 函数获取 PDF 文档对象,并将其存储在 pdfDoc 变量中。然后,我们调用 renderPage 函数渲染第一页。

  • 相关阅读:
    CMake系列(十) CMake include的使用
    【软件测试】公司招个测试员,我又面试了100多人,结局......
    MyBatis 学习(七)之 缓存
    AWS Lambda – 函数版本,别名,API网关,CodeDeploy协同
    玩转GDAL一文带你深入Windows下FileGDB驱动支持
    天线设计中的负载牵引
    搭建 EMQX 的 MQTT 服务
    声网王浩宇:RTE 场景下的 Serverless 架构挑战【RTE 2022】
    spring ioc
    协同编辑中使用的 OT 算法是什么?
  • 原文地址:https://blog.csdn.net/weixin_54226053/article/details/134630565