使用pdfjs预览pdf文件
发表于:2024-04-08 |

前言

我们在开发过程中,经常会有pdf预览的需求,一般我们使用iframe即可,但是不同浏览器,显示效果不一样,体验非常不好,使用一些现成的库,我们的自定义的属性能力又不是很强,这时候,一般就需要用到一个偏底层的库了,这里就包含了pdfjs。

下载地址

首先,我们需要去下载一下pdfjs的压缩包
压缩包下载
地址: https://mozilla.github.io/pdf.js/getting_started/#download

目录结构

这里我们可以把下载后的压缩包解压出来,这里以vite-vue3的项目举例,我们将解压后的压缩包放到public下面
目录结构
我们可以清楚看到,这个pdfjs有俩个文件夹,一个build,一个web,我们可以根据自己的需要去修改这里的代码

基本使用

这里我项目启动的端口号是5173,所以他是localhost:5173,然后我们一层一层找下去,然后根据你的版本号调整pdfjs的地址,然后我们需要一个pdf的地址,将地址和pdf的文件地址进行拼接,注意,这里如果是跨域的暂时会报错,然后我们通过一个iframe来进行显示。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script setup>
// pdfjs文件地址
const fileUrl = 'http://localhost:5173/pdfjs-4.0.379-dist/web/viewer.html?file=';
// pdf地址
const pdfUrl='https://rocket-chat.oss-cn-hangzhou.aliyuncs.com/202404/1677/e9672b21c0224e34a6247de40c132384.pdf'
// 真实展示的地址
const url=fileUrl + encodeURIComponent(pdfUrl);
</script>

<template>
<div class="container">
<iframe :src="url" frameborder="0" width="100%" height="100%"></iframe>
</div>
</template>

<style scoped>
.container{
width: 60vw;
height: 60vh;
}
</style>

此时我们的pdf预览是这样的,是报错的
预览报错

调整避免跨域

这里我们只需要调整,在viewer.mjs中,将下面这段代码注释掉,或者你选择将你的服务的域名添加到上面的数组里面去,比如我服务启动地址是http://localhost:5173
避免跨域
此时我的pdf已经可以通过地址预览了,这里需要注意还有浏览器跨域,就是后端的pdf的请求地址做了限制,这个需要让后端进行一定的配合。
pdf预览

按钮的显示与隐藏

接下来说一下,我们按钮的显示与隐藏,我们通过调试器找到那个按钮,你想隐藏哪个你就可以直接display:none
按钮显示与隐藏
同理,如果是要调整样式或者位置,你就将整块dom给移走或者调整样式即可,这个我就不多阐述了。
直接在viewer.html中添加行内style,或者通过viewer.css修改样式

内部按钮移动出来

最后讲解一下,按钮如何调整,比如我们想要把隐藏部分的功能给移到外面来
就拿他的手势行为来做好了
手势行为
我们根据浏览器的调试器找到代码中写这块代码的部分
代码部分
把代码移动到我们的外边的代码旁边,把class给替换成toolbar的class即可
代码部分
代码部分

结语

本篇文章介绍了如何简单使用pdfjs,以及如何将pdfjs按照自己的需求进行调整,更多内容敬请期待,债见~

上一篇:
使用jszip压缩解压文件
下一篇:
请求精进与回顾学习