PDF阅读器

选择PDF文件即可立刻翻页阅读。缩放、翻页、朗读文字都在浏览器本地完成。

你选择的PDF不会发送到任何服务器,只在当前浏览器中打开。

这个阅读器的用途

它是一个轻量的只读查看器,适合这些场合:公用电脑上没有PDF软件,手机浏览器处理附件不方便,或者发送文件前想快速看一眼内容。 你可以翻页、缩放、复制当前页的文字,并把这些文字朗读出来。它不能做批注、高亮、填写表单、签名、全文搜索或编辑,定位就是“看”。

文件在哪里处理

选中文件后,代码用file.arrayBuffer()读取字节,交给Mozilla的开源库PDF.js(pdfjs-dist,本项目中为6.3.289版)。 解析和绘制由PDF.js负责,它的worker脚本同样运行在你的浏览器里。库本身和worker文件都由本站随页面一同提供,并非从第三方CDN获取。 页面中没有把PDF发往网络的代码,因此不会上传或保存;刷新或关闭标签页后,内存中的文档也随之清除。想验证的话,打开文件时看一下开发者工具的“网络”面板即可。 网站通用的广告、统计脚本独立运行,拿不到你的文档内容。

缩放是怎么算的

初始比例是PDF原始尺寸(1个PDF点对应1个像素)的1.2倍,界面上显示为100%。每点一次放大或缩小,比例变化0.24,范围是0.6倍(50%)到3.6倍(300%)。 下表按竖向A4(595.28 × 841.89点),用同样的常数在网站构建时计算出各档的画布尺寸,以及按每像素4字节估算的所需内存。

显示比例内部比例A4画布(px)内存(MB)
50%×0.60357 × 5050.7
60%×0.72429 × 6061.0
80%×0.96571 × 8081.8
100%×1.20714 × 10102.8
120%×1.44857 × 12124.0
140%×1.681000 × 14145.4
160%×1.921143 × 16167.0
180%×2.161286 × 18188.9
200%×2.401429 × 202111.0
220%×2.641572 × 222313.3
240%×2.881714 × 242515.9
260%×3.121857 × 262718.6
280%×3.362000 × 282921.6
300%×3.602143 × 303124.8

在100%时,一页A4约绘制为714 × 1010像素;到300%时增大到约2143 × 3031像素(约24.8MB)。手机或较旧的电脑在最大倍率下可能渲染缓慢甚至失败。 阅读器没有针对高分辨率屏幕做额外适配,所以在这类屏幕上100%时文字可能略显柔和,放大一档通常就清晰了。页面放在一个可滚动的框内,放大后的页面通过滚动这个框来移动。

计算示例

复制文字与朗读

页面绘制完成后,代码向PDF.js取得该页的文字片段,用空格连接,并把连续空白合并为一个。因此复制出的文字遵循PDF内部存放文字的顺序,不一定等同于屏幕上的阅读顺序。 表格、分栏排版可能会交错,原有的换行也会丢失。中文文档里,片段交界处有时会出现多余的空格,粘贴后请自行整理。 朗读是把同样的文字交给浏览器内置的语音合成,语速固定为0.95倍。声音和语言取决于浏览器与系统自带的语音,工具不会按文档语言来选择,所以默认语音不支持的语言可能读得很别扭。 翻页会中断朗读,点“停止朗读”可立即停止。如果浏览器不支持语音合成,两个朗读按钮会被隐藏。

不适用的情况

看完之后

只需要其中几页时,可以用PDF合并·拆分按页码范围提取。复制出文字后想知道有多长,可粘贴到字数统计; 要对比两个版本的差异,可以用文本差异对比。

常见问题

我选择的PDF会被保存吗?

不会。它只在浏览器内存中打开,不上传也不保存。刷新页面后文档就消失了。

能打开有密码的PDF吗?

目前不能,因为这里没有输入密码的地方。如果你知道密码,请在其他软件中另存一份去除保护的副本再使用(以你有权这样做为前提)。

为什么有些页面无法朗读或复制文字?

纸质文件扫描后保存为图片的PDF,页面本身是图片,不含文字数据。页面可以显示,但没有可复制或朗读的内容,文字面板会给出提示。

可以一次复制整份文档的文字吗?

不可以,只会复制当前查看的那一页。需要更多内容时,翻到下一页再复制。

没有朗读按钮,或者听不到声音怎么办?

浏览器不支持语音合成时,朗读按钮会被隐藏。即使支持,若设备没有对应语言的语音,或处于静音状态,也可能没有声音。