開發人員常常需要將大型 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);
    }
})();

注意: 此代碼示例演示了核心功能。在將其用於您的項目之前,請確保更新所有文件路徑和配置值以匹配實際環境,驗證所有必需的依賴項已正確安裝,並在開發環境中徹底測試。如果遇到任何問題,請參閱官方文檔或聯繫支援團隊尋求協助。

使用 cURL 的 REST API 拆分 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 reference 以獲取更多選項。

調整這些值可讓您控制每個生成的 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 功能嗎?
    生產環境使用需要商業授權。請訪問產品頁面了解價格,並從臨時授權頁面獲取臨時授權以進行評估。

閱讀更多