Преобразование файлов PDF в формат DOCX часто требуется при создании приложений, ориентированных на работу с документами, особенно когда нужен редактируемый вывод Word. GroupDocs.Conversion Cloud SDK for Node.js предоставляет надёжный API, который делает эту задачу простой и масштабируемой. В этом руководстве вы увидите полный асинхронный пример кода, узнаете, как достичь того же результата с помощью вызовов cURL REST, настроите SDK и примените рекомендации лучших практик для надёжных конвертаций.

Полный пример кода: Асинхронное преобразование PDF в DOCX в Node.JS

Этот пример демонстрирует, как выполнить асинхронное преобразование PDF в DOCX с использованием GroupDocs.Conversion Cloud SDK for Node.js.

// PDF to DOCX conversion using GroupDocs.Conversion Cloud SDK for Node.js

const GroupDocsConversionCloud = require('groupdocs-conversion-cloud');
const path = require('path');

// -------------------- Configuration --------------------
const CLIENT_ID = process.env.GROUPDOCS_CLIENT_ID || 'YOUR_CLIENT_ID';
const CLIENT_SECRET = process.env.GROUPDOCS_CLIENT_SECRET || 'YOUR_CLIENT_SECRET';

// Initialize API client
const apiInstance = new GroupDocsConversionCloud.ConversionApi();
apiInstance.apiClient = new GroupDocsConversionCloud.ApiClient();
apiInstance.apiClient.basePath = 'https://api.groupdocs.cloud';
apiInstance.apiClient.authentications['JWT'].clientId = CLIENT_ID;
apiInstance.apiClient.authentications['JWT'].clientSecret = CLIENT_SECRET;

// -------------------- Conversion Logic --------------------
async function convertPdfToDocx() {
    try {
        // Input file information (must already be uploaded to GroupDocs Cloud storage)
        const inputFileInfo = new GroupDocsConversionCloud.FileInfo();
        inputFileInfo.filePath = path.normalize('input.pdf'); // generic path in cloud storage

// DOCX specific conversion options (optional, shown for demonstration)
        const docxOptions = new GroupDocsConversionCloud.DocxConvertOptions();
        docxOptions.preserveOriginalFormatting = true; // keep original PDF layout as much as possible
        docxOptions.password = null; // if PDF is password protected, set it here

// Build conversion request
        const convertRequest = new GroupDocsConversionCloud.ConvertDocumentRequest();
        convertRequest.format = 'docx';
        convertRequest.fileInfo = inputFileInfo;
        convertRequest.outputPath = path.normalize('output.docx'); // result will be stored in cloud storage
        convertRequest.options = docxOptions; // attach format‑specific options

// Perform conversion (async)
        const conversionResult = await apiInstance.convertDocument(convertRequest);

// conversionResult contains the path of the generated file and other metadata
        console.log('Conversion succeeded.');
        console.log('Output file path:', conversionResult.path);
        console.log('File size (bytes):', conversionResult.size);
    } catch (error) {
        // Detailed error handling
        if (error.response && error.response.body) {
            console.error('API error:', error.response.body);
        } else {
            console.error('Unexpected error:', error.message);
        }
    }
}

// -------------------- Execution --------------------
(async () => {
    // Optional: set a timeout to avoid hanging indefinitely
    const timeoutMs = 300000; // 5 minutes
    const timeout = setTimeout(() => {
        console.error('Conversion timed out after', timeoutMs / 1000, 'seconds');
        process.exit(1);
    }, timeoutMs);

await convertPdfToDocx();

clearTimeout(timeout);
    // Graceful shutdown
    process.exit(0);
})();

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

Конвертировать документы с помощью cURL и REST API

Вы можете выполнить ту же конвертацию PDF в DOCX без написания кода, вызывая REST‑конечные точки GroupDocs.Conversion Cloud напрямую. Ниже приведены шаги, показывающие, как получить токен доступа, загрузить PDF, запустить конвертацию и скачать полученный файл DOCX.

  1. Аутентификация и получение токена доступа
    Замените YOUR_CLIENT_ID и YOUR_CLIENT_SECRET на свои учетные данные.
curl -X POST "https://api.groupdocs.cloud/v1.0/oauth2/token" \
     -H "Content-Type: application/json" \
     -d '{
           "grant_type":"client_credentials",
           "client_id":"YOUR_CLIENT_ID",
           "client_secret":"YOUR_CLIENT_SECRET"
         }'

Ответ содержит access_token, который вы будете использовать в последующих вызовах.

  1. Загрузите исходный PDF
curl -X PUT "https://api.groupdocs.cloud/v1.0/storage/file/input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/pdf" \
     --data-binary @./local/input.pdf
  1. Выполнить конвертацию
curl -X POST "https://api.groupdocs.cloud/v1.0/conversion/convert" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "format":"docx",
           "fileInfo":{"filePath":"input.pdf"},
           "outputPath":"output.docx",
           "options":{"preserveOriginalFormatting":true}
         }'

Ответ возвращает путь к сгенерированному файлу DOCX.

  1. Скачать преобразованный DOCX
curl -X GET "https://api.groupdocs.cloud/v1.0/storage/file/output.docx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o ./local/output.docx

Для получения более подробной информации о полезных нагрузках запросов и дополнительных параметрах см. официальную документацию API.

Разбор преобразования PDF в DOCX в Node.JS

Ниже приведено краткое руководство по ключевым частям асинхронного примера кода.

  1. Импорт и настройка клиента
const GroupDocsConversionCloud = require('groupdocs-conversion-cloud');
const apiInstance = new GroupDocsConversionCloud.ConversionApi();

Класс ConversionApi (API reference) является точкой входа для всех операций конвертации.

  1. Установите учетные данные аутентификации
apiInstance.apiClient.authentications['JWT'].clientId = CLIENT_ID;
apiInstance.apiClient.authentications['JWT'].clientSecret = CLIENT_SECRET;

JWT‑аутентификация защищает каждый запрос к облачному сервису.

  1. Подготовьте информацию о входном файле
const inputFileInfo = new GroupDocsConversionCloud.FileInfo();
inputFileInfo.filePath = path.normalize('input.pdf');

FileInfo сообщает API, где находится исходный PDF в хранилище GroupDocs Cloud.

  1. Настройте параметры, специфичные для DOCX
const docxOptions = new GroupDocsConversionCloud.DocxConvertOptions();
docxOptions.preserveOriginalFormatting = true;

DocxConvertOptions позволяет сохранять оригинальное форматирование и при необходимости обрабатывать пароли.

  1. Создайте и отправьте запрос на конвертацию
const convertRequest = new GroupDocsConversionCloud.ConvertDocumentRequest();
convertRequest.format = 'docx';
convertRequest.fileInfo = inputFileInfo;
convertRequest.outputPath = path.normalize('output.docx');
convertRequest.options = docxOptions;
const conversionResult = await apiInstance.convertDocument(convertRequest);

Метод convertDocument выполняет фактическую конвертацию и возвращает метаданные, такие как путь к выходному файлу и размер файла.

Установка и настройка GroupDocs.Conversion Cloud SDK для Node.JS

  1. Установите пакет
npm install groupdocs-conversion-cloud

Пакет доступен в публичном реестре npm. См. страницу загрузки страница загрузки для получения сведений о версии.

  1. Требования

    • Node.js 12 или выше.
    • Учетная запись GroupDocs Cloud с client ID и client secret.
  2. Инициализировать SDK в вашем проекте (выдержка из полного примера)

const GroupDocsConversionCloud = require('groupdocs-conversion-cloud');
const apiInstance = new GroupDocsConversionCloud.ConversionApi();
apiInstance.apiClient.basePath = 'https://api.groupdocs.cloud';

Отрегулируйте basePath, если вы используете региональный конечный пункт.

Лучшие практики для высокопроизводительного преобразования документов

  • Повторное использование API‑клиента вместо создания нового экземпляра для каждой конвертации; это уменьшает нагрузку аутентификации.
  • Включите потоковую загрузку для больших PDF, чтобы избежать загрузки всего файла в память.
  • Установите разумный тайм‑аут (например, 5 минут), чтобы предотвратить зависание задач, одновременно позволяя сложным документам завершаться.
  • Сохраняйте оригинальное форматирование только при необходимости; отключение может ускорить конвертацию простых PDF, содержащих только текст.
  • Следите за лимитами использования API в панели управления вашей учётной записью GroupDocs, чтобы избежать ограничения скорости при пакетных операциях.

Заключение

GroupDocs.Conversion Cloud SDK for Node.js делает преобразование PDF в DOCX простым, независимо от того, предпочитаете ли вы полнофункциональную библиотеку или прямые REST‑запросы с cURL. Следуя асинхронному примеру кода, правильно настраивая клиент и применяя приведённые выше рекомендации по производительности, вы сможете интегрировать надёжное преобразование документов в любой сервис Node.JS. Не забудьте получить соответствующую лицензию для использования в продакшене; детали ценообразования доступны на странице продукта, а временную лицензию можно получить со страница временной лицензии для оценки.

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

  • Как конвертация PDF в DOCX в Node.JS обрабатывает сложные макеты?
    SDK пытается сохранять оригинальное форматирование по умолчанию. Вы можете переключить preserveOriginalFormatting в DocxConvertOptions, чтобы выбрать между точностью и скоростью. См. Справка API для всех параметров.

  • Каковы ограничения по размеру файлов для конвертации PDF в DOCX?
    Облачный сервис принимает файлы размером до 200 МБ для бесплатных аккаунтов; более крупные файлы требуют обновлённого плана. Загрузки передаются потоково, поэтому использование памяти на вашем сервере остаётся низким.

  • Могу ли я конвертировать несколько PDF в DOCX за один запрос?
    API обрабатывает один документ за запрос, но вы можете перебрать список файлов в Node.JS и выполнять конвертации параллельно, учитывая ограничения параллельности вашего аккаунта.

  • Есть ли способ протестировать конвертацию локально без платной лицензии?
    Да, вы можете запросить временную оценочную лицензию на странице временной лицензии. Это предоставляет полный функционал для разработки и тестирования.

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