Comparar archivos Word de forma programática es un requisito frecuente para los servicios backend que necesitan detectar cambios, generar informes de revisión o aplicar políticas de documentos. GroupDocs.Comparison Cloud SDK for Node.js ofrece una API potente que simplifica esta tarea para aplicaciones Node.js. En esta guía aprenderá cómo configurar el SDK, ejecutar una comparación completa de dos archivos DOCX, usar comandos cURL equivalentes, comprender cada parte de la implementación y seguir recomendaciones de buenas prácticas para mantener su solución fiable y segura.
Ejemplo de código completo: Comparar documentos Word en Node.JS
El siguiente ejemplo muestra un flujo de trabajo completo de extremo a extremo para comparar dos documentos Word usando el SDK de GroupDocs.Comparison Cloud para 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);
}
})();
Nota: Este ejemplo de código muestra la funcionalidad principal. Antes de usarlo en su proyecto, asegúrese de actualizar cualquier ruta de archivo y valores de configuración para que coincidan con su entorno real, verifique que todas las dependencias requeridas estén correctamente instaladas y pruebe exhaustivamente en su entorno de desarrollo. Si encuentra algún problema, consulte la documentación oficial o póngase en contacto con el equipo de soporte para obtener ayuda.
Realizar comparación de documentos con cURL y la API REST
Si prefieres un enfoque independiente del lenguaje, puedes lograr el mismo resultado con solicitudes HTTP simples. A continuación se presentan los comandos cURL esenciales.
- Autenticar y obtener un token de acceso
ReemplaceYOUR_CLIENT_IDyYOUR_CLIENT_SECRETcon sus credenciales.
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"
- Cargar el archivo DOCX de origen
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"
- Cargue el archivo DOCX de destino
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"
- Ejecutar la operación de comparación
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"
}'
- Descargar el archivo de comparación resultante
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/comparison_result.docx" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o comparison_result.docx
Para obtener más detalles sobre las cargas útiles de la solicitud y los formatos de respuesta, consulte la documentación oficial de la API.
Comprendiendo la comparación de documentos Word en código Node.JS
A continuación se muestra un desglose paso a paso del ejemplo completo:
- Importar SDK y módulos de Node.js
const GroupDocsComparisonCloud = require("@groupdocs/comparison-cloud");
const fs = require("fs");
const path = require("path");
El espacio de nombres GroupDocsComparisonCloud brinda acceso a todas las clases de la API.
- Crear configuración con credenciales de cliente
const config = new GroupDocsComparisonCloud.Configuration(clientId, clientSecret);
Este objeto autentica cada llamada API posterior.
- Instanciar CompareApi y StorageApi
const compareApi = new GroupDocsComparisonCloud.CompareApi(config);
const storageApi = new GroupDocsComparisonCloud.StorageApi(config);
CompareApi maneja la comparación, mientras que StorageApi gestiona la carga y eliminación de archivos. Consulte la referencia de API para obtener detalles de los métodos.
- Cargar archivos DOCX de origen y destino
const uploadSourceReq = new GroupDocsComparisonCloud.UploadFileRequest({
path: sourceFileName,
file: sourceData
});
await storageApi.uploadFile(uploadSourceReq);
El mismo patrón se repite para el archivo de destino.
Configurar CompareOptions y ejecutar la comparación
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);CompareOptionsle permite afinar la operación (p. ej., generar una página de resumen). El objeto de resultado contiene la ruta al documento de comparación generado.Limpiar archivos temporales (opcional)
await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: sourceFileName }));
await storageApi.deleteFile(new GroupDocsComparisonCloud.DeleteFileRequest({ path: targetFileName }));
Eliminar los originales cargados mantiene el almacenamiento ordenado.
Requisitos y configuración para GroupDocs.Comparison
- Versión de Node.js - Asegúrese de que está ejecutando Node 14 o una versión más reciente.
- Obtener credenciales de cliente - Regístrese en el portal GroupDocs Cloud para obtener
clientIdyclientSecret. - Instalar el SDK
npm install groupdocs-comparison-cloud
- (Opcional) Descargar el proyecto de ejemplo - Puedes clonar el repositorio desde la página de GitHub.
- Configura tu entorno - Establece las credenciales como variables de entorno o reemplaza los marcadores de posición en el código.
Para obtener una lista completa de los binarios descargables, consulte la página de descarga.
Mejores prácticas para la comparación eficiente de documentos Word
- Validar archivos de entrada - Verifique el tamaño y el formato del archivo antes de cargarlo para evitar llamadas innecesarias a la API.
- Reutilizar sesiones de almacenamiento - Cargue los archivos una vez y reutilice sus rutas para múltiples comparaciones para reducir la latencia.
- Habilitar la página de resumen solo cuando sea necesario - Generar una página de resumen añade tiempo de procesamiento; desactívela para verificaciones de diferencias simples.
- Manejar documentos grandes de forma asíncrona - Para archivos DOCX mayores de 10 MB, considere sondear el estado del trabajo en lugar de esperar de forma síncrona.
- Asegurar credenciales - Almacene
clientIdyclientSecreten variables de entorno o en un gestor de secretos; nunca los codifique directamente.
Conclusión
La comparación de documentos Word en Node.JS se vuelve sencilla con el GroupDocs.Comparison Cloud SDK for Node.js. Siguiendo los pasos de instalación, usando el ejemplo de código proporcionado y, opcionalmente, aprovechando la API REST con cURL, puedes integrar una comparación de documentos robusta en cualquier servicio backend. Recuerda asegurar tus credenciales, limpiar los archivos temporales y ajustar las opciones de comparación para obtener mejor rendimiento. Para implementaciones en producción necesitarás una versión con licencia; los detalles de precios están disponibles en la página del producto, y puedes obtener una licencia temporal para evaluación en la página de licencia temporal. Comienza a experimentar hoy y lleva capacidades fiables de diferencia de documentos a tus aplicaciones Node.js.
Preguntas frecuentes
¿Cómo comparar documentos Word en Node.JS sin escribir código?
Puede usar la misma operación mediante llamadas REST. Los ejemplos de cURL en este artículo muestran la secuencia exacta: autenticarse, cargar archivos, llamar al endpoint de comparación y descargar el resultado.¿Qué formatos de archivo son compatibles para la comparación?
El SDK admite DOCX, DOC, ODT, RTF, y TXT entre otros. Todos los nombres de formato no distinguen entre mayúsculas y minúsculas, pero están documentados en mayúsculas (p. ej., DOCX) en la referencia de API.¿Puedo comparar más de dos documentos a la vez?
Sí. La matriztargetFilesenCompareOptionspuede contener varios objetosFileInfo, lo que le permite comparar un archivo fuente contra varios destinos en una sola solicitud.¿Hay alguna forma de personalizar el estilo visual del resultado de la comparación?
El SDK ofrece configuraciones comoshowDeletedContent,showInsertedContentygenerateSummaryPage. Ajuste estas propiedades enCompareOptionspara controlar cómo se resaltan los cambios. Consulte la documentación oficial para obtener la lista completa de opciones.
