PDF.js 超简单使用教程,一看就会!

pdfjs 可以在线预览pdf文件,提供丝滑流畅的预览效果,支持缩放、页数控制、文档内检索等强大功能。

1 下载

官网下载Prebuilt版本
在这里插入图片描述
下载后解压,文件结构为:
在这里插入图片描述

2 启动项目

项目在本地环境(url以file://开头)无法运行,需要服务器环境。

使用nginx,修改配置文件 nginx安装目录/conf/nginx.conf

server {
      listen 8888;      
      location / {
        root   D:/pdfjs-2.2.228-dist;
      }      
}

启动 nginx,访问 http://localhost:8888/web/viewer.html
在这里插入图片描述

3 预览指定的pdf文件

默认加载的文件是:
在这里插入图片描述
想要加载别的文件,应该怎么做呢?

web/viewer.js 文件中找到 webViewerInitialized 方法:
在这里插入图片描述
以上代码说明:如果地址栏参数中有file字段,就使用file字段的地址;如果没有,就用 defaultUrl

3.1 预览pdfjs服务器内部的文件

先试试简单的:把文件放到pdfjs服务器的内部,看看能否预览:

把文件放到 web 目录下:
在这里插入图片描述
添加地址栏参数 file=能看吗.pdf后访问,预览成功!
在这里插入图片描述

3.2 预览其他服务器中的文件

在真实的场景中,要预览的文件不会在pdfjs服务器的内部,一般都在另外一个业务服务器中。


// 另外一个业务服务器(10.10.10.100)的文件接口(返回文件流)
var anotherServerPreviewUrl ="http://10.10.10.100/doc/preview?fileId=11111";

// 拼到file参数中,需要 encodeURIComponent 转译
const `http://localhost:8888/web/viewer.html?file=${encodeURIComponent(anotherServerPreviewUrl )}`;

注意要用 encodeURIComponent 转译:

encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

pdfjs服务器会请求 anotherServerPreviewUrl 获取文件流。

这个请求是 跨域 的,所以要 nginx 代理

代码改为:

// /api/代理到
var anotherServerPreviewUrl ="/api/doc/preview?fileId=11111";
const `http://localhost:8888/web/viewer.html?file=${encodeURIComponent(anotherServerPreviewUrl )}`;

在 nginx 配置中中添加对 /api/ 的代理,:

server {
      listen 8888;      
      location / {
        root   D:/pdfjs-2.2.228-dist;
      }  
      location /api/ {
        proxy_pass   http://10.10.10.100/;
      }    
}

预览成功:
在这里插入图片描述

4 页面改样式

web/viewer.html 中,样式可以随便修改,比如把操作栏移动到下面,改成粉色:
在这里插入图片描述
需要注意的是:

  • 元素的class可以改,都是控制样式的,和功能无关。
  • 元素的id和功能相关,不要改也不要删。
  • 想要隐藏某个功能的时候,不能直接从页面删除元素,而是要隐藏(display:none)。

因为:pdfjs 在进行初始化(绑定事件)的时候,是根据 id 来找元素的。如果找不到DOM元素,就会报错:在这里插入图片描述

  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
PDF.js 是一个用于在 Web 上显示 PDF 文档的 JavaScript 库。它可以在不依赖浏览器插件的情况下,直接在网页中加载和渲染 PDF 文件。 要在 HTML 中使用 PDF.js,首先需要引入相关的 JavaScript 文件和 CSS 样式。你可以从 PDF.js 官方网站下载最新版本的文件,或者使用 CDN 引入。 下面是一个简单的示例,演示如何使用 PDF.js 在网页中加载和显示 PDF 文件: ```html <!DOCTYPE html> <html> <head> <title>PDF.js 示例</title> <style> /* 设置容器的高度 */ #pdf-container { height: 500px; } </style> </head> <body> <div id="pdf-container"></div> <script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script> <script> // 获取容器元素 const container = document.getElementById('pdf-container'); // PDF.js 加载 PDF 文件 pdfjsLib.getDocument('./path/to/your/pdf/file.pdf').promise.then(pdf => { // 获取第一页 pdf.getPage(1).then(page => { const scale = 1.5; const viewport = page.getViewport({ scale }); // 创建一个 Canvas 元素用于渲染 PDF 页面 const canvas = document.createElement('canvas'); const context = canvas.getContext('2d'); canvas.width = viewport.width; canvas.height = viewport.height; container.appendChild(canvas); // 将 PDF 页面渲染到 Canvas 上 page.render({ canvasContext: context, viewport }); }); }); </script> </body> </html> ``` 在上面的示例中,我们创建了一个固定高度的容器 `#pdf-container`,用于显示 PDF 页面。然后,通过 `pdfjsLib.getDocument()` 方法加载指定的 PDF 文件,获取第一页,并将其渲染到一个 Canvas 元素上。 请注意,上述示例只展示了如何在 HTML 中使用 PDF.js 进行简单PDF 页面渲染,更多高级功能和配置选项可以查阅 PDF.js 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值