这是一个基于WebAssembly技术的纯前端PDF阅读器,可以直接部署到GitHub Pages上使用。
- 纯前端实现,无需后端服务器
- 基于WebAssembly的高性能PDF渲染
- 支持文本选择、搜索、书签等功能
- 响应式设计,支持多种设备
运行部署脚本以整理和准备部署文件。
使用Python脚本(推荐,无依赖):
python deploy.py或者使用Node.js脚本:
node deploy.js该脚本会创建一个docs目录,其中包含所有必要的文件,并调整路径引用以适应GitHub Pages的部署环境。
git add .
git commit -m "Prepare for GitHub Pages deployment"
git push origin main- 打开你的GitHub仓库页面
- 点击"Settings"选项卡
- 向下滚动到"Pages"部分
- 在"Source"下拉菜单中选择:
- 选择"Deploy from a branch"
- 选择分支(通常是main或master)
- 选择/docs文件夹
- 点击"Save"
配置完成后,GitHub会提供一个URL(通常是https://<username>.github.io/<repository>),你可以在几分钟后访问你的PDF阅读器。
- 打开部署后的网站
- 将PDF文件拖拽到页面上即可查看
- 使用顶部工具栏进行缩放、旋转等操作
- 左侧边栏可以查看书签和缩略图
如果想使用自定义域名:
- 在
docs目录中创建一个名为CNAME的文件 - 在文件中添加你的域名,例如:
mypdfreader.example.com - 按照上述步骤提交并推送到GitHub
- 在你的DNS提供商处配置CNAME记录指向
<username>.github.io
可以通过修改以下文件来自定义外观:
docs/index.html- 主页面结构- CSS样式在HTML文件的
<style>标签中
项目采用分层架构设计:
- UI层 (
docs/index.html和相关CSS) - 提供用户界面 - API层 (
docs/js/api.js) - 提供统一的JavaScript API - 控制层 (
docs/js/viewer.js) - 处理用户交互和页面管理 - 数据层 (
docs/js/file.js) - 管理PDF文档数据和与WASM模块的交互 - 渲染引擎 (
docs/engine/drawingfile.js和docs/engine/drawingfile.wasm) - 基于WebAssembly的高性能PDF渲染引擎
需要支持以下特性的现代浏览器:
- WebAssembly支持
- HTML5 Canvas
- File API
- Fetch API
主流浏览器的最新版本通常都支持这些特性。
docs/engine/drawingfile.wasm- 核心的WebAssembly模块,负责PDF/OFD解析和渲染docs/engine/drawingfile.js- WebAssembly模块的JavaScript包装器docs/js/viewer.js- PDF查看器的主要逻辑docs/js/file.js- PDF文件处理逻辑docs/js/api.js- 对外提供的API接口
- WASM文件较大(约38MB),加载可能需要一些时间
- 第一次使用时会加载字体文件,可能需要一些时间
- 由于是纯前端应用,所有处理都在浏览器中进行,大文件可能影响性能