Skip to content

Page organizer

Foxit PDF SDK for iOS provides page operations via Core SDK and PDFViewCtrl: insert, delete, move, import, and extract pages.

Operations via FSPDFDoc

Insert pages

objc
#import <FoxitRDK/FSPDFObjC.h>

FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:@"path/to/Sample.pdf"];
[doc load:nil];

// Blank page (units: 1/72 inch)
FSPDFPage *newPage = [doc insertPage:0 width:595.0f height:842.0f];

// Predefined size
FSPDFPage *a4Page = [doc insertPageSize:1 size:FSPDFPageSizeA4];

[doc saveAs:@"path/to/output.pdf" saveFlags:FSPDFDocSaveFlagNormal];

Delete pages

objc
// By index (0-based)
[doc removePage:2];

// By FSPDFPage
FSPDFPage *page = [doc getPage:0];
[doc removePageWithPage:page];

Move pages

objc
FSPDFPage *page = [doc getPage:0];
[doc movePageTo:page dest_index:3];

FSRange *range = [[FSRange alloc] init];
// Configure range start/end
[doc movePagesTo:range dest_index:5];

Import pages from another document

Asynchronous via FSProgressive:

objc
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];

From an open 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 until finished

Extract pages

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];
}

Operations via FSPDFPage

Rotate page

objc
FSPDFPage *page = [doc getPage:0];
[page startParse:FSPDFPageParsePageNormal pause:nil is_reparse:NO];

FSRotation rotation = [page getRotation];
[page setRotation:FSRotation90];

Set page size

objc
[page setSize:612.0f height:792.0f];

Flatten

Merge annotations or form fields into page content:

objc
[page flatten:YES pause:nil];

API reference

See the API reference for FSPDFDoc and FSPDFPage.