页面组织
福昕 PDF SDK iOS 版通过 Core SDK 和 PDFViewCtrl 提供了丰富的页面组织功能,包括插入、删除、移动、导入和提取页面等操作。
通过 FSPDFDoc 操作页面
插入页面
objc
#import <FoxitRDK/FSPDFObjC.h>
FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:@"path/to/Sample.pdf"];
[doc load:nil];
// 在指定位置插入一个空白页(自定义尺寸,单位:1/72 英寸)
FSPDFPage *newPage = [doc insertPage:0 width:595.0f height:842.0f];
// 使用预定义页面尺寸插入
FSPDFPage *a4Page = [doc insertPageSize:1 size:FSPDFPageSizeA4];
[doc saveAs:@"path/to/output.pdf" saveFlags:FSPDFDocSaveFlagNormal];
删除页面
objc
// 按索引删除(0-based)
[doc removePage:2];
// 按 FSPDFPage 对象删除
FSPDFPage *page = [doc getPage:0];
[doc removePageWithPage:page];
移动页面
objc
// 将指定页面移动到目标位置
FSPDFPage *page = [doc getPage:0];
[doc movePageTo:page dest_index:3];
// 批量移动:将一组连续页面移动到目标位置
FSRange *range = [[FSRange alloc] init];
// 配置 range 的起始和结束索引
[doc movePagesTo:range dest_index:5];
从其他文档导入页面
导入操作通过 FSProgressive 异步执行:
objc
// 从另一个 PDF 文件导入页面
FSRange *pageRange = [[FSRange alloc] init]; // 页面范围
FSProgressive *progressive = [doc startImportPagesFromFilePath:0
src_file_path:@"path/to/source.pdf"
password:nil
flags:0
layer_name:nil
page_range:pageRange];
FSProgressiveState state = [progressive resume];
while (state == FSProgressiveToBeContinued) {
state = [progressive resume];
}
if (state == FSProgressiveFinished) {
NSLog(@"页面导入成功");
}
[doc saveAs:@"path/to/output.pdf" saveFlags:FSPDFDocSaveFlagNormal];
也可以从已打开的 FSPDFDoc 对象导入:
objc
FSPDFDoc *srcDoc = [[FSPDFDoc alloc] initWithPath:@"path/to/source.pdf"];
[srcDoc load:nil];
FSProgressive *progressive = [doc startImportPages:0
src_doc:srcDoc
flags:0
layer_name:nil
page_range:pageRange];
// ... 循环 resume 直到完成
提取页面
objc
FSRange *pageRange = [[FSRange alloc] init]; // 要提取的页面范围
FSProgressive *progressive = [doc startExtractPages:@"path/to/extracted.pdf"
options:0
page_range:pageRange];
FSProgressiveState state = [progressive resume];
while (state == FSProgressiveToBeContinued) {
state = [progressive resume];
}
通过 FSPDFPage 操作
旋转页面
objc
FSPDFPage *page = [doc getPage:0];
[page startParse:FSPDFPageParsePageNormal pause:nil is_reparse:NO];
// 获取当前旋转角度
FSRotation rotation = [page getRotation];
// 设置旋转(FSRotation0 / FSRotation90 / FSRotation180 / FSRotation270)
[page setRotation:FSRotation90];
设置页面尺寸
objc
[page setSize:612.0f height:792.0f];
扁平化
将注释或表单域合并到页面内容中:
objc
[page flatten:YES pause:nil];
API 参考
FSPDFDoc、FSPDFPage 的完整接口说明请参阅 API 手册。