福昕 PDF SDK - 移动端(含鸿蒙)
福昕 PDF SDK 移动版旨在帮助开发者快速将强大的福昕 PDF 技术集成到移动端和鸿蒙应用程序中。即使对 PDF 了解有限,开发者也能通过福昕开发包,在移动和鸿蒙平台上快速构建专业的 PDF 阅读器。
支持平台:
- Android
- iOS
- MacOS (Catalyst 技术)
- 鸿蒙
- HarmonyOS Next
- OpenHarmony
主要框架
移动版 SDK 由三个核心组件构成,所有平台共享此架构,便于集成和跨平台支持。
组件概览
组件名称 | 描述 | 平台与提供方式 |
---|---|---|
UI EXTENSIONS | 带内置 UI 的开源库(或工程) | Android: FoxitRDKUIExtensions.aar iOS: uiextensionsDynamic.framework MacOS: uiextensionsDynamic.xcframework HarmonyOS Next: FoxitRDKUIExtensions.har |
PDF VIEW CONTROL | PDF 基础显示类 | Android: FoxitRDK.aar iOS: FoxitRDK.framework MacOS: FoxitRDK.xcframework HarmonyOS Next: FoxitRDK.har OpenHarmony: FoxitRDK.har |
PDF CORE | PDF 数据处理层的核心操作类 | 所有平台通用,相关数据及接口封装在 FoxitRDK.har 中 |
提示:
- OpenHarmony 平台暂不提供 UI EXTENSIONS 组件。
- macOS 平台通过 Catalyst 技术支持 iOS SDK。
组件介绍
UI Extensions 组件
UI Extensions 组件是一个带内置 UI 的开源库,支持对内置的文本选择、标记注释、大纲导航、阅读书签、全文检索、填表、文本重排、文档附件、数字/手写签名、文档编辑和密码加密等功能进行自定义。这些功能通过 PDF Core API 和 PDF View Control 实现。
- 版本演进:
- 4.0 版本起,封装基础 UI 实现到
PDFReader
类,简化 PDF 阅读器构建,支持配置文件自定义。 - 5.0 版本起,所有 UI 元素支持 API 自定义,提供更高级 API 和配置文件。
- 6.0 版本起,移除
PDFReader
类,将其 API 迁移至UI Extensions
组件。
- 4.0 版本起,封装基础 UI 实现到
PDF View Control 组件
PDF View Control 是一个工具类,提供与渲染的 PDF 文档交互的接口。基于福昕 PDF 渲染技术,支持快速高质量的渲染、缩放、滚动和页面导览。该控件继承自平台相关 viewer
类,支持扩展。
PDF Core API
PDF Core API 是 SDK 的核心,基于福昕底层 PDF 技术,提供 PDF 基础功能操作,包括渲染、分析、提取、搜索、表单、签名、笔迹、证书、加密、注释等,确保应用高性能和效率。
UI Extensions 组件详解
提示:
- OpenHarmony 平台目前暂未实现 UI Extensions 组件。
UI Extensions 组件概述
UI Extensions 组件是一个带内置 UI 的开源库,采用模块化设计,将各项功能细化为独立的模块(module)。默认情况下,除了用于文件管理的 LocalModule 外,所有模块都会自动加载。开发者可通过实现 Module 接口类自定义模块,并使用 UIExtensionsManager#registerModule
进行注册,或使用 UIExtensionsManager#unregisterModule
进行反注册。
UIExtensionsManager 包含主框架 UI (如顶部/底部工具栏) 和模块间共享的 UI 组件,并支持各功能模块的独立加载。功能模块加载时,会适配调整主框架 UI,并建立消息事件响应机制。每个功能模块可包含特有的 UI 组件和独立的消息事件处理逻辑。UIExtensionsManager 负责将来自 PDF View Control 组件的消息和事件分发到各功能模块。
UIExtensionsManager 与 Modules 的关系:
事件处理机制
Tool handler 和 annotation handler 处理来自 PDFViewCtrl 的触屏、手势等事件。事件触发时,PDFViewCtrl 将事件传递给 UIExtensionsManager:
- Tool Handler 响应: 若存在当前 tool handler,UIExtensionsManager 将事件传递给它,事件处理结束。
- Annotation Handler 响应: 若存在选中的 annotation,UIExtensionsManager 将事件传递给其对应的 annotation handler,事件处理结束。
- Selection Tool Handler 响应: 若不存在 tool handler 和选中的 annotation,UIExtensionsManager 将事件传递给 selection tool handler。
- Text Selection Tool: 处理文本选择事件 (如添加高亮注释)。
- Blank Selection Tool: 处理空白区域事件 (如添加笔记注释)。
提示:
- Tool Handler 和 Annotation Handler 不会同时响应事件。
- Tool Handler 主要用于创建注释 (暂不支持 Link Annotation)、创建签名和文本选择。
- Annotation Handler 主要用于编辑注释和填写表单。
Tool Handler 和 Annotation Handler 事件响应流程:
UI 组件主要功能对照表
功能 | 描述 | 安卓 | iOS | HarmonyOS Next | OpenHarmony |
---|---|---|---|---|---|
PDF Document | 打开和关闭文件,设置和获取 metadata | √ | √ | √ | √ |
PDF Page | 解析、渲染、阅读、编辑文档页面 | √ | √ | √ | √ |
Render | 平台图像设备在 bitmap 上创建图像渲染引擎 | √ | √ | √ | √ |
Reflow | 重排页面内容 | √ | √ | √ | √ |
Crop | 裁剪 PDF 页面 | √ | √ | √ | √ |
Text Select | 文本选择 | √ | √ | √ | x |
Text Search | 文本搜索,并且支持全文索引搜索 | √ | √ | √ | √ |
Outline (bookmark) | 定位和链接到文档中的兴趣点 | √ | √ | √ | √ |
Reading Bookmark | 标记文档中感兴趣的页面和段落位置 | √ | √ | √ | x |
Annotation | 创建、编辑和移除 annotations | √ | √ | √ | √ |
Layers | 添加、编辑和移除 PDF 层内容 | √ | √ | √ | √ |
Attachments | 添加、编辑和移除文档级的附件 | √ | √ | √ | √ |
Form | 支持 JavaScript 填表,通过 XFDF/FDF/XML 文件导入和导出表单数据 支持创建文本域、复选框、单选按钮、组合框、列表框和签名域 | √ | √ | √ | √ |
XFA | 支持静态和动态 XFA | √ | √ | √ | √ |
Signature | 签名 PDF 文档,验证签名,添加或删除签名域 添加和验证第三方数字签名 支持签名的长期验证 (LTV) | √ | √ | √ | √ |
Fill& Sign | 用文本和符号填写扁平化表单 (即非交互式表单) | √ | √ | √ | √ |
Security | 密码和证书加密 PDF 文档 | √ | √ | √ | √ |
Pan and Zoom | 调整视图中的放大倍数和位置以匹配 Pan&Zoom 缩略视图中的矩形区域 | √ | √ | x | x |
打印 PDF 文档 | √ | √ | x | x | |
RMS | 支持微软 IRMv1 和 IRMv2 标准的 RMS 解密 | √ | √ | x | x |
Comparison | 对比两个 PDF 文档,并且标记文档之间的差异 | √ | √ | √ | √ |
Scanning | 扫描纸质文档,并将其转换为 PDF 文档 | √ | √ | x | x |
Speak | 支持阅读 PDF 文档中的文本 | √ | √ | x | x |
Split Screen | 支持分屏 | √ | √ | √ | x |
Right to Left | 支持 RTL (Right to Left) | √ | √ | √ | √ |
Out of Memory | 从内存不足中恢复运行 | √ | √ | √ | x |
INFO
Outline 是 PDF 规范中的技术术语,在传统的桌面 PDF 阅读器中常叫做书签Reading bookmarks 常用于移动端和平板的 PDF 阅读器中,用来标记阅读进度或者用户感兴趣的段落Reading bookmark 在技术上并不是 outline,它存储在应用程序中而不是 PDF 本身*