记录前端菜鸟的日常——Pdf.js与双指缩放

记录前端菜鸟的日常——Pdf.js与双指缩放

一、需求

这两天一直在研究这个,之前项目用的是vue-pdf,但是pdf打开速度巨慢。我们的需求是从上到下滑动展示,要求打开时间不能过长并且可以实现双指缩放。

1.vue-pdf(快速集成)

(1)“全量串行”,要把整个pdf全部下载并解析完之后一页一页渲染出来,渲染出来之前的页面就是一直白屏的。

(2)占用浏览器主线程,与Vue组件竞争资源。

2.pdf.js(高性能、全功能)

(1)“流式并行”,一边加载一边渲染,而且是视口在哪就优先加载哪页、智能加载相邻页,远离视口的进行销毁或者低分辨率预览。

(2)使用Web Worker在独立线程解析PDF,主线程释放。

二、PDF.js的使用

pdf.js不需要安装依赖,直接去官网下载包,这个包就是个阅读器软件(网页版),2.多版本更稳定。

里面的web文件夹就包含了html、css、js,直接扔进puclic里,一个是因为不会被压缩,而且可以直接在根目录下访问,不用走路由之类的。

这个时候你就可以进行尝试在public下放一个测试的pdf,通过/web进行访问了,以我本地代码为例,访问的是http://localhost:1357/web/viewer.html?file=/test.pdf

file放的是你要访问的pdf链接,我们的项目进入pdf.vue会向后端请求一个链接,在pdf.vue用iframe标签直接展示这个链接即可。pdf.js会自带查找关键字、旋转等功能,但是发现这个方法不能进行双指缩放。(电脑本地可以,小程序不行)

三、双指缩放

然后我就开始排查是pdf.js在手机上会被限制还是小程序的限制或者iframe不允许手势操作。

1.最开始排除的是小程序的限制

因为在微信浏览器打开那个链接也不允许双指缩放,然后开始调整pdf.js的源码,看有没有对移动端做手势限制的代码。

主要找的是viewer.js,修改点(1)webViewerTouchStart放开事件源头

这段阻止了多指触摸

修改点(2)GrabToPan解除拖拽模块的拦截

如果是触摸事件且多点触控,让他直接return 不要进行后面的event.preventDefault();将事件掌控权交给浏览器处理进行缩放。

2.排查小程序oriframe的限制

这样调整完之后发现在web/viewer.html的pdf链接微信浏览器已经可以进行双指缩放了,不过小程序还是不行,本来以为是小程序又做了什么限制,后来无意中在手机上访问/web/viewer.html和#/pdf?type=https、、、、

发现原来是/web在微信浏览器就可以,#/pdf的还是不行,于是将pdf.vue文件进行修改,不再使用iframe进行展示pdf链接,而是直接在拿到pdf链接之后进行跳转到/web/viewer.html文件,发到测试上看,果然可以了

不过需要注意的是现在我们打开的是浏览器的缩放功能,也就是上面的菜单栏会一起跟着放大缩小,不过我们的需求是不要那些菜单栏只要实现双指缩放就可以,我就在css文件将菜单栏隐藏掉了。

网上关于pdf.js在移动端双指缩放的案例比较少,大部分还要会员,阴差阳粗的实现了我们的需求而且速度也比之前快很多了,如果有大佬知道怎么只让pdf放缩菜单栏不动的话欢迎指正!

Read more

如何永久激活IDM:完整免费激活脚本使用指南

如何永久激活IDM:完整免费激活脚本使用指南 【免费下载链接】IDM-Activation-ScriptIDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script IDM Activation Script是一款强大的开源工具,专为激活和重置Internet Download Manager(IDM)试用期而设计。通过简单几步操作,您就能轻松解锁IDM的全部功能,享受高速下载体验。 🚀 快速入门:两种激活方法 方法一:PowerShell一键激活(推荐) 1. 右键点击Windows开始菜单,选择"PowerShell"或"终端"(注意:不要使用CMD) 2. 您将看到激活选项界面,按照屏幕上的说明进行操作 3. 完成后IDM即可正常使用

OpenClaw:介绍 -- 这只爆火的AI“龙虾”到底是什么?

更多内容:XiaoJ的知识星球 目录 * OpenClaw 介绍:这只爆火的AI“龙虾”到底是什么? * 一、OpenClaw 是什么? * 1.1 基本定义 * 1.2 核心理念 * 1.3 技术选型 * 1.4 主要作用 * 二、OpenClaw 架构 * 2.1 核心设计原则 * 2.2 系统架构模块 * 🔐 模块 1:Gateway(网关)- 安全卫士 * 🧠 模块 2:Agent(智能体)- 超级大脑 * 🛠️ 模块 3:Skills(技能)- 工具箱

2026年3月13日AI热点:芯片大战、Agent爆发、安全争议

2026年3月13日AI热点:芯片大战、Agent爆发、安全争议 今日AI圈发生了什么?十大热点一文打尽 ChatGPT o3 pro | Claude 3.7 | Gemini 2.5 pro免费用 👉 AI工具集 今天的AI圈依然热闹非凡!从芯片巨头的大手笔投入,到Agent时代的全面爆发,再到AI安全争议愈演愈烈…让我带你一篇看完今日AI十大热点! 🔥 十大AI新闻 1. Anthropic 起诉美国国防部 Anthropic就供应链风险认定起诉五角大楼,称这一认定可能让其损失数十亿美元。特朗普政府表示不排除对Anthropic采取进一步行动。 2. Nvidia 投资260亿美元开发开源模型 最新文件显示,Nvidia计划投入260亿美元构建开源权重AI模型,展现其对开源生态的承诺。 3. Meta 发布4款新AI芯片 Meta推出了MTIA 300芯片,用于训练Instagram和Facebook的排序推荐系统。MTIA 400/450/500将在2027年前支持生成式AI推理。 4. Google Gemini 登陆 Chrome

桌面级AI神器,本地大模型助手安装、配置与应用

桌面级AI神器,本地大模型助手安装、配置与应用

🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、前言:为什么需要 Chatbox 1、ChatGPT 很强,但在线服务的局限性(联网、隐私) 2、Chatbox的定位:本地、安全、轻量的多模型工具箱 二、Chatbox介绍 1、Chatbox 开源地址 2、支持的模型接口(OpenAI、Gemini、Claude、Localhost 等) 3、支持联网搜索 4、全平台支持(电脑端、⼿机端) 三、Chatbox 安装 1、PC端(Windows) 2、移动端(Android)