Skip to content
DemoAPI 参考文档FAQ
全新发布

PDF SDK 与 AI 文档处理

在 GitHub 获取完整的私有化部署SDK 包及 AI 智能文档处理能力,一键部署,快速构建您的文档处理工作流。

Guides

复制页面

ComPDF React Native SDK 提供页面复制接口,用于复制当前 PDF 文档中的指定页面,并将复制后的页面插入到目标位置。这个接口适合用于页面重排、模板页复用和快速生成相似内容页面的场景。

API 概览

页面复制接口位于 CPDFDocument

ts
copyPage(pageIndex: number, insertIndex: number): Promise<boolean>;

参数说明:

参数说明
pageIndex要复制的源页面索引,从 0 开始
insertIndex复制页面插入位置,从 0 开始;传入 -1 时表示追加到文档末尾

返回值为 Promise<boolean>

  • true:页面复制并插入成功。
  • false:页面索引无效、插入位置无效,或原生平台复制失败。

复制指定页面

使用 copyPage(pageIndex, insertIndex) 可以复制当前文档中的某一页,并将副本插入到指定位置。

tsx
const result = await pdfReaderRef.current?._pdfDocument.copyPage(0, 1);

console.log("Copy page result:", result);

上面示例会将第 1 页复制一份,并插入到第 2 页之前。

如果将 insertIndex 设为 -1,则会把复制页追加到文档末尾:

tsx
const result = await pdfReaderRef.current?._pdfDocument.copyPage(0, -1);

在 CPDFReaderView 中使用

在阅读器页面中,可以通过 CPDFReaderView 实例的 _pdfDocument 调用相同接口。复制完成后,通常需要刷新阅读器页面以显示新的页数。

tsx
import { CPDFReaderView } from "@compdfkit_pdf_sdk/react_native";

async function copyCurrentPage(reader: CPDFReaderView, pageIndex: number) {
  const result = await reader._pdfDocument.copyPage(pageIndex, -1);

  if (result) {
    await reader.reloadPagesPreservingPosition();
  }
}

这个方式适用于在自定义工具栏、页面菜单或批量页面操作中提供页面复制能力。

完整示例

下面示例演示如何在已加载的阅读器中复制第一页,并将复制页追加到文档末尾。

tsx
import { useRef } from "react";
import { Button } from "react-native";
import { CPDFReaderView } from "@compdfkit_pdf_sdk/react_native";

export default function CopyPageExample() {
  const pdfReaderRef = useRef<CPDFReaderView>(null);

  const duplicateFirstPage = async () => {
    const reader = pdfReaderRef.current;
    if (!reader) {
      return;
    }

    const result = await reader._pdfDocument.copyPage(0, -1);

    if (!result) {
      throw new Error("Copy page failed.");
    }

    await reader.reloadPagesPreservingPosition();
    console.log("Page copied successfully.");
  };

  return (
    <>
      <CPDFReaderView
        ref={pdfReaderRef}
        document="file:///path/to/sample.pdf"
        style={{ flex: 1 }}
      />
      <Button title="Copy First Page" onPress={duplicateFirstPage} />
    </>
  );
}

注意事项

  • pageIndex 必须是当前文档中存在的页面索引,否则接口会返回 false
  • insertIndex 支持 0..pageCount,传入 -1 时表示追加到文档末尾。
  • 页面复制会改变文档页数,如果你在阅读器中使用该接口,请在成功后刷新页面状态。
  • 当文档为空、页面索引无效或原生 SDK 不支持当前文档状态时,接口会返回 false
  • 如果需要复制多页,请按业务顺序多次调用 copyPage,或先将目标页整理后再执行复制。