การเปรียบเทียบไฟล์ Word ด้วยโปรแกรมเป็นความต้องการที่พบบ่อยสำหรับบริการแบ็กเอนด์ที่ต้องตรวจจับการเปลี่ยนแปลง, สร้างรายงานการแก้ไข, หรือบังคับใช้นโยบายเอกสาร. GroupDocs.Comparison Cloud SDK for Node.js ให้ API ที่ทรงพลังซึ่งทำให้ภารกิจนี้ง่ายขึ้นสำหรับแอปพลิเคชัน Node.js. ในคู่มือนี้คุณจะได้เรียนรู้วิธีตั้งค่า SDK, รันการเปรียบเทียบอย่างสมบูรณ์ของไฟล์สองไฟล์ DOCX, ใช้คำสั่ง cURL ที่เทียบเท่า, เข้าใจแต่ละส่วนของการดำเนินการ, และปฏิบัติตามคำแนะนำแนวปฏิบัติที่ดีที่สุดเพื่อให้โซลูชันของคุณมีความน่าเชื่อถือและปลอดภัย.

ตัวอย่างโค้ดเต็ม: เปรียบเทียบเอกสาร Word ใน Node.JS

ตัวอย่างต่อไปนี้แสดงการทำงานแบบ end‑to‑end อย่างเต็มรูปแบบสำหรับการเปรียบเทียบเอกสาร 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

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ payload ของคำขอและรูปแบบการตอบกลับ, ดูที่ เอกสาร 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 version - ตรวจสอบว่าคุณกำลังใช้ Node 14 หรือใหม่กว่า.
  2. Obtain client credentials - ลงทะเบียนที่พอร์ทัล GroupDocs Cloud เพื่อรับ clientId และ clientSecret.
  3. Install the SDK - ติดตั้ง SDK
npm install groupdocs-comparison-cloud
  1. (Optional) ดาวน์โหลดโครงการตัวอย่าง - คุณสามารถโคลนรีโพซิทอรีจาก GitHub page.
  2. กำหนดค่าสภาพแวดล้อมของคุณ - ตั้งค่าข้อมูลประจำตัวเป็นตัวแปรสภาพแวดล้อมหรือแทนที่ตัวแปรตำแหน่งในโค้ด.

สำหรับรายการเต็มของไบนารีที่สามารถดาวน์โหลดได้, ดูที่ หน้า ดาวน์โหลด.

แนวทางปฏิบัติที่ดีที่สุดสำหรับการเปรียบเทียบเอกสาร Word อย่างมีประสิทธิภาพ

  • ตรวจสอบไฟล์อินพุต - ตรวจสอบขนาดไฟล์และรูปแบบก่อนอัปโหลดเพื่อหลีกเลี่ยงการเรียก API ที่ไม่จำเป็น.
  • ใช้เซสชันการจัดเก็บซ้ำ - อัปโหลดไฟล์เพียงครั้งเดียวและใช้เส้นทางของไฟล์เหล่านั้นซ้ำสำหรับการเปรียบเทียบหลายครั้งเพื่อ ลดความหน่วง.
  • เปิดใช้งานหน้าสรุปเฉพาะเมื่อจำเป็น - การสร้างหน้าสรุปจะเพิ่มเวลาในการประมวลผล; ปิดการใช้งานสำหรับการตรวจสอบ diff อย่างง่าย.
  • จัดการเอกสารขนาดใหญ่แบบอะซิงโครนัส - สำหรับไฟล์ DOCX ที่ใหญ่กว่า 10 MB, ควรพิจารณาโพลสถานะงานแทนการรอแบบซิงโครนัส.
  • รักษาความปลอดภัยของข้อมูลประจำตัว - เก็บ clientId และ clientSecret ในตัวแปรสภาพแวดล้อมหรือผู้จัดการความลับ; อย่าเขียนค่าตรงในโค้ด.

สรุป

การเปรียบเทียบเอกสาร Word ใน Node.JS กลายเป็นเรื่องง่ายด้วย GroupDocs.Comparison Cloud SDK for Node.js. โดยทำตามขั้นตอนการติดตั้ง, ใช้ตัวอย่างโค้ดที่ให้มา, และอาจใช้ REST API กับ cURL, คุณสามารถรวมการเปรียบเทียบเอกสารที่แข็งแกร่งเข้าไปในบริการแบ็กเอนด์ใด ๆ ได้ จำเป็นต้องรักษาความปลอดภัยของข้อมูลรับรอง, ทำความสะอาดไฟล์ชั่วคราว, และปรับแต่งตัวเลือกการเปรียบเทียบเพื่อประสิทธิภาพ สำหรับการใช้งานในสภาพแวดล้อมการผลิตคุณจะต้องใช้เวอร์ชันที่มีลิขสิทธิ์; รายละเอียดราคาอยู่บนหน้าผลิตภัณฑ์, และคุณสามารถรับลิขสิทธิ์ชั่วคราวสำหรับการประเมินจาก หน้าลิขสิทธิ์ชั่วคราว. เริ่มทดลองวันนี้และนำความสามารถในการเปรียบเทียบเอกสารที่เชื่อถือได้ไปใช้ในแอปพลิเคชัน Node.js ของคุณ.

คำถามที่พบบ่อย

  • ฉันจะเปรียบเทียบเอกสาร Word ใน Node.JS โดยไม่ต้องเขียนโค้ดได้อย่างไร?
    คุณสามารถใช้การดำเนินการเดียวกันผ่านการเรียก REST ได้ ตัวอย่าง cURL ในบทความนี้แสดงลำดับขั้นตอนที่แน่นอน: การรับรองความถูกต้อง, การอัปโหลดไฟล์, การเรียก endpoint เปรียบเทียบ, และการดาวน์โหลดผลลัพธ์.

  • ไฟล์ฟอร์แมตใดบ้างที่รองรับสำหรับการเปรียบเทียบ?
    SDK รองรับ DOCX, DOC, ODT, RTF, และ TXT เป็นต้น ชื่อฟอร์แมตทั้งหมดไม่สนใจตัวพิมพ์ใหญ่‑เล็ก แต่จะถูกระบุเป็นตัวพิมพ์ใหญ่ในเอกสารอ้างอิง API (เช่น DOCX) ใน API reference.

  • ฉันสามารถเปรียบเทียบเอกสารมากกว่าสองฉบับพร้อมกันได้หรือไม่?
    ใช่. targetFiles array ใน CompareOptions สามารถมีหลาย FileInfo objects, ทำให้คุณสามารถเปรียบเทียบไฟล์ต้นฉบับกับหลายเป้าหมายในคำขอเดียวได้.

  • มีวิธีใดบ้างที่จะปรับแต่งสไตล์การแสดงผลของผลลัพธ์การเปรียบเทียบ?
    SDK มีการตั้งค่าต่าง ๆ เช่น showDeletedContent, showInsertedContent และ generateSummaryPage ปรับคุณสมบัติเหล่านี้ใน CompareOptions เพื่อควบคุมวิธีที่การเปลี่ยนแปลงถูกไฮไลท์. ดูที่ เอกสารอย่างเป็นทางการ สำหรับรายการตัวเลือกทั้งหมด.

อ่านเพิ่มเติม