Сравнение файлов 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.
- Аутентифицируйтесь и получите токен доступа
Замените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"
- Загрузите исходный файл 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"
- Загрузите целевой файл 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"
- Выполнить операцию сравнения
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"
}'
- Скачать полученный файл сравнения
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 коде
Ниже представлен пошаговый разбор полного примера:
- Импорт SDK и модулей Node.js
const GroupDocsComparisonCloud = require("@groupdocs/comparison-cloud");
const fs = require("fs");
const path = require("path");
Пространство имен GroupDocsComparisonCloud предоставляет доступ ко всем классам API.
- Создайте конфигурацию с учетными данными клиента
const config = new GroupDocsComparisonCloud.Configuration(clientId, clientSecret);
Этот объект аутентифицирует каждый последующий вызов API.
- Создание экземпляров CompareApi и StorageApi
const compareApi = new GroupDocsComparisonCloud.CompareApi(config);
const storageApi = new GroupDocsComparisonCloud.StorageApi(config);
CompareApi отвечает за сравнение, а StorageApi управляет загрузкой и удалением файлов. См. Справочник API для подробностей о методах.
- Загрузить исходный и целевой файлы DOCX
const uploadSourceReq = new GroupDocsComparisonCloud.UploadFileRequest({
path: sourceFileName,
file: sourceData
});
await storageApi.uploadFile(uploadSourceReq);
Та же схема повторяется для целевого файла.
- Настройте 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 позволяет точно настроить операцию (например, создать страницу‑резюме). Объект результата содержит путь к сгенерированному документу сравнения.
- Очистка временных файлов (необязательно)
await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: sourceFileName }));
await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: targetFileName }));
Удаление загруженных оригиналов поддерживает порядок в хранилище.
Требования и настройка для GroupDocs.Comparison
- Версия Node.js - Убедитесь, что вы используете Node 14 или новее.
- Получить учетные данные клиента - Зарегистрируйтесь в портале GroupDocs Cloud, чтобы получить
clientIdиclientSecret. - Установить SDK
npm install groupdocs-comparison-cloud
- (Необязательно) Скачать пример проекта - Вы можете клонировать репозиторий со страницы GitHub.
- Настройте вашу среду - Установите учетные данные как переменные окружения или замените заполнители в коде.
Для полного списка загружаемых бинарных файлов см. страницу загрузки.
Лучшие практики эффективного сравнения документов 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, чтобы контролировать, как выделяются изменения. Обратитесь к официальной документации для полного списка параметров.
