pdf.js初始化时显示指定页,显示默认页

本文解决PDF.js中预览PDF后保留页面位置的问题,提供禁用此功能及跳转至指定页的方法,涉及localStorage操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用pdf.js时,遇到一个问题,预览pdf之后,比如现在在第8页,等再次打开的时候还是在第八页,需要从第一页加载;或者可能有需求直接跳转到某一页,查了些资料发现提供的方案很多,一个好使的都没有,也有可能是我使用不当,反正都是以失败告终。最开始决定直接去读代码,通过源代码来解决这个问题,但是代码量有点大啊,只能另寻他法,后来发现关闭浏览器的时候,重新打开pdf还是从离开的页码加载,所以推测默认的配置应该时保存在localStorage,果然在view.js中发现了设置,localStorage.setItem('pdfjs.history', databaseStr)。

打印了一下存储的内容如下:

{"files":[{"fingerprint":"57f1f29cbad323c87a7921391211253d","sidebarView":0,"page":4,"zoom":"auto","scrollLeft":-17,"scrollTop":752,"rotation":0}]}

ok,现在开始解决问题。

1.展示首页

如果你想每次打开的时候都展示pdf的首页,那么直接注释view.js中的localStorage.setItem('pdfjs.history', databaseStr)即可。

2.跳转指定页

如果你想加载不同的页码,可直接在view.html中增加以下代码:

if(localStorage.getItem('pdfjs.history')){
    if(typeof JSON.parse(localStorage.getItem('pdfjs.history')) === 'object' ){
	    var history = JSON.parse(localStorage.getItem('pdfjs.history'));
		if(history.files && history.files[0]){
            // 跳转指定页码
           this.database.files[0].page = 6;
        }
	    localStorage.setItem('pdfjs.history',JSON.stringify(history));
    }
}

 

### Pdf.js 无法显示界面的原因分析与解决方案 PDF.js 是一个由 Mozilla 开发的用于在网中渲染 PDF 文件的 JavaScript 库。如果遇到 PDF.js 无法正常显示界面的情况,可能是由于以下几个常见原因引起的。 #### 可能原因及对应方案 1. **缺少必要的文件资源** 如果 `pdf.worker.js` 或其他核心依赖文件未被正确加载,则可能导致面空白或不显示任何内容[^1]。 解决方法是确认项目目录下包含了完整的 PDF.js 资源文件,并确保这些文件路径配置无误。 2. **跨域资源共享 (CORS) 问题** 当尝试从不同域名加载 PDF 文档,可能会因 CORS 策略限制而失败[^2]。服务器端需设置允许访问的响应头字段,例如: ```http Access-Control-Allow-Origin: * ``` 3. **浏览器兼容性问题** 部分老旧版本浏览器可能对 Web Workers 的支持有限,从而影响 PDF.js 正常运行[^3]。建议测试最新版主流浏览器(如 Chrome, Firefox),并考虑降级功能以适配低版本环境。 4. **JavaScript 错误处理不当** 若初始化过程中存在语法错误或者逻辑缺陷,也可能造成 UI 不更新现象[^4]。通过开发者工具审查控制台日志可以帮助定位具体异常位置。 5. **HTML/CSS 布局冲突** 面布局样式干扰到 PDF 渲染区域的表现形式也是一个潜在因素[^5]。调整相关 CSS 属性值比如 width,height,z-index 等可以改善此状况。 以下是基于以上几点的一个简单实现案例: ```javascript // 加载 pdf.js 并展示第一个面 document.addEventListener('DOMContentLoaded', function () { const url = 'example.pdf'; // 替换为目标文档链接 // 使用全局变量定义 PDFJS 默认工作线程地址 pdfjsLib.GlobalWorkerOptions.workerSrc = '/path/to/pdf.worker.min.js'; // 加载指定 URL 上的 PDF pdfjsLib.getDocument(url).promise.then(function(pdfDoc_) { let pageNumber = 1; pdfDoc_.getPage(pageNumber).then(function(page) { var scale = 1.5; // 缩放比例 var viewport = page.getViewport({scale: scale}); // 准备画布容器 var canvas = document.getElementById('the-canvas'); var context = canvas.getContext('2d'); canvas.height = viewport.height; canvas.width = viewport.width; // 将面绘制至 Canvas 中 var renderContext = {canvasContext: context, viewport: viewport}; page.render(renderContext); }); }).catch(err => console.error("Error loading PDF:", err)); }); ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值