Skip to content

页面组织

页面组织用于调整 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 文件,可以是 FileBlobArrayBuffer 等。
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 中展示进度或禁用重复操作,避免用户连续触发页面组织任务。