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