Преобразование файлов 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.
- Аутентификация и получение токена доступа
Замените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, который вы будете использовать в последующих вызовах.
- Загрузите исходный 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
- Выполнить конвертацию
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.
- Скачать преобразованный 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
Ниже приведено краткое руководство по ключевым частям асинхронного примера кода.
- Импорт и настройка клиента
const GroupDocsConversionCloud = require('groupdocs-conversion-cloud');
const apiInstance = new GroupDocsConversionCloud.ConversionApi();
Класс ConversionApi (API reference) является точкой входа для всех операций конвертации.
- Установите учетные данные аутентификации
apiInstance.apiClient.authentications['JWT'].clientId = CLIENT_ID;
apiInstance.apiClient.authentications['JWT'].clientSecret = CLIENT_SECRET;
JWT‑аутентификация защищает каждый запрос к облачному сервису.
- Подготовьте информацию о входном файле
const inputFileInfo = new GroupDocsConversionCloud.FileInfo();
inputFileInfo.filePath = path.normalize('input.pdf');
FileInfo сообщает API, где находится исходный PDF в хранилище GroupDocs Cloud.
- Настройте параметры, специфичные для DOCX
const docxOptions = new GroupDocsConversionCloud.DocxConvertOptions();
docxOptions.preserveOriginalFormatting = true;
DocxConvertOptions позволяет сохранять оригинальное форматирование и при необходимости обрабатывать пароли.
- Создайте и отправьте запрос на конвертацию
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
- Установите пакет
npm install groupdocs-conversion-cloud
Пакет доступен в публичном реестре npm. См. страницу загрузки страница загрузки для получения сведений о версии.
Требования
- Node.js 12 или выше.
- Учетная запись GroupDocs Cloud с client ID и client secret.
Инициализировать 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 и выполнять конвертации параллельно, учитывая ограничения параллельности вашего аккаунта.Есть ли способ протестировать конвертацию локально без платной лицензии?
Да, вы можете запросить временную оценочную лицензию на странице временной лицензии. Это предоставляет полный функционал для разработки и тестирования.
