以程式方式比較 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 page 克隆儲存庫。
  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 參考 中以大寫形式記錄(例如 DOCX)。

  • 我可以一次比較多於兩個文件嗎?
    是的。CompareOptions 中的 targetFiles 陣列可以包含多個 FileInfo 物件,允許您在單個請求中將來源文件與多個目標文件進行比較。

  • 是否有方法自訂比較結果的視覺樣式?
    SDK 提供如 showDeletedContent、showInsertedContent 與 generateSummaryPage 等設定。調整 CompareOptions 中的這些屬性即可控制變更的突顯方式。請參閱官方文件以獲取完整的選項清單。

閱讀更多