Detectar diferencias entre dos archivos Word es una necesidad frecuente para los desarrolladores que manejan contratos, informes o documentos legales. El Aspose.BarCode Cloud SDK for Python proporciona una biblioteca potente que puede combinarse con Aspose.Words Cloud SDK for Python para comparar programáticamente texto en documentos Word en Python. En esta guía configurará su entorno, cargará documentos en el almacenamiento de Aspose Cloud, configurará las opciones de comparación, ejecutará la comparación y recuperará el documento resultante con cambios rastreados. También verá cómo lograr el mismo resultado usando llamadas REST directas con cURL.
Preparación del entorno - Requisitos y configuración
Antes de comenzar, asegúrese de tener lo siguiente:
- Python 3.8 o más reciente instalado localmente.
- Una cuenta de Aspose Cloud con client_id y client_secret (disponible en el panel de Aspose Cloud).
- Acceso al almacenamiento de Aspose Cloud para el manejo de archivos temporales.
Instale el BarCode SDK mediante pip:
pip install aspose-barcode-cloud
También necesitará el Aspose.Words Cloud SDK for Python, que maneja operaciones específicas de Word:
pip install asposewordscloud
Establezca sus credenciales como variables de entorno o reemplace los marcadores de posición en el código:
import os
client_id = os.getenv("ASPOSE_CLIENT_ID")
client_secret = os.getenv("ASPOSE_CLIENT_SECRET")
Los SDKs usarán estos valores para autenticarse contra los servicios de Aspose Cloud. Una vez que el entorno esté listo, podemos pasar a la implementación.
Comparar texto en documentos Word en Python: guía paso a paso
Paso 1: Cargar el documento de origen
Primero, configure sus credenciales de Aspose Cloud para que el SDK pueda autenticarse y pueda comparar texto en documentos Word en Python.
from asposewordscloud import WordsApi, Configuration
config = Configuration(client_id=client_id, client_secret=client_secret)
words_api = WordsApi(config)
Paso 2: Cargar documentos de origen y destino
Cargue los dos archivos DOCX que desea comparar. La función auxiliar abstrae el proceso de carga.
def upload(local_file, remote_name):
with open(local_file, "rb") as f:
words_api.upload_file(request={"path": f"TempCompare/{remote_name}", "file": f})
upload("doc1.docx", "doc1.docx")
upload("doc2.docx", "doc2.docx")
Paso 3: Establecer opciones de comparación
A continuación, establezca CompareOptions para definir cómo debe comparar el SDK el texto en documentos Word en Python, por ejemplo, ignorando mayúsculas/minúsculas o comentarios.
from asposewordscloud.models import CompareOptions
compare_opts = CompareOptions(
author="PythonComparer",
compare_options="IgnoreCase,IgnoreComments,IgnoreFormatting",
file_path="TempCompare/doc2.docx",
revision_author="PythonComparer",
revision_date_time="2023-01-01T00:00:00Z"
)
Paso 4: Ejecutar la comparación de documentos
Ahora llame al método compare_document para comparar realmente el texto en documentos Word en Python y generar un resultado con seguimiento de revisiones.
compare_result = words_api.compare_document(
request={
"name": "doc1.docx",
"compare_data": compare_opts,
"folder": "TempCompare"
}
)
Paso 5: Recuperar y Guardar el Resultado
Finalmente, escriba el documento resultante en el disco y limpie los archivos temporales.
with open("compare_result.docx", "wb") as out_file:
out_file.write(compare_result.document)
words_api.delete_file(request={"path": "TempCompare/doc1.docx"})
words_api.delete_file(request={"path": "TempCompare/doc2.docx"})
Comparar texto en documentos Word en Python Implementación completa - Ejemplo de código completo
El siguiente código muestra el flujo de trabajo completo para comparar texto en documentos Word en Python usando las Aspose APIs.
import os
from asposewordscloud import WordsApi, Configuration
from asposewordscloud.models import CompareOptions
# ----------------------------------------------------------------------
# Configuration – set your Aspose Cloud credentials in environment variables
# ----------------------------------------------------------------------
client_id = os.getenv("ASPOSE_CLIENT_ID")
client_secret = os.getenv("ASPOSE_CLIENT_SECRET")
config = Configuration(client_id=client_id, client_secret=client_secret)
# ----------------------------------------------------------------------
# Initialize the Words API client
# ----------------------------------------------------------------------
words_api = WordsApi(config)
# ----------------------------------------------------------------------
# Local file paths (replace with your actual files)
# ----------------------------------------------------------------------
source_path = "doc1.docx"
target_path = "doc2.docx"
result_path = "compare_result.docx"
# ----------------------------------------------------------------------
# Remote folder in Aspose Cloud storage where temporary files are kept
# ----------------------------------------------------------------------
remote_folder = "TempCompare"
# ----------------------------------------------------------------------
# Helper to upload a local file to Aspose Cloud storage
# ----------------------------------------------------------------------
def upload(local_file, remote_name):
with open(local_file, "rb") as f:
words_api.upload_file(request={"path": f"{remote_folder}/{remote_name}", "file": f})
# ----------------------------------------------------------------------
# Upload source and target documents
# ----------------------------------------------------------------------
upload(source_path, source_path)
upload(target_path, target_path)
# ----------------------------------------------------------------------
# Set up comparison options
# ----------------------------------------------------------------------
compare_opts = CompareOptions(
author="PythonComparer",
compare_options="IgnoreCase,IgnoreComments,IgnoreFormatting",
file_path=f"{remote_folder}/{target_path}",
revision_author="PythonComparer",
revision_date_time="2023-01-01T00:00:00Z"
)
# ----------------------------------------------------------------------
# Perform the comparison
# ----------------------------------------------------------------------
try:
compare_result = words_api.compare_document(
request={
"name": source_path,
"compare_data": compare_opts,
"folder": remote_folder
}
)
# The API returns the resulting document as a byte array
with open(result_path, "wb") as out_file:
out_file.write(compare_result.document)
finally:
# ------------------------------------------------------------------
# Clean up remote temporary files
# ------------------------------------------------------------------
words_api.delete_file(request={"path": f"{remote_folder}/{source_path}"})
words_api.delete_file(request={"path": f"{remote_folder}/{target_path}"})
Nota: Este ejemplo de código demuestra 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.
Realizando la comparación de documentos a través de la API REST usando cURL
A continuación se presentan comandos cURL que realizan la misma comparación de texto en documentos Word en una operación de Python a través de la API REST.
- Autenticar y obtener el token de acceso
curl -X POST "https://api.aspose.cloud/connect/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 de origen
curl -X PUT "https://api.aspose.cloud/v4.0/words/TempCompare/doc1.docx" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary "@doc1.docx"
- Cargar el archivo de destino
curl -X PUT "https://api.aspose.cloud/v4.0/words/TempCompare/doc2.docx" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary "@doc2.docx"
- Ejecutar la Comparación
curl -X POST "https://api.aspose.cloud/v4.0/words/doc1.docx/compare" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"compareOptions": {
"author": "PythonComparer",
"compareOptions": "IgnoreCase,IgnoreComments,IgnoreFormatting",
"filePath": "TempCompare/doc2.docx",
"revisionAuthor": "PythonComparer",
"revisionDateTime": "2023-01-01T00:00:00Z"
}
}' -o compare_result.docx
- Descargar el archivo de salida
curl -X GET "https://api.aspose.cloud/v4.0/words/TempCompare/compare_result.docx" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o compare_result.docx
Para obtener más detalles sobre los cuerpos de solicitud y parámetros adicionales, consulte la documentación oficial de la API.
Conclusión
Este artículo demostró cómo comparar texto en documentos Word en Python usando el Aspose.BarCode Cloud SDK for Python. Siguiendo los pasos de configuración de credenciales, carga de archivos, configuración de opciones de comparación y la invocación de la API de comparación, puedes automatizar flujos de trabajo de diferencias de documentos en tus aplicaciones. Recuerda obtener una licencia adecuada para uso en producción; una licencia temporal está disponible en la página de licencia temporal, y los detalles completos de licenciamiento se enumeran en la página del producto. Con estas herramientas, integrar la comparación de documentos en tus proyectos Python se vuelve sencillo y fiable.
Preguntas frecuentes
-
¿Cómo me ayuda el Aspose.BarCode Cloud SDK for Python a comparar texto en documentos Word en Python?
El SDK funciona junto con Aspose.Words Cloud SDK for Python para cargar archivos DOCX, establecer opciones de comparación y generar un resultado con seguimiento de revisiones que resalta las diferencias. Consulte la página del producto Aspose.BarCode Cloud SDK for Python para obtener más detalles. -
¿Puedo comparar archivos Word grandes de manera eficiente?
Sí. Usando la APIcompare_documentpuedes transmitir archivos DOCX grandes desde el almacenamiento de Aspose Cloud, y el servicio los procesa en el lado del servidor, minimizando el uso de memoria en tu máquina. Consulta la documentación oficial para obtener consejos de rendimiento. -
¿Qué formatos de archivo son compatibles para la comparación?
La API funciona principalmente con archivos DOCX, pero también puede comparar archivos DOC después de convertirlos a DOCX usando Aspose.Words. Todos los nombres de formato están en mayúsculas, p. ej., DOCX, PDF. -
¿Necesito una licencia para ejecutar esto en producción?
Una licencia temporal está disponible en la página de licencia temporal. Para uso en producción, debe adquirir una licencia completa como se describe en la página del producto.