记录前端菜鸟的日常——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

从微博热搜到深度报告:实测 ToClaw 的信息检索与分析能力,AI 终于开始“先找再写”

从微博热搜到深度报告:实测 ToClaw 的信息检索与分析能力,AI 终于开始“先找再写”

现在做内容、做运营、做市场,最怕的不是没有灵感,而是信息流转得太快。一个热点从冒头到发酵,可能只需要几个小时;而从“看到热搜”到“形成一版可用分析”,往往要经历找榜单、翻链接、看评论、筛信息、做结构、再写结论一整套流程。很多人以为这件事的核心是写,其实真正耗时的,往往是前面的“找”和“判”。 这也是我为什么会特别想测 ToDesk 远程控制新上线的 ToClaw:如果它只是会写几段话,那其实不算新鲜;但如果它能围绕“热点分析”这个真实任务,把检索、筛选、归纳、生成这几个动作串起来,那它就不只是一个聊天入口,而更像是一个真正能进入工作流的 AI 助手。 而从这次实测来看,ToClaw 在这个场景里,确实给了我一点不一样的感觉。 一、开放式测试 为了看清 ToClaw 到底是在“生成”

【OpenClaw企业级智能体实战】第01篇:从零搭建你的第一个AI员工(原理+算法+完整代码+避坑指南)

【OpenClaw企业级智能体实战】第01篇:从零搭建你的第一个AI员工(原理+算法+完整代码+避坑指南)

摘要:随着AI从“对话时代”迈入“执行时代”,OpenClaw作为开源智能体框架,正在重塑人机协作模式——它不再是被动响应的工具,而是能主动执行任务的“AI员工”。本文基于真实技术原理与实操场景,从背景概念切入,拆解OpenClaw“感知-决策-执行”的核心逻辑,详解算法组件构建思路,并提供从零到一的完整实操流程(含可直接运行的Python代码)。内容兼顾新手入门与进阶提升,强调安全隔离部署原则,避开技术术语堆砌,聚焦实用价值。读者可通过本文掌握OpenClaw基础部署、自定义技能开发、记忆模块集成等核心能力,快速落地自动化办公、信息整理等实际场景,真正体验“低成本、高效率”的AI生产力革命。全文严格遵循真实性原则,无捏造案例与夸大描述,所有代码均经过实测验证。 优质专栏欢迎订阅! 【OpenClaw从入门到精通】【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】 【YOLOv11工业级实战】【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】

我和 AI 聊了一晚上,第二天它说“你好,请问有什么可以帮你?“凌晨我的 AI 尽然悄悄把记忆清空了!——OpenClaw Session 完全生存指南:重置、压缩、剪枝、记忆一网打尽

凌晨4点,我的 AI 悄悄把记忆清空了——OpenClaw Session 避坑指南 摘要:用 OpenClaw 搭了个 AI 助手,聊得好的,第二天一早它就"失忆"了?本文从一个真实踩坑出发,系统拆解 OpenClaw 的 Session 机制——重置(Reset)、压缩(Compaction)、剪枝(Pruning)、记忆(Memory)、会话控制(Session Tool)——帮你彻底搞懂"对话为什么会消失"以及"怎么让 AI 记住你"。 🤯 踩坑现场 事情是这样的: 我用 OpenClaw

避坑大全:Llama-Factory环境配置中的10个常见雷区

避坑大全:Llama-Factory环境配置中的10个常见雷区 如果你正在尝试使用Llama-Factory进行大模型微调,却连续三天都在解决pip安装问题,那么这篇文章就是为你准备的。Llama-Factory是一个功能强大的大模型微调框架,支持多种主流开源模型,但在环境配置过程中,新手经常会踩到各种"雷区"。本文将分享10个最常见的环境配置问题及其解决方案,帮助你彻底避免环境冲突,快速开始大模型微调工作。 1. Python版本不兼容问题 Llama-Factory通常需要Python 3.8或更高版本,但很多用户会忽略这一点。 * 检查当前Python版本: bash python --version * 如果版本过低,建议使用conda创建新环境: bash conda create -n llama_factory python=3.10 conda activate llama_factory 注意:某些CUDA版本可能对Python版本有特定要求,建议先确定CUDA版本再选择Python版本。 2. CUDA与PyTorch版本不匹配 这是最常见的错