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

Требования и настройка

Прежде чем начать, убедитесь, что у вас есть следующее:

  • Node.js 14 или более поздней версии, установленный на вашей машине разработки.
  • Активный аккаунт GroupDocs.Conversion Cloud (вы можете зарегистрироваться для бесплатного пробного периода на странице продукта).
  • Ваш Client ID и Client Secret из панели управления GroupDocs Cloud.
  • Подключение к Интернету для вызова облачного REST API.

Установите SDK через npm:

npm install groupdocs-conversion-cloud

Скачайте последнюю версию пакета и просмотрите исходный код на GitHub, если вам нужно изучить код:

Скачать GroupDocs.Conversion Cloud SDK for Node.js

После установки SDK и подготовки учетных данных вы можете перейти к реализации.

Преобразование HTML в DOCX в Node.JS: пошаговое руководство

Ниже представлен краткий пошаговый обзор, показывающий каждый логический шаг. Полный исходный код будет предоставлен позже.

Шаг 1: Инициализировать клиент Conversion API

Создайте экземпляр ConversionApi и настройте аутентификацию.

const { ConversionApi, Configuration } = require('groupdocs-conversion-cloud');

const config = new Configuration({
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET'
});

const conversionApi = new ConversionApi(config);

Шаг 2: Загрузите исходный HTML‑файл

Загрузите HTML‑файл, который вы хотите конвертировать. API возвращает идентификатор файла, который вы будете использовать для конвертации.

const fs = require('fs');
const path = require('path');

const htmlPath = path.resolve(__dirname, 'sample.html');
const fileBytes = fs.readFileSync(htmlPath);

const uploadResponse = await conversionApi.uploadFile({
    file: fileBytes,
    fileName: 'sample.html'
});
const sourceFileId = uploadResponse.id;

Шаг 3: Установите параметры конвертации

Настройте любые параметры, специфичные для DOCX, такие как встраивание шрифтов или установка полей страницы. Этот шаг демонстрирует настройку Генерация DOCX из HTML.

const convertSettings = {
    outputFormat: 'DOCX',
    options: {
        embedFonts: true,
        pageSize: 'A4',
        marginTop: 20,
        marginBottom: 20,
        marginLeft: 15,
        marginRight: 15
    }
};

Шаг 4: Выполнить преобразование

Вызовите метод convert с идентификатором исходного файла и настройками, определенными выше.

const convertResponse = await conversionApi.convert({
    fileId: sourceFileId,
    convertSettings: convertSettings
});
const docxFileId = convertResponse.id;

Шаг 5: Скачайте полученный DOCX

Получите сгенерированный файл DOCX и сохраните его локально.

const docxData = await conversionApi.downloadFile({ fileId: docxFileId });
fs.writeFileSync(path.resolve(__dirname, 'output.docx'), docxData);
console.log('DOCX file saved as output.docx');

Приведённые выше шаги иллюстрируют полный конвертирование HTML в DOCX в Node.JS рабочий процесс с использованием GroupDocs.Conversion Cloud SDK.

Полный пример кода: генерация DOCX из HTML‑контента

Следующая программа собирает все части вместе в один исполняемый скрипт.

// Full working example for HTML to DOCX conversion using GroupDocs.Conversion Cloud SDK for Node.js

const { ConversionApi, Configuration } = require('groupdocs-conversion-cloud');
const fs = require('fs');
const path = require('path');

async function convertHtmlToDocx() {
    // 1. Configure the API client
    const config = new Configuration({
        clientId: 'YOUR_CLIENT_ID',
        clientSecret: 'YOUR_CLIENT_SECRET'
    });
    const conversionApi = new ConversionApi(config);

// 2. Read the HTML file
    const htmlPath = path.resolve(__dirname, 'sample.html');
    const htmlBytes = fs.readFileSync(htmlPath);

// 3. Upload the HTML file
    const uploadResult = await conversionApi.uploadFile({
        file: htmlBytes,
        fileName: 'sample.html'
    });
    const sourceFileId = uploadResult.id;

// 4. Define conversion settings
    const convertSettings = {
        outputFormat: 'DOCX',
        options: {
            embedFonts: true,
            pageSize: 'A4',
            marginTop: 20,
            marginBottom: 20,
            marginLeft: 15,
            marginRight: 15
        }
    };

// 5. Perform the conversion
    const convertResult = await conversionApi.convert({
        fileId: sourceFileId,
        convertSettings: convertSettings
    });
    const docxFileId = convertResult.id;

// 6. Download the DOCX file
    const docxBytes = await conversionApi.downloadFile({ fileId: docxFileId });
    const outputPath = path.resolve(__dirname, 'output.docx');
    fs.writeFileSync(outputPath, docxBytes);
    console.log(`Conversion successful. DOCX saved to ${outputPath}`);
}

// Execute the conversion
convertHtmlToDocx().catch(err => {
    console.error('Conversion failed:', err);
});

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

Выполнение конвертации с помощью cURL и REST API

Если вы предпочитаете работать напрямую с HTTP, следующие команды cURL выполняют то же преобразование.

  1. Получить токен доступа

Замените YOUR_CLIENT_ID и 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"

Ответ содержит access_token.

  1. Загрузите HTML‑файл
curl -X POST "https://api.groupdocs.cloud/v2.0/storage/files/sample.html" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "file=@sample.html"
  1. Начать конверсию
curl -X POST "https://api.groupdocs.cloud/v2.0/conversion/convert" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "sourceFilePath": "sample.html",
           "outputFilePath": "output.docx",
           "outputFormat": "DOCX",
           "options": {
               "embedFonts": true,
               "pageSize": "A4"
           }
         }'
  1. Скачать преобразованный DOCX
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/files/output.docx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.docx

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

Настройка параметров конвертации HTML‑контента в DOCX

SDK предоставляет несколько свойств, позволяющих точно настроить вывод:

  • embedFonts - Встраивает все используемые шрифты в DOCX, обеспечивая визуальную точность.
  • pageSize - Устанавливает размер страницы (A4, Letter и т.д.).
  • marginTop / marginBottom / marginLeft / marginRight - Регулирует поля страницы в пунктах.

Пример применения этих параметров:

const convertSettings = {
    outputFormat: 'DOCX',
    options: {
        embedFonts: true,
        pageSize: 'Letter',
        marginTop: 30,
        marginBottom: 30,
        marginLeft: 20,
        marginRight: 20
    }
};

Обратитесь к классу ConversionOptions для полного списка.

Соображения по производительности при конвертации HTML‑контента в DOCX

При конвертации больших или сложных HTML‑документов учитывайте следующие рекомендации:

  1. Повторное использование клиента API - Создание нового экземпляра ConversionApi для каждого файла добавляет накладные расходы.
  2. Потоковая передача больших HTML‑файлов - Вместо загрузки всего файла в память используйте потоки (fs.createReadStream) и метод SDK uploadFileStream.
  3. Ограничение встроенных ресурсов - Удалите ненужные изображения или скрипты из HTML перед загрузкой, чтобы сократить время обработки.
  4. Пакетные конвертации - Обрабатывайте файлы последовательно в цикле, но учитывайте ограничения скорости API, чтобы избежать throttling.

Применение этих практик помогает поддерживать низкую задержку и умеренное потребление памяти.

Заключение

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

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

Как начать конвертацию HTML в DOCX в Node.JS?

Используйте SDK для создания клиента ConversionApi, загрузите ваш HTML‑файл, задайте необходимые параметры конвертации и вызовите метод convert. Процесс полностью асинхронный и возвращает идентификатор файла DOCX для загрузки.

Какие параметры я могу настроить для генерации DOCX из HTML?

ConversionOptions объект позволяет встраивать шрифты, выбирать размер страницы, задавать поля и управлять обработкой изображений. См. справка API для всех доступных настроек.

Могу ли я конвертировать HTML, содержащий внешние CSS или изображения?

Да. Загрузите все связанные ресурсы (CSS, изображения) в ту же папку хранилища перед началом конвертации, и SDK разрешит ссылки во время обработки.

Нужна ли лицензия для развертываний в продакшн?

Для продакшн‑окружения требуется действующая лицензия. Вы можете получить временную лицензию для тестирования со страницы временной лицензии и приобрести полную подписку, когда будете готовы к запуску.

Read More