开发人员经常需要将大型 PDF 文件拆分为更小、更易管理的部分。使用 GroupDocs.Merger Cloud SDK for Node.JS,将 PDF 拆分为多个部分变得非常简单,因为云服务负责繁重的工作,而您只需专注于应用程序逻辑。本指南提供了完整的工作示例,展示了如何通过 cURL 执行相同的任务,并解释了可让您微调拆分操作的配置选项。

在 Node.JS 中将 PDF 拆分为多个 PDF - 完整代码示例

本示例演示如何使用 GroupDocs.Merger Cloud SDK for Node.JS 将 PDF 拆分为多个 PDF 文件。

const fs = require('fs');
const path = require('path');
const GroupDocsMergerCloud = require('@groupdocs/merger-cloud');

// ---------- Set up API credentials ----------
const client = new GroupDocsMergerCloud.ApiClient();
client.appSid = 'YOUR_APP_SID';
client.appKey = 'YOUR_APP_KEY';

// ---------- Initialize API instances ----------
const mergerApi = new GroupDocsMergerCloud.MergerApi(client);
const storageApi = new GroupDocsMergerCloud.StorageApi(client);

// ---------- Helper to upload a local file to cloud storage ----------
async function uploadFile(localPath, cloudPath) {
    const fileData = fs.readFileSync(localPath);
    const uploadRequest = new GroupDocsMergerCloud.UploadFileRequest({
        path: cloudPath,
        file: fileData
    });
    await storageApi.uploadFile(uploadRequest);
}

// ---------- Helper to download a cloud file to local storage ----------
async function downloadFile(cloudPath, localPath) {
    const downloadRequest = new GroupDocsMergerCloud.DownloadFileRequest({ path: cloudPath });
    const response = await storageApi.downloadFile(downloadRequest);
    fs.writeFileSync(localPath, response);
}

// ---------- Main execution ----------
(async () => {
    try {
        // 1. Upload source PDF to cloud storage
        const localInputPdf = path.resolve(__dirname, 'input.pdf');          // local source PDF
        const cloudInputPdf = 'input/input.pdf';                            // cloud path
        await uploadFile(localInputPdf, cloudInputPdf);
        console.log('Uploaded PDF to cloud storage.');

// 2. Configure split options (example: split into two parts: pages 1‑2 and 3‑5)
        const splitOptions = new GroupDocsMergerCloud.SplitOptions({
            pages: ['1-2', '3-5']                                            // page ranges to split
        });

// 3. Build split request
        const splitRequest = new GroupDocsMergerCloud.SplitDocumentRequest({
            fileInfo: new GroupDocsMergerCloud.FileInfo({ filePath: cloudInputPdf }),
            options: splitOptions
        });

// 4. Execute split operation
        const splitResult = await mergerApi.splitDocument(splitRequest);
        console.log(`Split operation completed. ${splitResult.length} parts generated.`);

// 5. Download each split part and save locally
        for (let i = 0; i < splitResult.length; i++) {
            const partInfo = splitResult[i];
            const localOutputPath = path.resolve(__dirname, `output_part_${i + 1}.pdf`);
            await downloadFile(partInfo.path, localOutputPath);
            console.log(`Saved split part ${i + 1} to ${localOutputPath}`);
        }

// 6. (Optional) Clean up cloud storage – delete uploaded source file
        const deleteRequest = new GroupDocsMergerCloud.DeleteFileRequest({ path: cloudInputPdf });
        await storageApi.deleteFile(deleteRequest);
        console.log('Cleaned up source file from cloud storage.');
    } catch (error) {
        console.error('Error during PDF split process:', error);
    }
})();

注意: 此代码示例演示了核心功能。在将其用于项目之前,请确保更新所有文件路径和配置值以匹配实际环境,验证已正确安装所有必需的依赖项,并在开发环境中进行彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。

使用 REST API 和 cURL 拆分 PDF

如果您更喜欢纯 REST 方法,可以使用 cURL 命令执行相同的拆分操作。下面的步骤展示了如何获取访问令牌、上传源 PDF、执行拆分以及下载每个部分。

# 1. Get an access token (replace YOUR_CLIENT_ID and YOUR_CLIENT_SECRET)
curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"
# 2. Upload the source PDF (replace YOUR_ACCESS_TOKEN and adjust paths)
curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/pdf" \
     --data-binary @./input.pdf
# 3. Execute the split operation (pages 1-2 and 3-5)
curl -X POST "https://api.groupdocs.cloud/v2.0/merger/split" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "fileInfo": { "filePath": "input.pdf" },
           "options": { "pages": ["1-2","3-5"] }
         }'
# 4. Download each generated part (example for part 1)
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/output_part_1.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o ./output_part_1.pdf

要查看完整的端点和参数列表,请参阅官方 API 文档。

在 Node.JS 中拆分 PDF 为多个 PDF 的工作原理

了解流程有助于您将代码适配到更复杂的场景中。

  1. 初始化 API 客户端 - new GroupDocsMergerCloud.ApiClient() 创建一个保存您的 App SID 和 App Key 的客户端。
const client = new GroupDocsMergerCloud.ApiClient();
client.appSid = 'YOUR_APP_SID';
client.appKey = 'YOUR_APP_KEY';
  1. 上传源文件 - 辅助函数 uploadFile 读取本地 PDF 并使用 storageApi.uploadFile 将其发送到云存储。
await uploadFile(localInputPdf, cloudInputPdf);
  1. 配置拆分选项 - new GroupDocsMergerCloud.SplitOptions({ pages: ['1-2', '3-5'] }) 告诉服务要提取哪些页面范围。
const splitOptions = new GroupDocsMergerCloud.SplitOptions({
    pages: ['1-2', '3-5']
});
  1. 发送拆分请求 - mergerApi.splitDocument(splitRequest) 发送请求并返回一个包含每个生成部分信息的数组。
const splitResult = await mergerApi.splitDocument(splitRequest);
  1. 下载结果 - 循环遍历 splitResult,为每个部分调用 downloadFile 并将其保存到本地。
for (let i = 0; i < splitResult.length; i++) {
    const partInfo = splitResult[i];
    await downloadFile(partInfo.path, localOutputPath);
}

有关每个类和方法的更详细信息,请参阅 API 参考。

前置条件和设置

在开始之前,请确保您具备以下条件:

  • 已安装 Node.js 14 或更高版本。
  • 拥有有效 App SID 和 App Key 的 GroupDocs Cloud 账户。
  • 能够访问互联网以进行 API 调用。

通过 npm 安装 SDK 并下载最新的包:

npm install groupdocs-merger-cloud

您也可以直接从下载页面获取二进制文件。

微调拆分选项

SplitOptions 对象提供了多个可调属性:

  • pages - 页面范围数组(例如 ['1-2','3-5'])。这是示例中使用的核心设置。
  • outputPath - 可选文件夹,用于在云存储中存放拆分后的文件。
  • preserveMetadata - 设置为 true 时,原始文档的元数据会复制到每个部分。请参阅 API 参考 获取更多选项。

调整这些值可以让您控制每个生成的 PDF 的大小、命名和元数据。

结论

在 Node.JS 中将 PDF 拆分为多个 PDF 变得简单,只需使用 GroupDocs.Merger Cloud SDK for Node.JS。SDK 负责文件上传、页面范围选择和结果检索,让您专注于将输出集成到工作流中。请记住保护您的 App SID 和 App Key,并考虑在生产部署中使用商业许可证。定价详情可在产品页面查看,您也可以从临时许可证页面获取临时许可证。通过本指南中的代码、cURL 示例和配置技巧,您已准备好在 Node.JS 应用程序中实现强大的 PDF 拆分功能。

常见问题

  • 如何在 Node.JS 中使用自定义页面范围将 PDF 拆分为多个 PDF?
    使用 SplitOptions 的 pages 属性来定义所需的任何范围,例如 ['1-3','4-6']。SDK 将为每个范围生成一个单独的 PDF。

  • 我可以在不将 PDF 永久存储在云存储中的情况下拆分它吗?
    是的。上传源文件并完成拆分后,您可以使用 storageApi.deleteFile 删除原始文件,如示例所示。

  • 我需要付费许可证才能在生产环境中使用 split 功能吗?
    生产环境使用需要商业许可证。访问产品页面了解定价,并从临时许可证页面获取临时许可证进行评估。

阅读更多