将多个 PDF 文档合并为单个文件是构建文档工作流或生成报告时的常见需求。GroupDocs.Merger Cloud SDK for Node.js 使在 Node.JS 中合并 PDF 变得轻松,无需处理底层 PDF 结构。本指南将带您完成设置、逐步实现、完整代码示例、等效的 cURL 调用以及针对大型或加密 PDF 的性能技巧。

开始之前:先决条件和安装

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

  • 在您的开发机器上安装了 Node.js 14 或更高版本。
  • 拥有有效的 GroupDocs Cloud 账户,并具备 client ID 和 client secret。
  • 访问存储在 GroupDocs Cloud 存储中的、您想要合并的 PDF 文件。

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

npm install groupdocs-merger-cloud

您也可以从官方发布页面获取 SDK: 下载 SDK。安装完成后,您即可开始编码。

Node.JS 中合并 PDF 的分步指南

步骤 1:安装 SDK 并导入所需类

首先,导入合并 PDF 所需的类。

const { MergeApi, MergeOptions, FileInfo, Configuration } = require("@groupdocs/merger-cloud");

此导入为您提供对核心 API、配置对象和文件描述符的访问。

步骤 2:配置您的 GroupDocs 凭据

使用您的客户端凭据创建配置对象。

const config = new Configuration({
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET"
});

提供正确的凭据可让库对您的请求进行身份验证。

步骤 3:定义要合并的 PDF 文件

列出您想要合并的 PDF 文档。此步骤可帮助您在 Node.JS 中高效合并 PDF。

const filesToMerge = [
    new FileInfo({ filePath: "input1.pdf" }),
    new FileInfo({ filePath: "input2.pdf" })
];

每个 FileInfo 指向存储在您的 GroupDocs Cloud 存储中的文件。

第4步:设置合并选项

配置输出位置并将文件列表附加到合并请求。

const mergeOptions = new MergeOptions();
mergeOptions.fileInfos = filesToMerge;
mergeOptions.outputPath = "merged_output.pdf";

这些设置控制您在 Node.JS 中合并 PDF 的方式以及结果将保存的位置。

步骤 5:执行合并操作

创建 API 实例,调用 merge 方法,并处理响应。

const mergeApi = new MergeApi(config);

try {
    const result = await mergeApi.mergeDocuments(mergeOptions);
    console.log("Merge completed. Output file stored at:", result.path);
} catch (error) {
    console.error("Error during PDF merge:", error);
}

如果操作成功,异步调用将返回合并文档的路径。

在 Node.JS 中合并 PDF 的完整实现示例

以下代码演示了从配置到结果处理的完整工作流。

const { MergeApi, MergeOptions, FileInfo, Configuration } = require("@groupdocs/merger-cloud");

// Configure the SDK (replace with your actual credentials)
const config = new Configuration({
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET"
});

async function mergePdfFiles() {
    // Initialize the Merge API
    const mergeApi = new MergeApi(config);

// Define the PDF files to be merged (must exist in GroupDocs Cloud storage)
    const filesToMerge = [
        new FileInfo({ filePath: "input1.pdf" }),
        new FileInfo({ filePath: "input2.pdf" })
    ];

// Set merge options
    const mergeOptions = new MergeOptions();
    mergeOptions.fileInfos = filesToMerge;
    mergeOptions.outputPath = "merged_output.pdf";

try {
        // Perform the merge operation
        const result = await mergeApi.mergeDocuments(mergeOptions);
        console.log("Merge completed. Output file stored at:", result.path);
    } catch (error) {
        console.error("Error during PDF merge:", error);
    }
}

// Execute the merge
mergePdfFiles();

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

使用 cURL 通过 REST API 合并 PDF

如果您更喜欢纯 REST 方法,可以使用 cURL 命令执行相同的操作。

首先,获取访问令牌:

curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
     -H "Content-Type: application/json" \
     -d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET","grant_type":"client_credentials"}'

将源 PDF 上传到您的存储(将 YOUR_ACCESS_TOKEN 替换为上一步中的令牌):

curl -X POST "https://api.groupdocs.cloud/v2.0/storage/file/upload?path=input1.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "file=@/local/path/input1.pdf"

再次上传 input2.pdf。然后请求合并操作:

curl -X POST "https://api.groupdocs.cloud/v2.0/merger/merge" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "fileInfos": [
               {"filePath":"input1.pdf"},
               {"filePath":"input2.pdf"}
           ],
           "outputPath":"merged_output.pdf"
         }'

最后,下载合并后的文件:

curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/download?path=merged_output.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o merged_output.pdf

要获取完整的端点和参数列表,请参阅 API 参考。

配置合并选项

SDK 提供了多种选项,允许您微调合并过程:

  • outputPath - 合并后 PDF 的目标路径。调整此路径以控制结果的存储位置。
  • fileInfos - 定义源 PDF 及其顺序的 FileInfo 对象数组。

您还可以设置其他属性,例如 pages 用于合并特定页面范围,或 password 用于加密的 PDF。请参阅官方文档以获取可配置字段的完整列表。

合并 PDF 的性能考虑

合并大量或许多 PDF 文件时,请牢记以下提示:

  • 使用 async/await 来避免阻塞事件循环,尤其是处理大型文档时。
  • 批量上传:在调用合并之前并行上传源 PDF,以降低整体延迟。
  • 流式处理:对于极大的 PDF,考虑将中间结果存储在云存储中,并分块合并。
  • 加密 PDF:在 FileInfo 对象中提供密码;处理加密文件会增加开销,尽可能在解密后再进行合并。

应用这些实践可帮助您在 Node.JS 中高效合并 PDF,同时将内存消耗降至最低。

您可能有的问题

  • 如何在 Node.JS 中使用 GroupDocs 合并 PDF 文件?
    使用 GroupDocs.Merger Cloud SDK for Node.js 创建一个 MergeApi 实例,使用您的源 PDF 配置 MergeOptions,并调用 mergeDocuments。本指南中的完整代码示例演示了该过程。

  • 我可以在 Node.JS 中合并加密的 PDF 文件吗?
    是的,SDK 支持合并加密的 PDF。请在调用 mergeDocuments 之前,在 FileInfo 对象中提供正确的密码。详情请参阅官方文档。

  • GroupDocs.Merger 的授权选项有哪些?
    GroupDocs 提供灵活的定价方案。为了测试,您可以请求临时许可证,在购买完整订阅之前评估该库。

  • 我在哪里可以找到更多示例和支持?
    其他示例可在 GitHub 仓库 获取。 如需帮助,请访问 支持论坛。

进一步阅读