页面组织
如果您使用的是完整阅读器(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_SizeLetter、e_SizeA3、e_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 参考
PDFDoc、PDFPage 页面组织相关的完整接口说明请参阅 API 手册。