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

Полный пример кода: сравнение Word‑документов в Node.JS

Следующий пример демонстрирует полный сквозной рабочий процесс сравнения двух документов Word с использованием GroupDocs.Comparison Cloud SDK for Node.js.

const GroupDocsComparisonCloud = require("@groupdocs/comparison-cloud");
const fs = require("fs");
const path = require("path");

// ==== Authentication =========================================================
const clientId = "YOUR_CLIENT_ID";
const clientSecret = "YOUR_CLIENT_SECRET";

const config = new GroupDocsComparisonCloud.Configuration(clientId, clientSecret);
const compareApi = new GroupDocsComparisonCloud.CompareApi(config);
const storageApi = new GroupDocsComparisonCloud.StorageApi(config);

// ==== File definitions =======================================================
const sourceFileName = "document1.docx";
const targetFileName = "document2.docx";
const resultFileName = "comparison_result.docx";

const sourceFilePath = path.resolve(__dirname, sourceFileName);
const targetFilePath = path.resolve(__dirname, targetFileName);

// ==== Main async function ====================================================
(async () => {
    try {
        // ---- Upload source document -----------------------------------------
        const sourceData = fs.readFileSync(sourceFilePath);
        const uploadSourceReq = new GroupDocsComparisonCloud.UploadFileRequest({
            path: sourceFileName,
            file: sourceData
        });
        await storageApi.uploadFile(uploadSourceReq);

// ---- Upload target document -----------------------------------------
        const targetData = fs.readFileSync(targetFilePath);
        const uploadTargetReq = new GroupDocsComparisonCloud.UploadFileRequest({
            path: targetFileName,
            file: targetData
        });
        await storageApi.uploadFile(uploadTargetReq);

// ---- Prepare comparison options --------------------------------------
        const compareOptions = new GroupDocsComparisonCloud.CompareOptions({
            sourceFile: new GroupDocsComparisonCloud.FileInfo({ filePath: sourceFileName }),
            targetFiles: [new GroupDocsComparisonCloud.FileInfo({ filePath: targetFileName })],
            outputPath: resultFileName,
            // optional: you can set settings like generateSummaryPage, showDeletedContent, etc.
        });

const compareRequest = new GroupDocsComparisonCloud.CompareDocumentRequest({
            compareOptions: compareOptions
        });

// ---- Execute comparison -----------------------------------------------
        const compareResult = await compareApi.compareDocument(compareRequest);
        console.log("Comparison completed. Result stored at:", compareResult.path);

// ---- (Optional) Clean up uploaded files --------------------------------
        await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: sourceFileName }));
        await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: targetFileName }));
        // Note: result file remains in storage; you can download it if needed.
    } catch (error) {
        console.error("Error during comparison:", error);
    }
})();

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

Выполнить сравнение документов с помощью 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"
  1. Загрузите исходный файл DOCX
curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/document1.docx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/octet-stream" \
     --data-binary "@path/to/document1.docx"
  1. Загрузите целевой файл DOCX
curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/document2.docx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/octet-stream" \
     --data-binary "@path/to/document2.docx"
  1. Выполнить операцию сравнения
curl -X POST "https://api.groupdocs.cloud/v2.0/comparison/compare" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "sourceFile": { "filePath": "document1.docx" },
           "targetFiles": [{ "filePath": "document2.docx" }],
           "outputPath": "comparison_result.docx"
         }'
  1. Скачать полученный файл сравнения
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/comparison_result.docx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o comparison_result.docx

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

Понимание сравнения Word документов в Node.JS коде

Ниже представлен пошаговый разбор полного примера:

  1. Импорт SDK и модулей Node.js
const GroupDocsComparisonCloud = require("@groupdocs/comparison-cloud");
const fs = require("fs");
const path = require("path");

Пространство имен GroupDocsComparisonCloud предоставляет доступ ко всем классам API.

  1. Создайте конфигурацию с учетными данными клиента
const config = new GroupDocsComparisonCloud.Configuration(clientId, clientSecret);

Этот объект аутентифицирует каждый последующий вызов API.

  1. Создание экземпляров CompareApi и StorageApi
const compareApi = new GroupDocsComparisonCloud.CompareApi(config);
const storageApi = new GroupDocsComparisonCloud.StorageApi(config);

CompareApi отвечает за сравнение, а StorageApi управляет загрузкой и удалением файлов. См. Справочник API для подробностей о методах.

  1. Загрузить исходный и целевой файлы DOCX
const uploadSourceReq = new GroupDocsComparisonCloud.UploadFileRequest({
    path: sourceFileName,
    file: sourceData
});
await storageApi.uploadFile(uploadSourceReq);

Та же схема повторяется для целевого файла.

  1. Настройте CompareOptions и запустите сравнение
const compareOptions = new GroupDocsComparisonCloud.CompareOptions({
    sourceFile: new GroupDocsComparisonCloud.FileInfo({ filePath: sourceFileName }),
    targetFiles: [new GroupDocsComparisonCloud.FileInfo({ filePath: targetFileName })],
    outputPath: resultFileName,
});
const compareRequest = new GroupDocsComparisonCloud.CompareDocumentRequest({
    compareOptions: compareOptions
});
const compareResult = await compareApi.compareDocument(compareRequest);

CompareOptions позволяет точно настроить операцию (например, создать страницу‑резюме). Объект результата содержит путь к сгенерированному документу сравнения.

  1. Очистка временных файлов (необязательно)
await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: sourceFileName }));
await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: targetFileName }));

Удаление загруженных оригиналов поддерживает порядок в хранилище.

Требования и настройка для GroupDocs.Comparison

  1. Версия Node.js - Убедитесь, что вы используете Node 14 или новее.
  2. Получить учетные данные клиента - Зарегистрируйтесь в портале GroupDocs Cloud, чтобы получить clientId и clientSecret.
  3. Установить SDK
npm install groupdocs-comparison-cloud
  1. (Необязательно) Скачать пример проекта - Вы можете клонировать репозиторий со страницы GitHub.
  2. Настройте вашу среду - Установите учетные данные как переменные окружения или замените заполнители в коде.

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

Лучшие практики эффективного сравнения документов Word

  • Проверка входных файлов - Проверьте размер и формат файла перед загрузкой, чтобы избежать лишних вызовов API.
  • Повторное использование сеансов хранилища - Загружайте файлы один раз и повторно используйте их пути для нескольких сравнений, чтобы снизить задержку.
  • Включайте страницу сводки только при необходимости - Генерация страницы сводки добавляет время обработки; отключайте её для простых проверок различий.
  • Обрабатывайте большие документы асинхронно - Для файлов DOCX размером более 10 МБ рассмотрите опрос статуса задания вместо синхронного ожидания.
  • Защита учетных данных - Храните clientId и clientSecret в переменных окружения или менеджере секретов; никогда не встраивайте их в код.

Заключение

Сравнение Word‑документов в Node.JS становится простым с помощью GroupDocs.Comparison Cloud SDK for Node.js. Следуя инструкциям по установке, используя предоставленный пример кода и при желании используя REST API с cURL, вы можете интегрировать надёжное сравнение документов в любой бэкенд‑сервис. Не забудьте защитить свои учётные данные, удалить временные файлы и настроить параметры сравнения для повышения производительности. Для продакшн‑развёртываний потребуется лицензированная версия; детали ценообразования доступны на странице продукта, а временную лицензию для оценки можно получить со temporary license page. Начните экспериментировать уже сегодня и добавьте надёжные возможности дифференциации документов в свои приложения Node.js.

FAQs

  • Как сравнить документы Word в Node.JS без написания кода?
    Вы можете использовать ту же операцию через REST‑запросы. Примеры cURL в этой статье показывают точную последовательность: аутентификация, загрузка файлов, вызов конечной точки сравнения и загрузка результата.

  • Какие форматы файлов поддерживаются для сравнения?
    SDK поддерживает DOCX, DOC, ODT, RTF, и TXT среди прочих. Имена форматов нечувствительны к регистру, но они задокументированы в верхнем регистре (например, DOCX) в справке API.

  • Могу ли я сравнить более двух документов одновременно?
    Да. Массив targetFiles в CompareOptions может содержать несколько объектов FileInfo, что позволяет сравнить исходный файл с несколькими целевыми в одном запросе.

  • Есть ли способ настроить визуальный стиль результата сравнения?
    SDK предоставляет настройки, такие как showDeletedContent, showInsertedContent и generateSummaryPage. Измените эти свойства в CompareOptions, чтобы контролировать, как выделяются изменения. Обратитесь к официальной документации для полного списка параметров.

Читать далее