# mobile_pdf_viewer
**Repository Path**: phoooob/mobile_pdf_viewer
## Basic Information
- **Project Name**: mobile_pdf_viewer
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-07-07
- **Last Updated**: 2025-07-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Mobile PDF Viewer
一个基于 Vue 3 的移动端 PDF 查看器组件,支持触摸手势、缩放、平移等功能。
## 项目结构
```
mobile-pdf-viewer/
├── types.ts # 类型定义
├── constants.ts # 常量定义
├── utils.ts # 工具函数
├── composables.ts # 组合式函数
├── touchHandlers.ts # 触摸事件处理
├── MobilePDFViewer.vue # 主组件
├── index.ts # 导出文件
└── README.md # 使用说明
```
## 功能特性
- ✅ 支持触摸手势(单指拖拽、双指缩放)
- ✅ 支持双击缩放
- ✅ 虚拟滚动优化,按需渲染页面
- ✅ 进度条显示加载状态
- ✅ 边界限制,防止过度拖拽
- ✅ 高性能渲染,使用 IntersectionObserver
- ✅ TypeScript 支持
- ✅ 模块化设计,易于维护
## 使用方法
### 基本使用
```vue
```
### 配置选项
```typescript
interface MobilePDFViewerConfig {
resolutionMultiplier?: number; // 分辨率倍数,默认 3
minScale?: number; // 最小缩放比例,默认 0.5
maxScale?: number; // 最大缩放比例,默认 4
scaleStep?: number; // 缩放步长,默认 0.1
dampingFactor?: number; // 阻尼系数,默认 0.85
boundaryPadding?: number; // 边界填充,默认 50
pinchSensitivity?: number; // 捏合敏感度,默认 0.6
maxScaleChange?: number; // 最大缩放变化,默认 0.25
showProgress?: boolean; // 是否显示进度条,默认 true
progressColor?: string; // 进度条颜色,默认 '#007bff'
viewportBufferPages?: number; // 视口缓冲页数,默认 2
}
```
### 事件
- `load-start`: 开始加载 PDF
- `load-progress`: 加载进度更新 `(progress: number)`
- `load-complete`: 加载完成 `(pageCount: number)`
- `load-error`: 加载错误 `(error: Error)`
- `scale-change`: 缩放变化 `(scale: number)`
### 暴露的方法
```typescript
const pdfViewerRef = ref();
// 加载 PDF
pdfViewerRef.value?.loadPDF(source);
// 重置位置
pdfViewerRef.value?.resetPosition();
// 获取当前缩放比例
const scale = pdfViewerRef.value?.getScale();
// 获取是否正在加载
const loading = pdfViewerRef.value?.isLoading();
// 获取页面数量
const pageCount = pdfViewerRef.value?.getPageCount();
```