在構建文檔工作流或生成報告時,將多個 PDF 文檔合併為單個文件是一個常見需求。 GroupDocs.Merger Cloud SDK for Node.js 讓在 Node.JS 中合併 PDF 變得簡單,無需處理底層 PDF 結構。本指南將帶您了解設置、逐步實現、完整代碼示例、等效的 cURL 調用以及針對大型或加密 PDF 的性能技巧。

開始之前:先決條件與安裝

在開始之前,請確保您具備以下條件:

  • Node.js 14 或更高版本已安裝在您的開發機器上。
  • 具有客戶端 ID 和客戶端密鑰的有效 GroupDocs Cloud 帳戶。
  • 訪問您想要合併的 PDF 文件,這些文件存儲在 GroupDocs Cloud 存儲中。

通過 npm 安裝 SDK 並下載最新的套件:

npm install groupdocs-merger-cloud

您也可以從官方發行頁面取得 SDK:Download SDK。安裝完成後,您即可開始編寫程式碼。

在 Node.JS 中合併 PDF 的逐步指南

第一步:安裝 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);
}

如果操作成功,異步調用會返回合併文檔的路徑。

完整的 PDF 合併實作範例(Node.JS)

以下程式碼示範了從配置到結果處理的完整工作流程。

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 - FileInfo 物件的陣列,用於定義來源 PDF 及其順序。

您還可以設置其他屬性,例如 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 repository 上取得。若需協助,請造訪 support forum。

進一步閱讀