Compare arquivos PDF usando a API REST em Python

PDF(Portable Document Format) é um dos tipos de arquivo mais usados atualmente. Normalmente usado para distribuir documentos somente leitura, preservando o layout de uma página. Em vários casos, podemos precisar comparar o conteúdo de dois ou mais documentos PDF ou comparar várias versões do mesmo documento. Podemos facilmente comparar documentos PDF programaticamente para identificar semelhanças e diferenças. Neste artigo, aprenderemos como comparar arquivos PDF usando uma API REST em Python.

Os seguintes tópicos serão abordados neste artigo:

API REST para comparar arquivos PDF e Python SDK

Para comparar documentos PDF, usaremos a API Python SDK of GroupDocs.Comparison Cloud. Ele permite que você compare dois ou mais documentos dos formatos suportados e encontre as diferenças. Instale-o usando o seguinte comando no console:

pip install groupdocs_comparison_cloud

Por favor, obtenha seu ID e Segredo do cliente no painel antes de seguir as etapas mencionadas. Depois de ter seu ID e segredo, adicione o código conforme mostrado abaixo:

# Este exemplo de código demonstra como definir o ID e o segredo do 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 dois arquivos PDF usando uma API REST em Python

Podemos comparar documentos PDF na nuvem seguindo as etapas simples abaixo:

  1. Upload os arquivos PDF para a nuvem
  2. Comparar arquivos PDF
  3. Baixe o arquivo PDF resultante

Carregar os arquivos PDF

Em primeiro lugar, faremos o upload dos arquivos PDF de origem e destino para a nuvem usando o seguinte exemplo de código:

# Este exemplo de código demonstra como fazer upload de arquivos PDF para a nuvem.
# Criar instância da API
file_api = groupdocs_comparison_cloud.FileApi.from_config(configuration)

# fazer upload de arquivos de amostra
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, os arquivos enviados estarão disponíveis na seção de arquivos do painel na nuvem.

Comparar arquivos PDF usando Python

Podemos comparar dois documentos PDF programaticamente seguindo as etapas abaixo:

  • Em primeiro lugar, crie uma instância do CompareApi.
  • Em seguida, crie uma instância do FileInfo.
  • Em seguida, defina o caminho do arquivo PDF de origem.
  • Depois disso, crie outra instância do FileInfo.
  • Em seguida, defina o caminho do arquivo PDF de destino.
  • Em seguida, crie uma instância do ComparisonOptions.
  • Em seguida, atribua arquivos de origem e destino.
  • Além disso, defina o caminho do arquivo de saída.
  • Depois disso, crie uma instância do objeto ComparisonsRequest com ComparisonOptions
  • Finalmente, obtenha resultados chamando o método CompareApi.comparisons() com ComparisonsRequest como argumento.

O exemplo de código a seguir mostra como comparar dois arquivos PDF usando uma API REST em Python.

# Este exemplo de código demonstra como comparar dois arquivos PDF.
# Criar uma instância da API
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)

# Arquivo de origem de entrada
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# Arquivo de destino
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"

# Definir opções de comparação
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"

# Criar solicitação de comparação
request = groupdocs_comparison_cloud.ComparisonsRequest(options)

# comparar
response = api_instance.comparisons(request)
Compare dois arquivos PDF usando uma API REST em Python

Compare dois arquivos PDF usando uma API REST em Python.

O arquivo PDF resultante também contém uma página de resumo no final do documento, conforme mostrado abaixo:

Página Resumo.

Página de resumo mostrando o total de elementos excluídos ou inseridos.

Baixe o arquivo resultante

O exemplo de código acima salvará as diferenças em um arquivo PDF recém-criado na nuvem. Ele pode ser baixado usando o seguinte exemplo de código:

# Este exemplo de código demonstra como baixar o arquivo resultante.
# Criar instância da API
file_api = groupdocs_comparison_cloud.FileApi.from_config(configuration)

# Criar solicitação de arquivo de download
request = groupdocs_comparison_cloud.DownloadFileRequest("result.pdf", my_storage)

# ⇬ Fazer download do arquivo
response = file_api.download_file(request)

# Mova o arquivo baixado para o seu diretório de trabalho
shutil.move(response, "C:\\Files\\") 

Comparar vários arquivos PDF em Python

Podemos comparar vários documentos PDF seguindo as etapas abaixo:

  • Em primeiro lugar, crie uma instância do CompareApi.
  • Em seguida, crie uma instância do FileInfo e defina o caminho do arquivo PDF de origem.
  • Em seguida, crie outra instância do FileInfo e defina o caminho do arquivo PDF de destino.
  • Depois disso, repita a etapa acima para adicionar mais arquivos de destino.
  • Em seguida, crie uma instância do ComparisonOptions.
  • Em seguida, atribua arquivos de origem/destino e defina o caminho do arquivo de saída.
  • Depois disso, crie uma instância do objeto ComparisonsRequest com ComparisonOptions
  • Finalmente, obtenha resultados chamando o método CompareApi.comparisons() com ComparisonsRequest como argumento.

O exemplo de código a seguir mostra como comparar vários arquivos PDF usando uma API REST em Python.

# Este exemplo de código demonstra como comparar vários arquivos PDF.
# Crie instâncias de API necessárias
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)

# PDF de origem
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# PDF de destino 1
target1 = groupdocs_comparison_cloud.FileInfo()
target1.file_path = "target.pdf"

# PDF de destino 2
target2 = groupdocs_comparison_cloud.FileInfo()
target2.file_path = "target2.pdf"

# Definir opções de comparação
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target1, target2]
options.output_path = "result.pdf"

# Criar solicitação de comparação e comparar
request = groupdocs_comparison_cloud.ComparisonsRequest(options)
response = api_instance.comparisons(request)

Personalizar resultados de comparação em Python

Podemos customizar o estilo das mudanças encontradas no resultado do processo de comparação seguindo os passos abaixo:

  • Em primeiro lugar, crie uma instância do CompareApi.
  • Em seguida, crie uma instância do FileInfo e defina o caminho do arquivo PDF de origem.
  • Em seguida, crie outra instância do FileInfo e defina o caminho do arquivo PDF de destino.
  • Em seguida, crie uma instância do arquivo Settings.
  • Em seguida, defina a sensibilidade de comparação e várias propriedades para personalizar o estilo do item.
  • Em seguida, crie uma instância do ComparisonOptions.
  • Em seguida, atribua arquivos de origem/destino e defina o caminho do arquivo de saída.
  • Depois disso, crie uma instância do objeto ComparisonsRequest com ComparisonOptions
  • Finalmente, obtenha resultados chamando o método CompareApi.comparisons() com ComparisonsRequest como argumento.

O exemplo de código a seguir mostra como personalizar os resultados da comparação usando uma API REST em Python.

# Este exemplo de código demonstra como personalizar os resultados da comparação.
# Crie instâncias de API necessárias
api_instance = groupdocs_comparison_cloud.CompararApi.from_keys(client_id, client_secret)

# PDF de origem
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# PDF de destino
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"

settings = groupdocs_comparison_cloud.Settings()

# Comparar sensibilidade
settings.sensitivity_of_comparison = 100

# Personalize estilos para as alterações
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 opções de comparação
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"
options.settings = settings

# Criar solicitação de comparação
request = groupdocs_comparison_cloud.ComparisonsRequest(options)

# Comparar
response = api_instance.comparisons(request)

Obter lista de alterações em Python

Podemos obter uma lista de todas as alterações encontradas durante a comparação de arquivos PDF seguindo as etapas abaixo:

  • Em primeiro lugar, crie uma instância do CompareApi.
  • Em seguida, crie uma instância do FileInfo e defina o caminho do arquivo PDF de origem.
  • Em seguida, crie outra instância do FileInfo e defina o caminho do arquivo PDF de destino.
  • Em seguida, crie uma instância do ComparisonOptions.
  • Em seguida, atribua arquivos de origem/destino e defina o caminho do arquivo de saída.
  • Depois disso, crie uma instância do PostChangesRequest com o objeto ComparisonOptions
  • Finalmente, obtenha resultados chamando o método CompareApi.post\changes() com ComparisonsRequest como argumento.

O exemplo de código a seguir mostra como obter uma lista de alterações usando uma API REST em Python.

# Este exemplo de código demonstra como obter uma lista de todas as alterações.
# Crie instâncias de API necessárias
api_instance = groupdocs_comparison_cloud.CompareApi.from_keys(client_id, client_secret)

# PDF de origem
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# PDF de destino
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"

# Definir opções de comparação
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"

# Criar solicitação de alterações de postagem
request = groupdocs_comparison_cloud.PostChangesRequest(options)
# Postar alterações
response = api_instance.post_changes(request)

# Exibir alterações
for change in response:
  print("Change # " + str(change.id + 1) + "- Target Text: " + str(change.target_text) + ", Text: " + str(change.text) + ", Type: " + str(change.type));
Obter lista de alterações em Python

Obtenha a lista de alterações em Python.

Compare e salve com senha e metadados em Python

Podemos proteger com senha o arquivo resultante e salvá-lo com metadados seguindo as etapas abaixo:

  • Em primeiro lugar, crie uma instância do CompareApi.
  • Em seguida, crie uma instância do FileInfo e defina o caminho do arquivo PDF de origem.
  • Em seguida, crie outra instância do FileInfo e defina o caminho do arquivo PDF de destino.
  • Em seguida, crie uma instância do arquivo Settings.
  • Em seguida, crie uma instância do Metadata.
  • Depois disso, defina várias propriedades de metadados, como autor, empresa, último\salvar\por, etc.
  • Em seguida, defina a senha e a senha\salvar\opções.
  • Em seguida, crie uma instância do ComparisonOptions.
  • Em seguida, atribua arquivos de origem/destino e defina o caminho do arquivo de saída.
  • Depois disso, crie uma instância do objeto ComparisonsRequest com ComparisonOptions
  • Finalmente, obtenha resultados chamando o método CompareApi.comparisons() com ComparisonsRequest como argumento.

O exemplo de código a seguir mostra como salvar o arquivo resultante com uma senha e metadados usando uma API REST em Python.

# Este exemplo de código demonstra como salvar o arquivo resultante com uma senha e metadados.
# Crie instâncias de API necessárias
api_instance = groupdocs_comparison_cloud.CompararApi.from_keys(client_id, client_secret)

# PDF de origem
source = groupdocs_comparison_cloud.FileInfo()
source.file_path = "source.pdf"

# PDF de destino
target = groupdocs_comparison_cloud.FileInfo()
target.file_path = "target.pdf"

settings = groupdocs_comparison_cloud.Settings()
# Definir metadados
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 opções de comparação
options = groupdocs_comparison_cloud.ComparisonOptions()
options.source_file = source
options.target_files = [target]
options.output_path = "result.pdf"
options.settings = settings

# Criar solicitação de comparação
request = groupdocs_comparison_cloud.ComparisonsRequest(options)

# Comparar
response = api_instance.comparisons(request)

Experimente on-line

Experimente a seguinte ferramenta de comparação de PDF on-line gratuita, desenvolvida usando a API acima. https://products.groupdocs.app/comparison/pdf

Conclusão

Neste artigo, aprendemos como comparar documentos PDF na nuvem. Também vimos como comparar vários arquivos PDF, personalizar o estilo de alterações e obter uma lista de alterações em Python. Este artigo também explicou como carregar programaticamente vários arquivos PDF para a nuvem e, em seguida, baixar o arquivo resultante da nuvem. Além disso, você pode aprender mais sobre GroupDocs.Comparison Cloud API usando a documentação. Também fornecemos uma seção Referência de API que permite visualizar e interagir com nossas APIs diretamente pelo navegador. Em caso de ambiguidade, sinta-se à vontade para nos contatar no fórum.

Veja também