为长阅读而生:我做了一个「安静」的 PDF 阅读器

为什么再造一个 PDF 阅读器

浏览器自带的 PDF 视图能用,但它是"能读",不是"想读"。刺眼的白底、冰冷的无衬线字体、突兀的工具栏------对于一份需要静下心啃两小时的论文或散文集,它像超市的日光灯,什么都照亮,却什么都留不下。

我想要的是一盏台灯:暖、稳、聚焦。于是花了一个下午,写了一个单文件 HTML 阅读器:reader.html。双击就能用,没有安装,没有账户,没有云端上传。PDF 只在你的浏览器里被翻开。

C:/Users/86182/Desktop/rainnyDay/reader.html

设计的三条准绳

一、纸感优先,屏幕退后

屏幕的默认状态是发光,而纸的默认状态是被光照。这一字之差决定了阅读体验的一切。

  • 底色#EDE4D0 的羊皮纸色,比米白更暖一点,比米黄更收敛一点;
  • 纸面 再提亮到 #F6EFDD,与底色形成极轻的层次------像书页从书桌上微微浮起;
  • 墨色#3A2E22 的深棕,而不是纯黑。纯黑压屏,深棕落纸。

对比度依然守住 WCAG 的 4.5:1,只是把"能读清楚"这条底线,抬到了"读久了不难受"。

夜间模式也没有走到纯黑。#161311 的暖暗棕配 #E7DDC8 的旧象牙,眼睛落在屏幕上像落在一张老照片上------不再是"关灯的白纸",而是"点灯的旧书"。

二、字体要有性格,但不能抢戏

标题用 Fraunces------一款可变轴衬线,字面骨架挺括,衬线尾部有细微的手工感;正文继承同一家族,行高 1.65,让字与字之间有余地喘气。控件反过来用 Inter:几何、克制、不与正文争夺注意力。

中文自动回落到 Noto Serif SC,不至于在混排时忽宋忽黑。

font-feature-settings 打开 liga calttext-rendering: optimizeLegibility 打开次像素渲染。这些开关平时看不出差别,长阅读下能省下几百次眨眼。

三、工具栏是仆人,不是主人

我把整条工具栏做成悬浮的 pill:backdrop-filter: blur(10px) 让它半透明地浮在纸面之上,只在你需要它的时候存在。翻页、缩放、主题切换全部收在里面,键盘快捷键(O / ←→ / + - / W)覆盖了 90% 的日常操作------真正读进去的时候,鼠标可以不用碰。

技术上其实简单

核心只有三块:

  1. PDF.js(jsDelivr CDN) 负责解析和渲染。用 pdfjs-dist@4.7.76 的 ES module 版本,直接 import 进来,不需要打包工具。
  2. Canvas 2D + devicePixelRatio 缩放,把每一页画到高清画布上。上限设到 2 倍------4K 屏也够用,再高就是烧显存。
  3. IntersectionObserver 监听可视区域,自动同步"当前页码"。滚动式阅读的顺畅感全靠它。

主题切换是最不起眼但最讨喜的一环:所有颜色都写在 :root 的 CSS 变量里,切换主题时只是给 <html> 换一个 data-theme 属性,浏览器自己接管过渡。选好的主题存进 localStorage,下次打开还是你昨天读到那盏灯。

一些克制的选择

  • 不做云同步 。PDF 打开在浏览器里,arrayBuffer 直接喂给 PDF.js,从头到尾没有一次网络上传。信任是一种很贵的东西,能不要就不要。
  • 不做书签、批注、高亮。这些功能我很想做,但每加一个,界面就多一层。第一版的目标只有一个:让人愿意在这里读完一本书。
  • 不做懒加载。全书一次性铺开,滚轮就是翻书。分页加载在移动端也许有必要,桌面端反而打断阅读的连贯感。

长阅读的界面,本质是减法

写完这个小工具,我最直接的感受是:设计一个"读得进去"的界面,比设计一个"看得下去"的界面难得多。

后者靠对比、动效、情绪;前者靠退让。纸色退一步,让文字站出来;工具栏退一步,让内容占满视野;动画退一步,让眼睛能停下。

好的阅读器不该让你注意到它------它该像窗外的雨声一样,只是让你更容易沉下去。


源码:reader.html,单文件,双击运行。想要它的下一版做什么?告诉我。

相关推荐
u01437810810 小时前
行内块元素之间的空白
前端·html
触底反弹10 小时前
🎲 纯 CSS 搞定 3D 旋转立方体?还附赠一个「天坑」解决方案!
前端·css·html
100个铜锣烧10 小时前
文档处理管线:从PDF到向量——RAG系统的“第一道关口”
pdf
LaughingZhu11 小时前
Product Hunt 每日热榜 | 2026-07-06
前端·人工智能·经验分享·chatgpt·html
神奇的代码在哪里13 小时前
AI编程时代,PPT已成为过去,单个HTML文件创造无限可能
javascript·html·powerpoint·ai编程·ppt
杨超越luckly14 小时前
Agent 应用指南:基于 OurAirports 的中国机场设施数据可视化
python·html·github·可视化·机场设施
stereohomology15 小时前
已进入初赛提交Demo的两个项目:(2)单独html钢琴
前端·html·why不coding
asdzx6715 小时前
在 React 中轻松实现 PDF 转 Word:纯前端 WASM 方案实战
前端·react.js·pdf
Lyn_Li1 天前
扫描 PDF 歪了怎么办?用 6 种检测方法做本地批量扶正(附开源工具)
python·pdf·ocr·tesseract·开源工具·文档处理·本地处理·扫描件纠偏