So sánh các tệp Word bằng chương trình là một yêu cầu thường gặp cho các dịch vụ backend cần phát hiện thay đổi, tạo báo cáo phiên bản, hoặc thực thi các chính sách tài liệu. GroupDocs.Comparison Cloud SDK for Node.js cung cấp một API mạnh mẽ giúp đơn giản hóa công việc này cho các ứng dụng Node.js. Trong hướng dẫn này, bạn sẽ học cách thiết lập SDK, thực hiện so sánh đầy đủ hai tệp DOCX, sử dụng các lệnh cURL tương đương, hiểu từng phần của triển khai, và tuân theo các khuyến nghị thực hành tốt nhất để giữ cho giải pháp của bạn đáng tin cậy và an toàn.
Ví dụ mã hoàn chỉnh: So sánh tài liệu Word trong Node.JS
Ví dụ sau đây trình bày quy trình làm việc end‑to‑end đầy đủ để so sánh hai tài liệu Word bằng cách sử dụng 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);
}
})();
Lưu ý: Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật mọi đường dẫn tệp và giá trị cấu hình để phù hợp với môi trường thực tế của bạn, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển. Nếu bạn gặp bất kỳ vấn đề nào, vui lòng tham khảo tài liệu chính thức hoặc liên hệ với đội hỗ trợ để được trợ giúp.
Thực hiện so sánh tài liệu bằng cURL và REST API
Nếu bạn muốn một cách tiếp cận không phụ thuộc vào ngôn ngữ, bạn có thể đạt được kết quả tương tự bằng các yêu cầu HTTP thuần. Dưới đây là các lệnh cURL cần thiết.
- Xác thực và nhận token truy cập
Thay thếYOUR_CLIENT_IDvàYOUR_CLIENT_SECRETbằng thông tin đăng nhập của bạn.
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"
- Tải lên tệp DOCX nguồn
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"
- Tải lên tệp DOCX mục tiêu
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"
- Thực hiện thao tác so sánh
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"
}'
- Tải xuống tệp so sánh kết quả
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/comparison_result.docx" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o comparison_result.docx
Để biết thêm chi tiết về payload yêu cầu và định dạng phản hồi, xem tài liệu API chính thức.
Hiểu về việc so sánh tài liệu Word trong mã Node.JS
Dưới đây là phân tích từng bước của ví dụ hoàn chỉnh:
- Import SDK và các mô-đun Node.js
const GroupDocsComparisonCloud = require("@groupdocs/comparison-cloud");
const fs = require("fs");
const path = require("path");
Không gian tên GroupDocsComparisonCloud cho phép truy cập vào tất cả các lớp API.
- Tạo cấu hình với thông tin xác thực client
const config = new GroupDocsComparisonCloud.Configuration(clientId, clientSecret);
Đối tượng này xác thực mọi cuộc gọi API tiếp theo.
- Khởi tạo CompareApi và StorageApi
const compareApi = new GroupDocsComparisonCloud.CompareApi(config);
const storageApi = new GroupDocsComparisonCloud.StorageApi(config);
CompareApi xử lý việc so sánh, trong khi StorageApi quản lý việc tải lên và xóa tệp. Xem tài liệu tham khảo API để biết chi tiết các phương thức.
- Tải lên tệp DOCX nguồn và đích
const uploadSourceReq = new GroupDocsComparisonCloud.UploadFileRequest({
path: sourceFileName,
file: sourceData
});
await storageApi.uploadFile(uploadSourceReq);
Mẫu tương tự được lặp lại cho tệp đích.
- Cấu hình CompareOptions và chạy so sánh
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 cho phép bạn tinh chỉnh hoạt động (ví dụ, tạo trang tóm tắt). Đối tượng kết quả chứa đường dẫn tới tài liệu so sánh đã tạo.
- Xóa các tệp tạm thời (tùy chọn)
await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: sourceFileName }));
await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: targetFileName }));
Xóa các tệp gốc đã tải lên giúp lưu trữ gọn gàng.
Các yêu cầu và thiết lập cho GroupDocs.Comparison
- Phiên bản Node.js - Đảm bảo bạn đang chạy Node 14 hoặc mới hơn.
- Lấy thông tin xác thực client - Đăng ký tại cổng GroupDocs Cloud để lấy
clientIdvàclientSecret. - Cài đặt SDK
npm install groupdocs-comparison-cloud
- (Tùy chọn) Tải xuống dự án mẫu - Bạn có thể sao chép kho từ trang GitHub.
- Cấu hình môi trường của bạn - Đặt thông tin xác thực dưới dạng biến môi trường hoặc thay thế các placeholder trong mã.
Để xem danh sách đầy đủ các tệp nhị phân có thể tải xuống, hãy xem trang tải xuống.
Các thực tiễn tốt nhất để so sánh tài liệu Word hiệu quả
- Xác thực tệp đầu vào - Kiểm tra kích thước và định dạng tệp trước khi tải lên để tránh các cuộc gọi API không cần thiết.
- Tái sử dụng phiên lưu trữ - Tải tệp lên một lần và tái sử dụng đường dẫn của chúng cho nhiều so sánh để giảm độ trễ.
- Bật trang tóm tắt chỉ khi cần - Tạo trang tóm tắt làm tăng thời gian xử lý; tắt nó cho các kiểm tra diff đơn giản.
- Xử lý tài liệu lớn một cách bất đồng bộ - Đối với các tệp DOCX lớn hơn 10 MB, hãy xem xét việc truy vấn trạng thái công việc thay vì chờ đồng bộ.
- Bảo mật thông tin đăng nhập - Lưu
clientIdvàclientSecrettrong biến môi trường hoặc trình quản lý bí mật; không bao giờ mã hoá cứng chúng.
Kết luận
So sánh tài liệu Word trong Node.JS trở nên đơn giản với GroupDocs.Comparison Cloud SDK for Node.js. Bằng cách thực hiện các bước cài đặt, sử dụng ví dụ mã được cung cấp và tùy chọn tận dụng REST API với cURL, bạn có thể tích hợp khả năng so sánh tài liệu mạnh mẽ vào bất kỳ dịch vụ backend nào. Hãy nhớ bảo mật thông tin đăng nhập của bạn, dọn dẹp các tệp tạm thời và điều chỉnh các tùy chọn so sánh để đạt hiệu suất tốt. Đối với triển khai sản xuất, bạn sẽ cần phiên bản có giấy phép; chi tiết giá cả có trên trang sản phẩm, và bạn có thể lấy giấy phép tạm thời để đánh giá từ trang giấy phép tạm thời. Bắt đầu thử nghiệm ngay hôm nay và mang lại khả năng so sánh tài liệu đáng tin cậy cho các ứng dụng Node.js của bạn.
Câu hỏi thường gặp
Làm thế nào để so sánh tài liệu Word trong Node.JS mà không viết mã?
Bạn có thể sử dụng cùng một thao tác thông qua các cuộc gọi REST. Các ví dụ cURL trong bài viết này cho thấy trình tự chính xác: xác thực, tải lên tệp, gọi endpoint so sánh và tải xuống kết quả.Các định dạng tệp nào được hỗ trợ cho việc so sánh?
SDK hỗ trợ DOCX, DOC, ODT, RTF, và TXT cùng các định dạng khác. Tất cả các tên định dạng không phân biệt chữ hoa chữ thường, nhưng chúng được ghi chú bằng chữ hoa (ví dụ: DOCX) trong tài liệu tham khảo API.Tôi có thể so sánh nhiều hơn hai tài liệu cùng một lúc không?
Có. MảngtargetFilestrongCompareOptionscó thể chứa nhiều đối tượngFileInfo, cho phép bạn so sánh một tệp nguồn với nhiều tệp đích trong một yêu cầu duy nhất.Có cách nào để tùy chỉnh kiểu hiển thị của kết quả so sánh không?
SDK cung cấp các cài đặt nhưshowDeletedContent,showInsertedContentvàgenerateSummaryPage. Điều chỉnh các thuộc tính này trongCompareOptionsđể kiểm soát cách các thay đổi được làm nổi bật. Tham khảo tài liệu chính thức để biết danh sách đầy đủ các tùy chọn.
