PDF(Formato de documento portátil) es uno de los tipos de archivo más utilizados en la actualidad. Normalmente se usa para distribuir documentos de solo lectura, conservando el diseño de una página. En varios casos, es posible que necesitemos comparar el contenido de dos o más documentos PDF o comparar varias versiones del mismo documento. Podemos comparar fácilmente documentos PDF mediante programación para identificar similitudes y diferencias. En este artículo, aprenderemos cómo comparar archivos PDF utilizando una API REST en Python.
En este artículo se tratarán los siguientes temas:
- REST API para comparar archivos PDF y Python SDK
- Compare dos archivos PDF utilizando una API REST en Python
- Compara múltiples archivos PDF en Python
- Personalizar los resultados de la comparación en Python
- Obtener lista de cambios en Python
- Compare y guarde con contraseña y metadatos en Python
REST API para comparar archivos PDF y Python SDK
Para comparar documentos PDF, usaremos la Python SDK of GroupDocs.Comparison Cloud API. Le permite comparar dos o más documentos de los formatos admitidos y encontrar las diferencias. Instálalo usando el siguiente comando en la consola:
pip install groupdocs_comparison_cloud
Por favor, obtenga su ID de cliente y secreto del tablero antes de seguir los pasos mencionados. Una vez que tenga su ID y secreto, agregue el código como se muestra a continuación:
# Este ejemplo de código demuestra cómo configurar el ID y el secreto del cliente.
client_id = "659fe7da-715b-4744-a0f7-cf469a392b73"
client_secret = "b377c36cfa28fa69960ebac6b6e36421"
configuration = groupdocs_comparison_cloud.Configuration(client_id, client_secret)
configuration.api_base_url = "https://api.groupdocs.cloud"
my_storage = ""
Compare dos archivos PDF utilizando una API REST en Python
Podemos comparar documentos PDF en la nube siguiendo los sencillos pasos que se indican a continuación:
- Subir los archivos PDF a la nube
- Comparar archivos PDF
- Descargar el archivo PDF resultante
Sube los archivos PDF
En primer lugar, cargaremos los archivos PDF de origen y de destino en la nube utilizando el siguiente ejemplo de código:
# Este ejemplo de código demuestra cómo cargar archivos PDF en la nube.
# Crear instancia de la API
file_api = groupdocs_comparison_cloud.FileApi.from_config(configuration)
# subir archivos de muestra
for filename in glob.iglob("C:\\Files\\*.pdf", recursive=True):
destFile = filename.replace("C:\\Files\\", "", 1)
file_api.upload_file(groupdocs_comparison_cloud.UploadFileRequest(destFile, filename))
print("Uploaded file: "+ destFile)
Como resultado, los archivos cargados estarán disponibles en la sección de archivos del tablero en la nube.
Compara archivos PDF usando Python
Podemos comparar dos documentos PDF mediante programación siguiendo los pasos que se detallan a continuación:
- En primer lugar, cree una instancia de CompareApi.
- A continuación, cree una instancia de FileInfo.
- Luego, establezca la ruta del archivo PDF de origen.
- Después de eso, cree otra instancia de FileInfo.
- Luego, establezca la ruta del archivo PDF de destino.
- A continuación, cree una instancia de ComparisonOptions.
- Luego, asigne los archivos de origen y de destino.
- Además, establezca la ruta del archivo de salida.
- Después de eso, cree una instancia de ComparisonsRequest con el objeto ComparisonOptions
- Finalmente, obtenga resultados llamando al método CompareApi.comparisons() con ComparisonsRequest como argumento.
El siguiente ejemplo de código muestra cómo comparar dos archivos PDF mediante una API REST en Python.
# Este ejemplo de código demuestra cómo comparar dos archivos PDF.
# Crear una instancia de la API
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)
# Archivo fuente de entrada
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"
# Archivo de destino
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"
# Definir opciones de comparación
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"
# Crear solicitud de comparación
request = groupdocs_comparison_cloud.ComparisonsRequest(options)
# comparar
response = api_instance.comparisons(request)
El archivo PDF resultante también contiene una página de resumen al final del documento, como se muestra a continuación:
Descargar el archivo resultante
El ejemplo de código anterior guardará las diferencias en un archivo PDF recién creado en la nube. Se puede descargar usando el siguiente código de ejemplo:
# Este ejemplo de código muestra cómo descargar el archivo resultante.
# Crear instancia de la API
file_api = groupdocs_comparison_cloud.FileApi.from_config(configuration)
# Crear solicitud de archivo de descarga
request = groupdocs_comparison_cloud.DownloadFileRequest("result.pdf", my_storage)
# Descargar archivo
response = file_api.download_file(request)
# Mueva el archivo descargado a su directorio de trabajo
shutil.move(response, "C:\\Files\\")
Compara múltiples archivos PDF en Python
Podemos comparar varios documentos PDF siguiendo los pasos que se indican a continuación:
- En primer lugar, cree una instancia de CompareApi.
- A continuación, cree una instancia de FileInfo y configure la ruta del archivo PDF de origen.
- Luego, cree otra instancia de FileInfo y configure la ruta del archivo PDF de destino.
- Después de eso, repita el paso anterior para agregar más archivos de destino.
- A continuación, cree una instancia de ComparisonOptions.
- Luego, asigne los archivos de origen/destino y establezca la ruta del archivo de salida.
- Después de eso, cree una instancia de ComparisonsRequest con el objeto ComparisonOptions
- Finalmente, obtenga resultados llamando al método CompareApi.comparisons() con ComparisonsRequest como argumento.
El siguiente ejemplo de código muestra cómo comparar varios archivos PDF mediante una API REST en Python.
# Este ejemplo de código demuestra cómo comparar varios archivos PDF.
# Crear las instancias de API necesarias
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)
# PDF fuente
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"
# PDF objetivo 1
target1 = groupdocs_comparison_cloud.FileInfo()
target1.file_path = "target.pdf"
# PDF objetivo 2
target2 = groupdocs_comparison_cloud.FileInfo()
target2.file_path = "target2.pdf"
# Definir opciones de comparación
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target1, target2]
options.output_path = "result.pdf"
# Crear solicitud de comparación y comparar
request = groupdocs_comparison_cloud.ComparisonsRequest(options)
response = api_instance.comparisons(request)
Personalizar los resultados de la comparación en Python
Podemos personalizar el estilo de los cambios encontrados en el resultado del proceso de comparación siguiendo los pasos que se detallan a continuación:
- En primer lugar, cree una instancia de CompareApi.
- A continuación, cree una instancia de FileInfo y configure la ruta del archivo PDF de origen.
- Luego, cree otra instancia de FileInfo y configure la ruta del archivo PDF de destino.
- A continuación, cree una instancia de la Configuración.
- Luego, configure la sensibilidad de comparación y varias propiedades para personalizar el estilo del elemento.
- A continuación, cree una instancia de ComparisonOptions.
- Luego, asigne los archivos de origen/destino y establezca la ruta del archivo de salida.
- Después de eso, cree una instancia de ComparisonsRequest con el objeto ComparisonOptions
- Finalmente, obtenga resultados llamando al método CompareApi.comparisons() con ComparisonsRequest como argumento.
El siguiente ejemplo de código muestra cómo personalizar los resultados de la comparación mediante una API REST en Python.
# Este ejemplo de código muestra cómo personalizar los resultados de la comparación.
# Crear las instancias de API necesarias
api_instance = groupdocs_comparison_cloud.CompararApi.from_keys(client_id, client_secret)
# PDF fuente
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"
# PDF objetivo
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"
settings = groupdocs_comparison_cloud.Settings()
# Comparar sensibilidad
settings.sensitivity_of_comparison = 100
# Personaliza estilos para los cambios.
settings.inserted_items_style = groupdocs_comparison_cloud.ItemsStyle()
settings.inserted_items_style.highlight_color = "14297642"
settings.inserted_items_style.font_color = "16711680"
settings.inserted_items_style.underline = True
settings.deleted_items_style = groupdocs_comparison_cloud.ItemsStyle()
settings.deleted_items_style.font_color = "14166746"
settings.deleted_items_style.bold = True
settings.changed_items_style = groupdocs_comparison_cloud.ItemsStyle()
settings.changed_items_style.font_color = "14320170"
settings.changed_items_style.italic = True
# Definir opciones de comparación
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"
options.settings = settings
# Crear solicitud de comparación
request = groupdocs_comparison_cloud.ComparisonsRequest(options)
# Comparar
response = api_instance.comparisons(request)
Obtener lista de cambios en Python
Podemos obtener una lista de todos los cambios encontrados durante la comparación de archivos PDF siguiendo los pasos que se detallan a continuación:
- En primer lugar, cree una instancia de CompareApi.
- A continuación, cree una instancia de FileInfo y configure la ruta del archivo PDF de origen.
- Luego, cree otra instancia de FileInfo y configure la ruta del archivo PDF de destino.
- A continuación, cree una instancia de ComparisonOptions.
- Luego, asigne los archivos de origen/destino y establezca la ruta del archivo de salida.
- Después de eso, cree una instancia de PostChangesRequest con el objeto ComparisonOptions
- Finalmente, obtenga resultados llamando al método CompareApi.post\changes() con ComparisonsRequest como argumento.
El siguiente ejemplo de código muestra cómo obtener una lista de cambios mediante una API REST en Python.
# Este ejemplo de código demuestra cómo obtener una lista de todos los cambios.
# Crear las instancias de API necesarias
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)
# PDF fuente
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"
# PDF objetivo
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"
# Definir opciones de comparación
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"
# Crear solicitud de cambios posteriores
request = groupdocs_comparison_cloud.PostChangesRequest(options)
# Publicar cambios
response = api_instance.post_changes(request)
# Mostrar cambios
for change in response:
print("Change # " + str(change.id + 1) + "- Target Text: " + str(change.target_text) + ", Text: " + str(change.text) + ", Type: " + str(change.type));
Compare y guarde con contraseña y metadatos en Python
Podemos proteger con contraseña el archivo resultante y guardarlo con metadatos siguiendo los pasos que se detallan a continuación:
- En primer lugar, cree una instancia de CompareApi.
- A continuación, cree una instancia de FileInfo y configure la ruta del archivo PDF de origen.
- Luego, cree otra instancia de FileInfo y configure la ruta del archivo PDF de destino.
- A continuación, cree una instancia de la Configuración.
- Luego, cree una instancia de los metadatos.
- Después de eso, establezca varias propiedades de metadatos, como autor, empresa, último\guardado\por, etc.
- Luego, configure la contraseña y contraseña\guardar\opciones.
- A continuación, cree una instancia de ComparisonOptions.
- Luego, asigne los archivos de origen/destino y establezca la ruta del archivo de salida.
- Después de eso, cree una instancia de ComparisonsRequest con el objeto ComparisonOptions
- Finalmente, obtenga resultados llamando al método CompareApi.comparisons() con ComparisonsRequest como argumento.
El siguiente ejemplo de código muestra cómo guardar el archivo resultante con una contraseña y metadatos mediante una API REST en Python.
# Este ejemplo de código demuestra cómo guardar el archivo resultante con una contraseña y metadatos.
# Crear las instancias de API necesarias
api_instance = groupdocs_comparison_cloud.CompararApi.from_keys(client_id, client_secret)
# PDF fuente
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"
# PDF objetivo
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"
settings = groupdocs_comparison_cloud.Settings()
# Establecer metadatos
settings.meta_data = groupdocs_comparison_cloud.Metadata()
settings.meta_data.author = "Tom"
settings.meta_data.company = "GroupDocs"
settings.meta_data.last_save_by = "Jack"
#Set password
settings.password_save_option = "User"
settings.password = "password"
# Definir opciones de comparación
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"
options.settings = settings
# Crear solicitud de comparación
request = groupdocs_comparison_cloud.ComparisonsRequest(options)
# Comparar
response = api_instance.comparisons(request)
Prueba en línea
Pruebe la siguiente herramienta gratuita de comparación de PDF en línea, que se desarrolla utilizando la API anterior. https://products.groupdocs.app/comparison/pdf
Conclusión
En este artículo, hemos aprendido a comparar documentos PDF en la nube. También hemos visto cómo comparar varios archivos PDF, personalizar el estilo de los cambios y obtener una lista de cambios en Python. Este artículo también explicó cómo cargar mediante programación varios archivos PDF a la nube y luego descargar el archivo resultante de la nube. Además, puede obtener más información sobre GroupDocs.Comparison Cloud API utilizando la documentación. También proporcionamos una sección Referencia de API que le permite visualizar e interactuar con nuestras API directamente a través del navegador. En caso de cualquier ambigüedad, no dude en contactarnos en el foro.