开源2026年10月30日· 约 5 分钟

一款基于Avalonia跨平台不联网免费且轻量的Pdf阅读器

#PDF阅读器#Avalonia#跨平台#轻量级
Twitter 微博

一款基于Avalonia跨平台不联网免费且轻量的Pdf阅读器

为什么写 AirPDF

每天都要读 PDF,这些年换过不少阅读器,但一个都没能长期留在电脑上。

浏览器自带的查看器最省事,打开就走。可文档一多就散在标签堆里,找不回上次读到哪;缩略图、目录、阅读位置这些它都不管。装过的桌面阅读器反过来,功能堆得很满,启动要等,界面上大半按钮我从来没点过;有几个还要登录。还有一类是 Electron 做的,为了看一页纸,先起一个 Chromium。

所以想自己写一个。目标很小:打开文档,把页面放在你面前,然后闭嘴。

为此定了四条规矩:

  • 不联网。阅读路径上不许有任何网络请求。
  • 不要账号。没有登录,没有云同步,没有订阅。
  • 不用内嵌浏览器。界面和渲染都在同一个原生进程里。
  • 启动即用。不该有需要盯着看的"加载中"。

技术上还有另一半动力:想验证 .NET 加 Avalonia 到底能不能做出一个反应快的桌面应用。不少人对 .NET 桌面程序的印象还停在启动慢、内存大,而 Avalonia 的绘制路径和 WPF 不是一回事。这个项目算是我自己的答案——如果做不到快,它就没有存在的理由。

名字里的 Air 是"轻"的意思。不是指安装包小,是指打开和翻阅的时候感觉不到它。

AirPDF 阅读界面

阅读界面:左侧缩略图与目录,顶部页码与缩放,底部文件信息

现在有什么#

阅读#

  • 基于 PDFium 的原生渲染,按实际显示比例解码,高 DPI 下保持清晰
  • 连续滚动,页面虚拟化,只渲染视口附近的几页
  • 缩略图侧栏和文档目录,页码可以直接输入跳转
  • 全文搜索,结果按页分组,匹配处会在页面上画框
  • 鼠标拖选、双击选词、全选、复制
  • 超链接:文档内跳转到目标页,http、https、mailto 交给系统处理
  • 加密 PDF 自动弹出密码框

全文搜索

搜索:结果按页分组,命中位置在页面和高亮框里同时标出

导航与记忆#

  • 阅读位置按文档记忆,精确到页内偏移
  • 缩放模式按文档记忆:适合宽度、适合页面,或某个固定比例
  • 从目录、缩略图、搜索、页码跳转之后,可以用 Alt+Left 回到原来的位置
  • 状态栏显示当前位置和阅读进度百分比

界面#

  • 浅色、深色、高对比度三套配色,跟随系统时会随系统明暗实时切换
  • 英文和简体中文两套界面,Ctrl+Shift+L 即时切换
  • 标签页与多窗口,共享同一份设置、主题和语言
  • 工具栏按钮、输入框、列表都带无障碍名称

深色主题

深色主题

中文欢迎页

中文界面与最近打开列表

跨平台#

同一份代码跑三个桌面平台,Windows、macOS 和 Linux 各有对应的构建产物,不依赖系统自带的 WebView,也不需要另外装运行时:

平台 发布产物
Windows 10/11 Velopack 安装器(支持自动更新)、便携 zip
macOS 13+ arm64 / x64 的 pkg、便携包
Linux 便携 tar.gz(需要系统有 fontconfig)
  • 渲染后端 PDFium 的原生库按平台分别携带,开箱即用
  • 每次发版三个平台一起构建,测试在 Linux CI 上跑
  • 界面语言、快捷键、主题行为在各平台一致;Cmd 与 Ctrl 按平台自动映射
  • 读中文文档时,Linux 上建议装一个 CJK 字体(例如 fonts-noto-cjk)
  • 目前三个平台的包都没有签名,Windows 和 macOS 会弹安全警告

工程#

  • 安装版支持自动更新(Velopack)
  • 命令行支持 --help、--version 和 -- 终止符
  • 阅读过程中不产生任何网络请求,只有安装版检查更新时访问 GitHub

性能#

测试环境是本机,样本是美国法典的两卷公开数据(govinfo)。

场景 结果
打开 4,215 页 / 15.8 MB 1.3 s
打开 9,277 页 / 35.3 MB 1.9 s
单页渲染(同一文档) 0.023 s
4,215 页文档的内存占用 约 300 MB
全文搜索(9,277 页) 1.2–3.7 s

打开文档后句柄常驻,翻页只渲染当前页,页面列表只实例化视口附近的页面,所以这些耗时基本不随页数线性增长。

搜索是例外。它目前还是逐页提取文本,没有做索引缓存,页数越多越慢,这也是它还留在待办里的原因。

接下来#

状态#

0.2 是预览版。阅读核心稳定,但上面那些限制都在,发布包也还没签名,Windows 和 macOS 会弹警告。

MIT 协议,代码在 https://github.com/RyzenWang/AirPDF ,issue 和 PR 都欢迎。


原文链接:https://www.cnblogs.com/ryzen/p/23496525

评论

© 2026 松岛川树