Skip to content

Page Organizer

If you use the full reader (UI Extensions), page organization is built into the thumbnail panel—users can reorder by drag, delete with long press, and more without extra code.

To implement page organization in code, use Core SDK (PDFDoc / PDFPage) or PDFViewCtrl to add, delete, move, import, extract, rotate, and flatten pages.

Page Operations via PDFDoc

Insert Pages

java
// Insert blank page with custom size (points; 1 inch = 72 points)
PDFPage page = doc.insertPage(0, 612.0f, 792.0f);

// Insert blank page with preset size
PDFPage page = doc.insertPage(0, PDFPage.e_SizeLetter);

Note

Preset sizes include e_SizeLetter, e_SizeA3, e_SizeA4, and more. See the API Reference.

Delete Pages

java
// Delete by page index
doc.removePage(0);

// Delete by page object
doc.removePage(page);

Move Pages

java
// Move page to target index
doc.movePageTo(page, 3);

// Move page range
Range range = new Range(0, 2);
doc.movePagesTo(range, 5);

Import Pages

Import pages from another PDF file or PDFDoc:

java
// Import from file path
Range pageRange = new Range(0, 4);
Progressive progressive = doc.startImportPagesFromFilePath(
    0, srcFilePath, null, 0, null, pageRange, null);

int state = Progressive.e_ToBeContinued;
while (state == Progressive.e_ToBeContinued) {
    state = progressive.resume();
}

// Import from PDFDoc
Progressive progressive = doc.startImportPages(
    0, srcDoc, 0, null, pageRange, null);

Extract Pages

Extract pages to a new PDF file:

java
Range pageRange = new Range(0, 2);
Progressive progressive = doc.startExtractPages(
    outputPath, 0, pageRange, null);

int state = Progressive.e_ToBeContinued;
while (state == Progressive.e_ToBeContinued) {
    state = progressive.resume();
}

Operations via PDFPage

Rotate Page

java
// Rotation: 0, 1, 2, 3 = 0°, 90°, 180°, 270°
page.setRotation(1);

Set Page Size

java
// Custom size
page.setSize(612.0f, 792.0f);

// Preset size
page.setSize(PDFPage.e_SizeA4);

Set Page Boxes

PDF pages define multiple boxes for display and clipping:

java
// Set crop box
RectF cropBox = new RectF(0, 0, 400, 600);
page.setBox(PDFPage.e_CropBox, cropBox);

// Get media box
RectF mediaBox = page.getBox(PDFPage.e_MediaBox);
Box ConstantDescription
e_MediaBoxMedia box — full physical page size
e_CropBoxCrop box — visible content area
e_TrimBoxTrim box — final trimmed page size
e_ArtBoxArt box — meaningful content boundary
e_BleedBoxBleed box — crop area including bleed

Flatten Page

Flattening merges annotations and form fields into page content so they are no longer editable:

java
// Flatten entire page
page.flatten(true, 0);

// Flatten specific annotation
page.flattenAnnot(annot);

Page Operations via PDFViewCtrl

PDFViewCtrl wraps UI-oriented page operations and refreshes the view automatically.

Insert Blank Pages

java
// Custom size
pdfViewCtrl.insertPages(0, 612.0f, 792.0f, 0, 0xFFFFFFFF, 0, 1);

// Preset size
pdfViewCtrl.insertPages(0, PDFPage.e_SizeLetter, 0, 0xFFFFFFFF, 0, 1);

Import Pages from External File

java
int[] pageRanges = {0, 4};
pdfViewCtrl.insertPages(0, 0, null, srcFilePath, null, pageRanges);

Delete Pages

java
int[] pageIndexes = {0, 2, 4};
pdfViewCtrl.removePages(pageIndexes);

Move Pages

java
pdfViewCtrl.movePage(0, 3);

Insert Image as Page

java
pdfViewCtrl.addImagePage(0, imagePath);

API Reference

See the API Reference for full PDFDoc and PDFPage page organization APIs.