前端使用pdf.js进行pdf文件预览的第二种方式:Viewer.html

ops/2024/12/16 15:28:37/

背景

最近需要实现一个PDF文档预览的功能,按理说,如果只是简单的预览,使用<embed><object>等就可以实现。

但是,我们的需求要实现搜索!而且,文档还都超大,均300页以上。那<embed><object>就难以实现了!所以使用pdf.js库。

摘要

上一篇文章 前端 使用pdf.js加载PDF文件 中讲的是使用canvas绘图的方式,将PDF文件渲染在页面中。但其实PDF.js也提供了通过viewer.html来加载预览PDF文件,而且使用非常方便。

viewer.html很好用,但是我查遍了很多文档,真的都好难看懂是怎么使用的啊!那下面,我们把使用viewer.html的方法直接贴出来。

使用Viewer.html的好处

  1. 与我上一篇文章中提到的canvas绘图相比,性能肯定是比较好的;
  2. 自带了搜索、页面跳转、高亮等等工具栏,不需要手动实现了,这是莫大的便利。

viewer.html使用

第一步:pdf.js文档和文件包下载

  1. pdf.js文档: https://github.com/mozilla/pdf.js?tab=readme-ov-file,这个是pdf.js的readme.md地址,所有的使用指导在这里都可以找到。
  2. 文件包下载:你可以在上面的这个页面中找到。当然也可以在这个地址中:https://mozilla.github.io/pdf.js/getting_started/#download,选择stable下载。下载页面截图如下:
    在这里插入图片描述

第二步:下载到pdf.js按照包后,怎么使用呢?放在哪里

有两种方式:

1. 第一种方式:放在你当前项目的路径下,像下面这样:

在这里插入图片描述

说明:

  • pdfjs-4.0.379-dist是下载的pdf文件的夹,里面的viewer.html文件,就是它的入口文件。
2. 第二种方式:将它部署成为一个静态服务(这是本示例中我所使用的方式)

这样做的好处是:

  1. 对于当前项目,项目体量减小;
  2. 部署一个静态服务,多个项目可调用。便利性更好
题外话:将pdfjs部署在亚马逊

创建一个部署静态服务的存储桶,上传下载下来的文件包,如下所示:

在这里插入图片描述

这样一来,存放在该静态服务内的pdf文件都可以访问了。假设部署的服务地址是:http://xxx-pdf-viewer.s3-website-xx-xxx-xx.amazonaws.com/pdfjs-4.0.379-dist/web/viewer.htmlfile=docs/xxx.pdf

在这个路径中,docs文件夹位于web文件夹内,专门用来存放pdf文件。

第三步:使用viewer.html

通过iframe嵌入来使用viewer.html,使用方法很简单:

html:

<iframe :src="url" frameborder="0" width="100%" height="100%"></iframe>

JavaScript:计算url

const url = computed(() => {// 部署pdfjs的服务地址const aws_server = 'http://xxx-pdf-viewer.s3-website-xx-xxx-xx.amazonaws.com/pdfjs-4.0.379-dist/web/viewer.html'// pdf文件名称const pdf_name = 'x-trail-0601-20220911.pdf'return `${aws_server}?file=${encodeURIComponent(`docs/${pdf_name}`)}`
})

这样,就可以访问到docs文件夹下的所有pdf啦。简单吧!


http://www.ppmy.cn/ops/142401.html

相关文章

[图形渲染]【Unity】Shader基础10- 什么是Shader?

Shader 是图形渲染中用于控制特定渲染阶段行为的程序,运行在GPU上,可以高度自定义渲染细节。Shader 的诞生和发展使得现代渲染技术得以实现复杂的光影效果和高度真实感的画面。 1. Shader的定义与作用 Shader 是在图形渲染流水线的特定阶段运行的小程序,用于控制图形数据如…

《C++与人工智能:携手共创未来》

《C与人工智能&#xff1a;携手共创未来》 一、C 与人工智能的初遇二、C 在各热门领域的应用&#xff08;一&#xff09;游戏开发&#xff08;二&#xff09;操作系统开发&#xff08;三&#xff09;人工智能&#xff08;四&#xff09;金融领域&#xff08;五&#xff09;嵌入…

MATLAB 操作指南(结尾附实操案例)

一、MATLAB 简介 MATLAB&#xff08;矩阵实验室&#xff09;是一个高级技术计算语言和交互环境&#xff0c;它主要用于数值计算、数据分析、算法开发和可视化。MATLAB 的核心功能是矩阵运算&#xff0c;它能够处理向量和矩阵为中心的数学问题&#xff0c;方便用户进行算法的开…

机器学习中常用的降维方法-主成分分析法(PCA)

本次文章主要是针对现有的降维技术PCA进行详细解析&#xff0c;是自己再一次学习的心得体会。希望通过这次的学习&#xff0c;可以收获很多的知识&#xff0c;同时把这些知识分享给大家。我相信只有善于共享自己的知识&#xff0c;大家一起交流讨论&#xff0c;一定会使自己和别…

【总结·反思·汇报·思考02】裸辞后,我的一些感想和感悟。

Hello&#xff0c;大家好&#xff01; 首先&#xff0c;我需要向大家道个歉&#xff0c;对不起&#xff01;因为最近发生了一些事情&#xff0c;博客文章一直没有更新。&#xff08;90度鞠躬道歉&#xff09; 那么&#xff0c;最近到底发生了什么呢&#xff1f;相信大家已经从…

全能体育人:王逸飞的多元职业旅程

从初登赛场的青涩运动员,到如今裁判席与教练课堂上的悉心指导者,王逸飞用多元化的职业选择和精湛的专业能力,为健美操与啦啦操领域描绘了一幅充满成长与突破的蓝图。在这个不断发展的领域里,她以不懈的努力和独特的视角,成为了一位跨越多个角色的行业先锋。 王逸飞的职业生涯,…

OceanBase4.0 跟我学--分布式到底可靠不可靠,到底丢不丢数 ---- 什么是PALF

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共2610人左右 1 …

day 18——————数据结构单向链表

数据结构 要点 1总结&#xff1a; 常用的逻辑关系和物理结构 逻辑关系指的是数据之间的关系 1.集合 2&#xff0c;线性结构&#xff1a;一对一&#xff08;数组&#xff0c;链表&#xff0c;栈等&#xff09; 3.树形结构&#xff1a;一对多&#xff08;二叉树&#xff09; 4&…