以编程方式比较 Word 文件是后端服务的常见需求,这些服务需要检测更改、生成修订报告或强制执行文档策略。GroupDocs.Comparison Cloud SDK for Node.js 提供了强大的 API,简化了 Node.js 应用程序的此类任务。在本指南中,您将学习如何设置 SDK、对两个 DOCX 文件进行完整比较、使用等效的 cURL 命令、了解实现的每个部分,并遵循最佳实践建议,以保持解决方案的可靠性和安全性。

完整代码示例:在 Node.JS 中比较 Word 文档

以下示例演示了使用 GroupDocs.Comparison Cloud SDK for Node.js 对两个 Word 文档进行比较的完整端到端工作流。

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 文档。

理解 Node.JS 中比较 Word 文档的代码

以下是完整示例的逐步分解:

  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 调用。
  • 重用存储会话 - 文件只上传一次,并在多个比较中复用其路径,以降低延迟。
  • 仅在需要时启用摘要页 - 生成摘要页会增加处理时间;对简单差异检查请禁用它。
  • 异步处理大文档 - 对大于 10 MB 的 DOCX 文件,考虑轮询作业状态,而不是同步等待。
  • 保护凭证 - 将 clientId 和 clientSecret 存储在环境变量或密钥管理器中;切勿硬编码它们。

结论

在 Node.JS 中比较 Word 文档变得简单,只需使用 GroupDocs.Comparison Cloud SDK for Node.js。按照安装步骤,使用提供的代码示例,并可选地通过 cURL 利用 REST API,您即可将强大的文档比较功能集成到任何后端服务中。请记得保护您的凭据,清理临时文件,并针对性能调优比较选项。对于生产部署,您需要获得授权版本;定价详情请参阅产品页面,您还可以从 临时许可证页面 获取用于评估的临时许可证。立即开始实验,将可靠的文档差异比较功能带入您的 Node.js 应用程序。

常见问题

  • 如何在 Node.JS 中比较 Word 文档而无需编写代码?
    您可以通过 REST 调用使用相同的操作。本文中的 cURL 示例展示了完整的顺序:身份验证、上传文件、调用比较端点并下载结果。

  • 支持哪些文件格式进行比较?
    SDK 支持 DOCX、DOC、ODT、RTF、以及 TXT 等等。所有格式名称不区分大小写,但在 API reference 中以大写形式记录(例如 DOCX)。

  • 我可以一次比较超过两个文档吗?
    是的。CompareOptions 中的 targetFiles 数组可以包含多个 FileInfo 对象,允许您在单个请求中将源文件与多个目标文件进行比较。

  • 是否有办法自定义比较结果的视觉样式?
    SDK 提供了诸如 showDeletedContent、showInsertedContent 和 generateSummaryPage 等设置。调整 CompareOptions 中的这些属性,以控制更改的高亮方式。请参阅官方文档获取完整的选项列表。

阅读更多