集成扫描功能
福昕 PDF SDK iOS 版提供了 FoxitPDFScanUI 模块,支持通过设备摄像头扫描文档并转换为 PDF。
前置条件
- 已添加
FoxitPDFScanUI.framework到工程(参考:集成 SDK)。 - 在
Info.plist中配置相机权限:
xml
<key>NSCameraUsageDescription</key>
<string>需要使用相机进行文档扫描</string>
核心类
| 类 | 说明 |
|---|---|
PDFScanManager | 扫描模块单例管理器,负责初始化、展示扫描 UI 和保存结果 |
PDFScanToolbarManager | 扫描 UI 工具栏管理器 |
PDFScanMenuViewManager | 扫描 UI 菜单视图管理器 |
初始化扫描模块
扫描模块需要独立的序列号进行初始化:
objc
#import <FoxitPDFScanUI/PDFScanManager.h>
// 使用序列号初始化扫描模块
FSErrorCode ret = [PDFScanManager initializeScanner:serial1 serial2:serial2];
if (ret != FSErrSuccess) {
NSLog(@"扫描模块初始化失败");
}
备注
扫描模块的序列号(serial1、serial2)与 SDK 主序列号不同,请在 SDK 包中查找扫描模块对应的授权信息。
获取扫描视图并展示
通过单例获取 PDFScanManager,然后获取扫描 ViewController 并展示:
objc
PDFScanManager *scanManager = [PDFScanManager shareManager];
UIViewController *scanVC = [scanManager getPDFScanView];
[self presentViewController:scanVC animated:YES completion:nil];
处理扫描结果
通过设置回调获取扫描完成后的 PDF 文件路径:
objc
// 设置完成回调
[PDFScanManager setDoneCallBack:^(NSError *error, NSString *savePath) {
if (!error && savePath) {
NSLog(@"扫描完成,输出路径: %@", savePath);
// 使用 FSPDFViewCtrl 打开扫描生成的 PDF
[self.pdfViewCtrl openDoc:savePath password:nil completion:nil];
}
}];
另存为 PDF
objc
PDFScanManager *scanManager = [PDFScanManager shareManager];
// 设置另存为回调
[PDFScanManager setSaveAsCallBack:^(NSError *error, NSString *savePath) {
if (!error) {
NSLog(@"另存为成功: %@", savePath);
}
}];
[scanManager saveAsPDF:@"path/to/output.pdf"];
自定义扫描 UI
可以控制相机界面中按钮的显隐:
objc
PDFScanManager *scanManager = [PDFScanManager shareManager];
// 隐藏闪光灯按钮
[scanManager setItemHiddenWithType:FSScanCameraControllerItemTypeFlashLight hidden:YES];
// 隐藏相册按钮
[scanManager setItemHiddenWithType:FSScanCameraControllerItemTypePhotos hidden:YES];
可隐藏的按钮类型:
| 常量 | 说明 |
|---|---|
FSScanCameraControllerItemTypeFlashLight | 闪光灯按钮 |
FSScanCameraControllerItemTypeSingleShooting | 单拍按钮 |
FSScanCameraControllerItemTypePhotos | 相册按钮 |
FSScanCameraControllerItemTypeAutoDection | 自动检测按钮 |
FSScanCameraControllerItemTypeFormatPageSize | 页面尺寸按钮 |
注意
扫描功能仅在真机设备上可用,iOS 模拟器不支持摄像头。
API 参考
PDFScanManager 的完整接口说明请参阅 API 手册。