Devido ao fato de o PDF ser um dos formatos mais usados do mundo digital, muitas vezes é necessário comparar duas versões do mesmo documento. Este artigo discute como comparar dois documentos PDF e destacar as diferenças usando C#. Além disso, veremos como comparar arquivos PDF protegidos por senha, aceitar e rejeitar alterações e também a comparação de mais de dois arquivos PDF com exemplos C#.

Compare documentos PDF para encontrar diferenças usando a API .NET

Os seguintes tópicos são discutidos aqui:

API .NET para comparar arquivos PDF

GroupDocs.Comparison for .NET é a API que permite a comparação entre vários documentos PDF e muitos outros arquivos do mesmo formato de documento dentro dos aplicativos .NET. Usarei essa API nos exemplos de código C# deste artigo para comparar documentos PDF.

Você pode baixar as DLLs ou o instalador MSI da seção de downloads ou instalar a API em seu aplicativo .NET via NuGet.

PM> Install-Package GroupDocs.Comparison

Comparar documentos PDF usando C#

Se você tiver várias cópias de um documento PDF, poderá comparar esses arquivos para encontrar as diferenças (adições, exclusões). Depois de comparar o conteúdo do PDF, você pode criar um novo documento que destaque todas as alterações identificadas. A seguir estão as etapas para comparar dois documentos PDF e destacar as diferenças usando C#.

  • Carregue o primeiro documento PDF usando a classe Comparer.
  • Adicione o segundo arquivo ao Comparer usando o método Add().
  • Compare os dois arquivos PDF e obtenha o resumo das alterações chamando o método Compare().

O trecho de código C# a seguir mostra como comparar documentos PDF e destacar as alterações no documento resultante.

/*
 * Compare dois documentos PDF e destaque alterações usando C#
 */
using (Comparer comparer = new Comparer(@"path/document-ver1.pdf"))
{
    comparer.Add(@"path/document-ver2.pdf");
    comparer.Compare(@"path/compared-result.pdf");
}

Aceitar ou rejeitar alterações identificadas de arquivos PDF usando C#

Assim como os recursos de rastreamento de alterações, você pode aceitar ou rejeitar programaticamente cada alteração identificada em documentos PDF. As etapas a seguir mostram como comparar e aceitar ou rejeitar as alterações identificadas nos documentos PDF.

  • Carregue os arquivos PDF de origem e destino usando a classe Comparer.
  • Comparação de documentos carregados usando o método Compare().
  • Obtenha as alterações identificadas usando o método GetChanges().
  • Agora percorra as alterações e defina a ComparisonAction.
    • Selecione Aceitar ou Rejeitar para cada alteração.
  • Chame o método ApplyChanges() para obter o documento resultante com as alterações aceitas.

O trecho de código a seguir compara dois documentos PDF e, em seguida, aceita uma alteração identificada e rejeita outra usando C#.

/*
 * Aceite e rejeite as alterações identificadas comparando documentos PDF usando C#
 */
using (Comparer comparer = new Comparer(@"path/document-1.pdf"))
{
    comparer.Add(@"path/document-2.pdf");
    comparer.Compare();
    ChangeInfo[] changes = comparer.GetChanges();
    
    // Rejeitando a primeira alteração identificada e ela não será adicionada ao documento de resultado
    changes[0].ComparisonAction = ComparisonAction.Reject;
    comparer.ApplyChanges(@"path/rejected-change-result.pdf", new ApplyChangeOptions { Changes = changes, SaveOriginalState = true });

    changes = comparer.GetChanges();
    changes[0].ComparisonAction = ComparisonAction.Accept;
    comparer.ApplyChanges(@"path/accepted-change-result.pdf", new ApplyChangeOptions { Changes = changes });
}

Compare mais de dois arquivos PDF usando C#

Da mesma forma, você pode comparar mais de dois documentos. A seguir estão as etapas que comparam vários documentos PDF quanto a diferenças e destacam as alterações identificadas.

  • Carregue os primeiros arquivos PDF usando a classe Comparer.
  • Adicione outro(s) documento(s) ao Comparer usando o método Add().
  • Compare todos os arquivos PDF usando o método Compare() e obtenha as alterações e o resumo das alterações.

O exemplo a seguir mostra como comparar vários arquivos PDF em C# e obter as alterações no documento resultante.

/*
 * Compare vários documentos PDF usando C#
 */
using (Comparer comparer = new Comparer(@"path/document-1.pdf"))
{
    comparer.Add(@"path/document-2.pdf");
    comparer.Add(@"path/document-3.pdf");
    comparer.Add(@"path/document-4.pdf");

    comparer.Compare(@"path/compare-result.pdf");
}

Comparar documentos PDF protegidos por senha usando C#

Você pode comparar os arquivos protegidos por senha apenas fornecendo suas senhas ao carregar esses documentos. As etapas a seguir mostram como podemos comparar o conteúdo PDF de documentos protegidos por senha usando C#.

  • Prepare as opções de carregamento para documentos de origem e destino, fornecendo a senha.
  • Carregue o documento de origem usando a classe Comparer.
  • Adicione o documento de destino ao Comparer usando as opções de carregamento preparadas.
  • Obtenha o resumo das diferenças chamando o método Compare().

O exemplo a seguir compara dois arquivos PDF protegidos por senha e destaca as diferenças identificadas em um documento separado usando C#.

/*
 * Comparar documentos PDF protegidos por senha usando C#
 */
using (Comparer comparer = new Comparer(@"path/protected-document-1.pdf", new LoadOptions(){ Password = "SourceFilePassword" }))
{
    comparer.Add(@"path/protected-document-2.pdf", new LoadOptions() { Password = "TargetFilePassword" });
    comparer.Compare(@"path/compared-protected-docs-result.pdf");
}

Obtenha uma licença de API gratuita

Você pode obter uma licença temporária gratuita para usar a API sem as limitações de avaliação.

Conclusão

Para concluir, aprendemos como comparar dois ou mais arquivos PDF usando C#. Além disso, destacamos as diferenças e aceitamos ou rejeitamos programaticamente as alterações identificadas. Por último, vimos como comparar documentos PDF protegidos por senha em aplicativos .NET.

Várias outras personalizações estão disponíveis para controlar os resultados da comparação. Você pode definir a sensibilidade da comparação, mostrar apenas a página de resumo, ignorar lacunas etc. Saiba mais sobre GroupDocs.Comparison for .NET na documentação. Você pode criar seus próprios aplicativos de comparação de documentos para vários formatos de documento. Para dúvidas, entre em contato conosco através do fórum.

Veja também