ReadViewSDK/Sources/RDPDFReaderView/README.md
shenlei 1422461224 将 PDF 成品阅读控制器下沉为 RDPDFReaderView SDK,并修复手机横屏单页连续竖滑
SDK 化收尾:
- 新增 RDPDFReaderView 本地 pod(阅读容器、成品控制器、划线/注释、画笔、
  目录/设置面板、主题与持久化契约),Demo 精简为 PDFKit 页面提供者 + 持久化宿主
- Podfile/工程接入 RDPDFReaderView 与 SnapKit,示例书改用 PDF 阅读器示例文件

手机横屏单页竖滑修复:
- cell 高度改为宽度适配后的纸张高度(sizeForItemAt + 宿主按页提供纵横比),
  纵向超出一屏的内容由外层 collectionView 连续滚动承接,不再被裁掉
- 页面内部不再开启同向嵌套的兜底竖向拖动,修复外层滚动被吞、无法滚到下一页
- 修复 applyContentSize 先评估拖动开关后写 contentSize 的顺序缺陷
- 页码按视口中心命中 cell 计算,补 didEndDragging 兜底;旋转重锚点与
  transitionToPage 改用真实布局位置
- 横竖屏同为竖滑时也重建 cell 并刷新全部可见页的适配配置
- 横屏单页点击不再跳页,只显隐工具栏;翻页交给连续竖滑

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 18:49:44 +09:00

33 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# RDPDFReaderView
独立的 UIKit PDF 阅读交互 SDK。当前第一阶段只包含与业务无关的部分分页、双指缩放、双击缩放、放大后拖动以及画笔模式下的手势隔离。
主工程的下载、解密、缓存、链接、标注和持久化仍由现有 PDF Feature 管理;后续通过适配层逐步迁移,避免把业务问题和手势问题混在一起。
## 调试入口
在任意测试宿主中 push `RDPDFReaderDebugViewController()`
```swift
navigationController?.pushViewController(RDPDFReaderDebugViewController(), animated: true)
```
验证顺序:
1. 双指捏合能连续放大和缩小。
2. 双击能在适配尺寸与两倍缩放之间切换。
3. 放大后单指只能拖动内容,不能翻页。
4. 切到“画笔模式”后,单指不再翻页,双指仍能缩放和拖动。
如果这个独立页面工作正常,而主阅读页仍失效,问题就能确定在主工程的页面层/覆盖层,而不是缩放内核。
## 图片型 PDF 的文本、复制与标注
主程序即使只能提供每页图片,也可以接入文字功能:
1. 若主程序已有 PDF 解析结果,在 `RDPDFReaderPageDescriptor.textRuns` 中传入文字和相对图片的 `0...1` 坐标;这条路径提供最准确的复制和高亮。
2. 若没有文字坐标,使用 `RDPDFReaderImageTextRecognizer` 对当前页图片按需 OCR再把结果赋给 `RDPDFReaderImageTextLayerView.textRuns`
3. OCR 也不可用时,文字层会提供区域框选;区域标注只显示“高亮、注释”,不会错误地提供复制。
高亮与注释统一使用 `RDPDFReaderAnnotation`,坐标同样是相对图片的 `0...1` 比例,缩放、旋转或重新渲染页面后仍能对齐。使用 `RDPDFReaderPersistenceStore` 保存时,请传入宿主稳定的书籍 ID可附账号和内容版本对应的目录并对 `addAnnotation`、`updateAnnotation`、`deleteAnnotation` 的 `throws` 结果做错误提示;文件损坏或版本不兼容时 SDK 会拒绝覆盖原数据。