Skip to content

页面组织

如果您使用的是完整阅读器(UI Extensions),页面组织功能已内置在缩略图面板中,用户可直接通过拖拽重排、长按删除等手势操作页面,无需额外编码。

若需在代码中实现页面组织,可通过 Core SDK(PDFDoc / PDFPage)或 PDFViewCtrl 来操作,支持新增、删除、移动、导入、提取、旋转和扁平化页面。

通过 PDFDoc 操作页面

插入页面

java
// 插入自定义尺寸的空白页(单位:磅,1 英寸 = 72 磅)
PDFPage page = doc.insertPage(0, 612.0f, 792.0f);

// 使用预设尺寸插入空白页
PDFPage page = doc.insertPage(0, PDFPage.e_SizeLetter);

备注

预设尺寸常量包括 e_SizeLettere_SizeA3e_SizeA4 等,完整列表请参阅 API 手册。

删除页面

java
// 按页面索引删除
doc.removePage(0);

// 按页面对象删除
doc.removePage(page);

移动页面

java
// 将页面移动到目标索引位置
doc.movePageTo(page, 3);

// 批量移动页面范围
Range range = new Range(0, 2);
doc.movePagesTo(range, 5);

导入页面

从另一个 PDF 文档或文件路径导入指定页面:

java
// 从文件路径导入
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();
}

// 从 PDFDoc 对象导入
Progressive progressive = doc.startImportPages(
    0, srcDoc, 0, null, pageRange, null);

提取页面

将指定页面提取到新的 PDF 文件:

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();
}

通过 PDFPage 操作

旋转页面

java
// 旋转角度:0、1、2、3 分别对应 0°、90°、180°、270°
page.setRotation(1);

设置页面尺寸

java
// 自定义尺寸
page.setSize(612.0f, 792.0f);

// 预设尺寸
page.setSize(PDFPage.e_SizeA4);

设置页面框

PDF 页面定义了多种边界框,用于控制内容显示和裁切范围:

java
// 设置裁切框
RectF cropBox = new RectF(0, 0, 400, 600);
page.setBox(PDFPage.e_CropBox, cropBox);

// 获取媒体框
RectF mediaBox = page.getBox(PDFPage.e_MediaBox);
边界框常量说明
e_MediaBox媒体框 — 页面物理介质的完整尺寸
e_CropBox裁切框 — 页面可见内容区域
e_TrimBox裁剪框 — 成品页面的最终尺寸
e_ArtBox内容框 — 有意义内容的边界
e_BleedBox出血框 — 含出血区域的裁切范围

扁平化页面

扁平化(Flatten)会将注释、表单字段等合并到页面内容中,使其不可再编辑:

java
// 扁平化整个页面
page.flatten(true, 0);

// 扁平化指定注释
page.flattenAnnot(annot);

通过 PDFViewCtrl 操作页面

PDFViewCtrl 封装了面向 UI 场景的页面操作方法,会自动处理视图刷新:

插入空白页

java
// 插入自定义尺寸的空白页
pdfViewCtrl.insertPages(0, 612.0f, 792.0f, 0, 0xFFFFFFFF, 0, 1);

// 使用预设尺寸
pdfViewCtrl.insertPages(0, PDFPage.e_SizeLetter, 0, 0xFFFFFFFF, 0, 1);

从外部文件导入页面

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

删除页面

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

移动页面

java
pdfViewCtrl.movePage(0, 3);

将图片作为页面插入

java
pdfViewCtrl.addImagePage(0, imagePath);

API 参考

PDFDocPDFPage 页面组织相关的完整接口说明请参阅 API 手册