保存文档
福昕 PDF SDK iOS 版提供了多种保存文档的方式,支持同步保存和保存到自定义输出流。根据使用场景不同,可通过 Core SDK(FSPDFDoc)或 FSPDFViewCtrl 来操作。
通过 FSPDFDoc 保存
同步保存
objc
[doc saveAs:outputPath saveFlags:FSPDFDocSaveFlagNormal];
异步保存(渐进式)
适用于大文件保存场景,可结合 FSPauseCallback 实现中断与恢复:
objc
FSProgressive *progressive = [doc startSaveAs:outputPath
saveFlags:FSPDFDocSaveFlagNormal
pause:nil];
FSProgressState state = FSProgressiveToBeContinued;
while (state == FSProgressiveToBeContinued) {
state = [progressive resume];
}
保存到自定义输出流
通过实现 FSFileWriterCallback 协议将文档写入自定义目标:
objc
FSProgressive *progressive = [doc startSaveAs:fileWriterCallback
saveFlags:FSPDFDocSaveFlagNormal
pause:nil];
FSProgressState state = FSProgressiveToBeContinued;
while (state == FSProgressiveToBeContinued) {
state = [progressive resume];
}
保存标志位
| 常量 | 说明 |
|---|---|
FSPDFDocSaveFlagNormal | 普通保存 |
FSPDFDocSaveFlagIncremental | 增量保存(仅追加修改部分,速度更快) |
FSPDFDocSaveFlagNoOriginal | 不保留原始数据(完全重写) |
FSPDFDocSaveFlagXRefStream | 使用交叉引用流(XRef Stream) |
FSPDFDocSaveFlagRemoveRedundantObjects | 移除冗余对象(减小文件体积) |
FSPDFDocSaveFlagLinearized | 线性化保存(优化 Web 浏览体验) |
标志位可通过 | 组合使用:
objc
[doc saveAs:outputPath
saveFlags:FSPDFDocSaveFlagIncremental | FSPDFDocSaveFlagRemoveRedundantObjects];
通过 FSPDFViewCtrl 保存
FSPDFViewCtrl 封装了面向 UI 场景的保存方法:
objc
// 保存到文件路径
[pdfViewCtrl saveDoc:filePath flag:FSPDFDocSaveFlagNormal];
// 保存到自定义输出流
[pdfViewCtrl saveDocToFileWriter:fileWriterCallback flag:FSPDFDocSaveFlagNormal];
完整示例
objc
FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:inputPath];
[doc load:nil];
// ... 对文档进行修改 ...
// 增量保存到新文件
[doc saveAs:outputPath saveFlags:FSPDFDocSaveFlagIncremental];
API 参考
FSPDFDoc 的完整接口说明请参阅 API 手册。