Конвертування 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 for 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. Пам’ятайте про необхідність отримання належної ліцензії для використання у продакшн‑середовищі; деталі ціноутворення доступні на сторінці продукту, а тимчасову ліцензію можна отримати зі сторінки тимчасової ліцензії для оцінки.

FAQs

  • Як конвертація PDF у DOCX у Node.JS обробляє складні макети?
    SDK за замовчуванням намагається зберегти оригінальне форматування. Ви можете переключити preserveOriginalFormatting у DocxConvertOptions, щоб обміняти точність на швидкість. Дивіться API reference для всіх параметрів.

  • Які обмеження щодо розміру файлу для конвертації PDF у DOCX?
    Хмарний сервіс приймає файли розміром до 200 МБ для безкоштовних акаунтів; для більших файлів потрібен оновлений план. Завантаження передаються у потоковому режимі, тому використання пам’яті на вашому сервері залишається низьким.

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

  • Чи є спосіб протестувати конвертацію локально без платної ліцензії?
    Так, ви можете запросити тимчасову оцінювальну ліцензію на сторінці сторінка тимчасової ліцензії. Це забезпечує повну функціональність для розробки та тестування.

Читати далі