Repository navigation
Releases
Releases · leerogerstheman/LeebertyPDF
LeebertyPDF 1.0.0
LeebertyPDF 1.0.0
一个为 Windows 打造的本地优先 PDF 阅读器。渲染用 Mozilla 官方的 PDF.js 6.3.289
(与 Firefox 内置阅读器同源),外层界面、批注系统、页面编辑器与 PDF 解析引擎全部自研。
不联网、不登录、不收集任何数据,所有文件与批注只留在本机。
下载
| 文件 | 说明 |
|---|---|
LeebertyPDF-1.0.0-portable-win-x64.zip |
便携版(推荐),133 MB。解压到任意目录,双击 LeebertyPDF.exe 即可,绿色免安装。 |
需要 Windows 10 / 11 (x64)。解压后约 331 MB —— 里面含完整的 Electron/Chromium
运行时,这也是它不依赖任何系统组件、解压即用的原因。
亮点
- 阅读 — 标签页、目录大纲、缩略图、书签、阅读进度记忆、全文搜索(带命中的高亮与计数)、
夜间/智能反色、单页/双页/横向布局、演示模式、适合宽度/适合页面/实际大小。
图像密集型页面通过提高画布上限保持清晰,而不是随缩放糊掉。 - 批注与编辑 — 高亮、墨迹、文本框、图章、签名,以及一个独立橡皮擦:
它按几何位置把批注与存储条目配对,因此别的阅读器写入的、或从未被打开成编辑器的批注
同样能擦掉。批注会写回文件本身,在 Acrobat / Firefox / 预览 里打开都正常。 - 页面编辑 — 重排、旋转、删除、插入、合并、拆分、提取。跑在自己写的对象级 PDF 引擎上:
词法分析 → 文档 → 编辑器,支持经典 xref、xref 流、对象流、混合 XRefStm,
Flate/LZW/A85/AHx/RunLength 解码加 PNG/TIFF 预测器,以及裸N G obj扫描兜底。
DCTDecode 图像流按字节原样透传,不重新编码 —— 这是图像文档无损且快速的关键。 - 图文重排 — 单栏阅读视图。按文字位置还原行与段落,标题自动放大;
图片位置取自页面操作符表里transform+paintImageXObject的真实变换矩阵
(不是猜的),矢量图用墨迹扫描兜底,两者重叠时以精确矩形为准;裁图会裁到实际墨迹。 - 省内存 — 重排里的图形平时只存一份紧凑 PNG 数据,滚到视口附近才挂载位图,
离开即释放;缩略图随文档切换释放并按数量上限淘汰。滚动完 24 页相册后关闭全部标签页,
画布占用从 7.3 MB 降到 0。
修掉的两个真问题
- 第 3 页之后全空白:
.pdfViewer与.pdf-container的滚动/宿主角色装反了,
PDF.js 量到的scrollTop永远是 0,可见元素被钉死在第一屏。已修正并加了回归探针。 - 双击没反应:启动器用
ProcessStartInfo.EnvironmentVariables过滤环境变量,
而 .NET Framework 这个属性的 getter 会用「大小写不敏感」的字典装载「大小写敏感」的
环境块 —— 只要NO_PROXY和no_proxy同时存在(配了代理的机器很常见)就抛异常,
且发生在建窗口之前,表现为闪退无提示。现在改用cmd /c set "X=" & electron绕开。
验证
仓库自带测试台,全部通过:
| 项目 | 结果 |
|---|---|
| PDF 引擎单测 | 20/20(纯 Node,不需要 Electron) |
| 功能体检 | 47/47,0 控制台错误 |
| 界面自测 | PASS,无渲染层报错 |
| 空白页探针 | PASS,可见页全部绘制 |
| 图像大文件 | 5/5,0 控制台错误 |
| 内存探针 | 分阶段记录 JS 堆 / 画布背储 / DOM 节点 |
已知限制
- 加密 PDF 只读:PDF.js 的
saveDocument()无法导出加密文档,此时请用「导出页面为图片」。 - 未做代码签名:首次运行 Windows SmartScreen 可能提示,选择「仍要运行」即可。
- 重排不重排表格(表格会被当作多个文字段落,列关系丢失)——那需要完整的版面分析引擎,
收益不值这个复杂度。当前目标是「能读、能复制、图片不丢」。 - 超大文档(>500 页)首次打开缩略图会边滚动边生成,属预期行为。
许可
应用代码 MIT。渲染内核为 PDF.js(Apache-2.0),
许可证文本随包提供(resources/app/src/renderer/vendor/pdfjs/LICENSE_pdfjs.txt)。