页面组织
页面组织用于调整 PDF 文档的页面结构,包括插入、删除、移动、旋转、提取和合并页面。福昕 PDF SDK(Web)主要通过 PDFDoc 提供这些能力。
如果使用完整 Viewer,部分页面组织能力也会通过缩略图面板或相关 UI 组件提供。本文重点介绍通过 API 实现页面组织。
获取当前文档
javascript
const pdfViewer = await pdfui.getPDFViewer();
const pdfDoc = pdfViewer.getCurrentPDFDoc();
if (!pdfDoc) {
throw new Error('当前没有打开文档');
}
插入空白页
PDFDoc.insertPage(pageIndex, width, height) 用于在指定位置插入空白页。页面尺寸单位为 point,1 英寸等于 72 point。
javascript
// 在第 1 页前插入一张 A4 尺寸空白页。
await pdfDoc.insertPage(0, 595, 842);
如果需要批量插入空白页,可以使用 insertBlankPages(pageRange, width, height)。
javascript
// 插入多张空白页。
await pdfDoc.insertBlankPages([[1, 3]], 595, 842);
从其他 PDF 导入页面
PDFDoc.insertPages(options) 用于从另一个 PDF 文件中导入页面。
javascript
await pdfDoc.insertPages({
destIndex: 1,
file,
password: '',
startIndex: 0,
endIndex: 2
});
常用参数如下:
| 参数 | 说明 |
|---|---|
destIndex | 当前文档中的插入位置。 |
file | 来源 PDF 文件,可以是 File、Blob、ArrayBuffer 等。 |
password | 来源 PDF 的打开密码,可为空。 |
startIndex | 来源 PDF 起始页索引。 |
endIndex | 来源 PDF 结束页索引。 |
flags | 导入选项,0 表示普通导入,1 表示带图层导入。 |
layerName | 带图层导入时使用的图层名称。 |
删除页面
javascript
// 删除第 1 页。
await pdfDoc.removePage(0);
// 删除多个页面范围。
await pdfDoc.removePages([[1, 3]]);
移动页面
javascript
// 将第 1 页移动到第 4 页位置。
await pdfDoc.movePageTo(0, 3);
// 将多个页面范围移动到目标位置。
await pdfDoc.movePagesTo([[0, 2]], 5);
旋转页面
PDFDoc.rotatePages(pageRange, rotation) 会修改 PDF 文档中的页面旋转信息,和 PDFViewer.rotateTo() 只改变视图显示不同。
javascript
// 将第 1 页到第 3 页旋转 90 度。
await pdfDoc.rotatePages([[0, 2]], 90);
提取与合并页面
extractPages(pageRange) 可将指定页面提取为新的 PDF 文档对象,mergePDFDoc(options) 可将其他文档合并到当前文档。
javascript
const extractedDoc = await pdfDoc.extractPages([[0, 2]]);
await pdfDoc.mergePDFDoc({
doc: extractedDoc
});
保存修改
页面组织操作会修改当前 PDFDoc。如需下载或上传修改后的文档,请在操作完成后调用 getFile()。
javascript
const file = await pdfDoc.getFile({
fileName: 'organized.pdf'
});
注意事项
- 页面索引从
0开始。 - 删除、移动、旋转等操作会改变文档结构,执行前建议确认用户意图。
PDFViewer.rotateTo()只改变查看器显示;如需保存页面旋转结果,应使用PDFDoc.rotatePages()。- 处理大文档时,建议在 UI 中展示进度或禁用重复操作,避免用户连续触发页面组织任务。