面向 Android 的本地 PDF 阅读、搜索、批注与处理工具
MyPDF 是一款以本地处理为核心的 Android PDF 工具,提供 PDF 阅读、文本层与 OCR 搜索、批注、文本复制、PDF 创建与转换、页面管理、安全保护等功能。
PDF 阅读、搜索、OCR、批注、创建、转换、页面管理和安全设置均在设备本地执行。应用不会为了核心功能上传 PDF 文件、页面图像、正文、OCR 结果、搜索词、批注内容、密码、文件名、路径、URI 或 PDF 元数据。
本项目的核心搜索与解析能力由开源引擎 android-pdf-search-engine 提供底层支持。
前往本仓库的 下载最新版本 页面下载最新 APK。
首次公开版本仍处于持续验证阶段。重要文档请保留原始副本,不建议仅依赖单一设备中的文件。
- PDF 阅读与页面浏览;
- 文本层长按选择和复制;
- 文件收藏;
- 文件详情查看;
- 支持较长页面和长图类文档;
- 搜索、工具与阅读界面相互独立。
支持文本层搜索与 OCR 搜索:
- 智能搜索:优先文本层,按需继续 OCR;
- 仅文本搜索;
- 仅扫描页 OCR;
- 区分大小写;
- 跨行匹配;
- 忽略空白字符;
- 合并英文断行连字符;
- 仅匹配完整单词;
- OCR
O/o/0易混淆容错; - 优先搜索当前阅读页;
- 960 / 1280 / 1440 三档 OCR 识别精度;
- 搜索缓存清理。
OCR 搜索依赖设备性能。页面数量较多、图片分辨率较高或扫描质量较差时,处理时间会明显增加。
- 自由涂鸦;
- 箭头;
- 文字注释;
- 覆盖保存;
- 另存副本;
- 根据 PDF 权限限制阻止不允许的保存操作。
当前批注不支持跨页连续绘制。线条、箭头或文字跨越分页边界时可能被截断。
- 多张图片转 PDF;
- 长图转 PDF;
- 文本转 PDF;
- 创建空白 PDF;
- 自动排除不支持的图片格式。
支持的常见图片格式包括 JPG、JPEG、PNG 和 WebP。
- PDF 页面导出为图片;
- 页面导出为长图;
- 导出 PDF 文本;
- 扫描 PDF 添加可搜索文字层;
- 对耗时较长的 OCR 操作提供进度和提示。
- 页面排序;
- 删除页面;
- 另存所选页面;
- 合并多个 PDF;
- 使用独立进程执行部分高负载 PDF 操作。
- 设置打开密码;
- 移除密码;
- 设置复制、批注等权限限制;
- 清除 PDF 元数据;
- 区分用户密码与所有者密码;
- 在 MyPDF 内对受限复制、导出和批注操作进行拦截。
PDF 权限并非绝对 DRM。其他软件是否遵守 PDF 权限取决于其自身实现。
完整说明请查看 PRIVACY.md。
匿名崩溃报告默认关闭。用户明确开启后,MyPDF 才会通过 Firebase Crashlytics 发送新的 Java、native 崩溃和受支持系统上的部分 ANR 信息。
可能包含:
- 应用版本与构建类型;
- Android 版本;
- 设备厂商、型号与 ABI;
- 崩溃堆栈和 native 崩溃所需信息;
- 白名单中的粗粒度功能状态。
不会主动包含:
- PDF 文件、文件名、路径或 URI;
- PDF 正文和元数据;
- OCR 结果和搜索词;
- 批注内容和密码;
- 页面截图;
- Android ID、广告 ID、IMEI;
- 联系人、应用列表或 Logcat。
用户可以在设置页关闭匿名崩溃报告,并请求删除设备上尚未发送的报告。
应用内反馈通过 FormSubmit 的 HTTPS 接口转发给开发者。
用户主动提交时可填写:
- 问题类型;
- 问题描述;
- 复现步骤;
- 可选联系邮箱。
应用会自动附带:
- MyPDF 版本;
- Debug / Release 构建类型;
- Android 版本和 API;
- 设备厂商与型号;
- ABI;
- 系统语言;
- 匿名崩溃报告开关状态;
- 本地生成的反馈编号。
反馈提交不会附带 PDF、文档内容、搜索词、OCR 结果、批注、密码或截图。
适合:
- 可以公开讨论的问题;
- 可稳定复现的 Bug;
- 功能建议;
- 需要长期跟踪的事项。
提交 Issue 时建议包含:
- MyPDF 版本;
- Android 版本;
- 手机厂商和型号;
- 问题发生前的操作步骤;
- 实际结果与期望结果;
- 是否可以稳定复现。
请勿上传包含隐私内容的 PDF、截图、文件名、路径、密码或个人信息。
进入:
设置 → 帮助与反馈 → 应用内反馈
填写表单后直接提交。反馈成功后会生成一个本地反馈编号,可用于后续补充说明。
3472966871@qq.com
建议使用:
- Android Studio;
- JDK 17;
- Android SDK 34;
- 与项目配置匹配的 Gradle、Android Gradle Plugin 和 NDK;
- 支持访问 Google Maven、JitPack 和项目依赖源的网络环境。
公开仓库不应提交生产环境的:
app/google-services.json
本地构建 Crashlytics 功能时,需要:
- 在自己的 Firebase 项目中注册 Android 应用;
- 使用与本地工程一致的
applicationId; - 下载
google-services.json; - 放入
app/目录; - 确认该文件已被
.gitignore排除。
Windows:
.\gradlew.bat :app:assembleDebugRelease 构建前,请自行配置正式签名,不要将签名文件、密码或生产 Firebase 配置提交到公开仓库。
主要代码位于:
app/src/main/java/com/nless/mypdf/
├─ app/ 应用初始化
├─ core/ 核心配置与通用逻辑
├─ data/ 本地数据
├─ diagnostics/ 崩溃诊断上下文
├─ feature/ PDF 创建、转换、管理、安全、反馈等功能
└─ ui/ 首页、阅读器、设置页和通用界面
- 当前主要面向
arm64-v8a设备; - OCR、添加文字层、合并大型 PDF 等操作可能耗时较长;
- 极大 PDF、异常 PDF 或内存紧张设备仍可能出现崩溃或系统终止进程;
- 批注不支持跨页连续绘制;
- native 崩溃堆栈的完整符号化取决于相应二进制符号是否可用;
- 应用内反馈依赖第三方 FormSubmit 服务及用户当前网络环境;
- 公开初始版本尚未经过大规模设备矩阵和长期线上数据验证。
欢迎通过 Issue 提交 Bug、建议和可复现案例,也欢迎提交 Pull Request。
贡献前请注意:
- 不要提交签名文件、密码、令牌或私人邮箱配置;
- 不要上传真实用户 PDF 或其他隐私数据;
- 尽量让提交保持单一目的;
- 涉及功能行为变化时,请同步更新相关说明和测试步骤。
MyPDF 基础版可以免费下载和使用。赞助不是获得功能、技术支持或优先处理 Issue 的必要条件,但可以帮助承担测试设备、网络服务和持续维护成本。
| 微信 | 支付宝 |
![]() |
![]() |
感谢每一位测试、反馈、贡献和支持 MyPDF 的用户。
MyPDF 基础版采用 Apache License 2.0 开源。
MyPDF 按现状提供,不保证适用于所有 PDF、所有设备或所有使用场景。
涉及合同、证件、财务资料、研究数据或其他重要文档时,请始终保留原始文件和独立备份。进行加密、解密、页面删除、覆盖保存、批注保存、合并或格式转换前,建议先另存副本。

