Разработчикам часто требуется разбивать большие файлы PDF на более мелкие, удобные для работы части. С помощью GroupDocs.Merger Cloud SDK for Node.JS разбиение PDF на несколько частей становится простым, поскольку облачный сервис берёт на себя тяжёлую работу, а вы сосредотачиваетесь на логике приложения. В этом руководстве представлен полностью работающий пример, показано, как выполнить ту же задачу через cURL, и объяснены параметры конфигурации, позволяющие точно настроить операцию разбиения.

Разделить PDF на несколько PDF в Node.JS — полный пример кода

В этом примере демонстрируется, как разделить PDF на несколько PDF‑файлов с использованием GroupDocs.Merger Cloud SDK for Node.JS.

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);
    }
})();

Примечание: Этот пример кода демонстрирует основную функциональность. Прежде чем использовать его в вашем проекте, убедитесь, что обновили все пути к файлам и значения конфигурации, чтобы они соответствовали вашей реальной среде, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если вы столкнётесь с какими‑либо проблемами, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.

Разделение PDF с помощью REST API и cURL

Если вы предпочитаете чистый 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.

Как работает разбиение PDF на несколько PDF в Node.JS

Понимание процесса помогает адаптировать код к более сложным сценариям.

  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 или более новая версия.
  • Учётная запись GroupDocs Cloud с действительным App SID и App Key.
  • Доступ в интернет для вызовов API.

Установите SDK через npm и загрузите последнюю версию пакета:

npm install groupdocs-merger-cloud

Вы также можете скачать бинарные файлы напрямую со страницы загрузки.

Точная настройка параметров разбиения

Объект SplitOptions предлагает несколько свойств, которые вы можете настроить:

  • pages - Массив диапазонов страниц (например, ['1-2','3-5']). Это основная настройка, используемая в примере.
  • outputPath - Необязательная папка, в которой будут храниться разделённые файлы в облачном хранилище.
  • preserveMetadata - При значении true оригинальные метаданные документа копируются в каждую часть. См. API reference для получения дополнительных вариантов.

Настройка этих значений позволяет контролировать размер, имя и метаданные каждого результирующего PDF.

Заключение

Разделение PDF на несколько PDF в Node.JS становится простым с помощью GroupDocs.Merger Cloud SDK for Node.JS. SDK обрабатывает загрузку файлов, выбор диапазона страниц и получение результата, позволяя вам сосредоточиться на интеграции вывода в ваш рабочий процесс. Не забудьте защитить ваш App SID и App Key и подумайте о использовании коммерческой лицензии для продакшн‑развертываний. Подробности о ценах доступны на странице продукта, а временную лицензию можно получить на странице временной лицензии. С кодом, примерами cURL и советами по конфигурации в этом руководстве вы готовы реализовать надёжное разделение PDF в ваших приложениях Node.JS.

Часто задаваемые вопросы

  • Как разделить PDF на несколько PDF в Node.JS, используя пользовательские диапазоны страниц?
    Используйте свойство pages объекта SplitOptions, чтобы задать любой необходимый диапазон, например ['1-3','4-6']. SDK сгенерирует отдельный PDF для каждого диапазона.

  • Могу ли я разделить PDF без постоянного хранения его в облачном хранилище?
    Да. После загрузки исходного файла и завершения разделения вы можете удалить оригинальный файл с помощью storageApi.deleteFile, как показано в примере.

  • Нужна ли платная лицензия для использования функции split в продакшн?
    Для использования в продакшн требуется коммерческая лицензия. Посетите страницу продукта для получения информации о ценах и получите временную лицензию со страницы временной лицензии для оценки.

Читать дальше