Compare dois ou mais documentos do Word usando C#

Compare dois ou mais documentos do Word usando C#

Você pode comparar facilmente dois ou mais documentos do Word ou comparar várias versões do mesmo arquivo do Word para as diferenças e semelhanças programaticamente em seus aplicativos .NET. Neste artigo, você aprenderá a comparar dois ou mais documentos do Word e destacar as diferenças usando C#.

Os seguintes tópicos são discutidos/abordados neste artigo:

API C# para comparar arquivos DOCX

Para comparar dois ou mais arquivos DOCX, usarei GroupDocs.Comparison for .NET API. Ele compara dois ou mais documentos e descobre as alterações no conteúdo dos documentos para palavras, parágrafos e caracteres. Como resultado, produz um documento de comparação que destaca as diferenças e lista um resumo das diferenças. Também permite detectar alterações e diferenças no estilo de texto entre formatos de documentos semelhantes. A API suporta a comparação de todos os formatos de documentos padrão do setor, como PDF, HTML, Word, Excel, PowerPoint, e-mails do Outlook, diagramas do Visio, OpenDocument, AutoCAD e imagens.

Você pode baixar a DLL da API ou instalá-la usando NuGet.

Install-Package GroupDocs.Comparison

Compare dois ou mais documentos do Word usando C#

Você pode comparar dois ou mais documentos do Word programaticamente seguindo as etapas simples abaixo:

  1. Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem
  2. Chame o método Add() com o arquivo DOCX de destino para adicionar à comparação
  3. Repita a etapa acima para adicionar mais arquivos em comparação
  4. Chame o método Compare() com o caminho do arquivo de saída

O exemplo de código a seguir mostra como comparar dois ou mais documentos do Word e destaca as diferenças usando C#.

// inicializar comparador
Comparer comparer = new Comparer("C:\\Files\\source.docx");

// adicione o arquivo de destino para comparar
comparer.Add("C:\\Files\\target.docx");

// comparar e salvar diferenças
comparer.Compare("C:\\Files\\result.docx");
Arquivos DOCX de origem e destino

Arquivos DOCX de origem e destino

Compare dois ou mais documentos do Word usando C#

Compare dois ou mais documentos do Word usando C#

O documento resultante também inclui uma página de resumo no final do documento que mostra o resumo de todas as alterações encontradas na comparação.

A classe Comparer é a classe principal que permite controlar e executar o processo de comparação. Ele fornece vários métodos para comparar dois ou mais documentos. O método Add() desta classe adiciona um arquivo ao processo de comparação. Você pode facilmente adicionar vários arquivos à comparação usando o método Add() conforme mostrado abaixo:

comparer.Add("target1.docx");
comparer.Add("target2.docx");
comparer.Add("target3.docx");

O método Compare() da classe Comparer compara os documentos de origem e destino. Este método destaca as diferenças e salva os resultados no caminho do arquivo fornecido como parâmetro de entrada.

Comparar documentos do Word usando Stream em C#

Você pode comparar dois ou mais documentos do Word usando o FileStream seguindo as etapas abaixo:

  1. Ler arquivo de origem em um objeto Stream
  2. Ler arquivo de destino em outro objeto Stream
  3. Crie uma instância da classe Comparer com o objeto Stream de origem
  4. Chame o método Add() com o objeto Stream de destino para adicionar à comparação
  5. Chame o método Compare() com o caminho do arquivo de saída

O exemplo de código a seguir mostra como comparar documentos do Word usando FileStream em C#.

// ler arquivos de origem e destino
using (Stream sourceStream = File.OpenRead("C:\\Files\\source.docx"))
using (Stream targetStream = File.OpenRead("C:\\Files\\target.docx"))
{
    // inicializar comparador
    using (Comparer comparer = new Comparer(sourceStream))
    {
        // adicione o fluxo de arquivos de destino para comparar
        comparer.Add(targetStream);

        // comparar e salvar diferenças
        comparer.Compare(File.Create("C:\\Files\\result.docx"));
    }
}

Obter texto das alterações usando C#

Você pode obter o texto das alterações encontradas na comparação de documentos do Word programaticamente seguindo as etapas simples fornecidas abaixo:

  1. Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem
  2. Chame o método Add() com o arquivo DOCX de destino para adicionar à comparação
  3. Repita a etapa acima para adicionar mais arquivos em comparação
  4. Chame o método Compare()
  5. Chame o método GetChanges() para obter os detalhes das alterações
  6. Mostrar as alterações

O exemplo de código a seguir mostra como obter o texto das alterações usando C#.

// inicializar comparador
Comparer compararr = new Comparer("C:\\Files\\source.docx");

// adicione o arquivo de destino para comparar
compararr.Add("C:\\Files\\target.docx");

// comparar
compararr.Compare();

// obter alterações
ChangeInfo[] changes = compararr.GetChanges();

Console.WriteLine("Count of changes: " + changes.Length);

// mostrar mudanças
foreach (ChangeInfo change in changes)
{
    Console.WriteLine("Change Type: " + change.Type + ", Text: " + change.Text);
}
Count of changes: 10
Change Type: Inserted, Text:
Change Type: Inserted, Text:  Company ‼ HYPERLINK "http://www.aspose.com/" ¶Aspose Pty Ltd§ Division GroupDocs
Change Type: Inserted, Text:
Change Type: Inserted, Text: Cool
Change Type: Deleted, Text: test
Change Type: Inserted, Text:
Change Type: Inserted, Text: signatures
Change Type: Inserted, Text:
Change Type: Deleted, Text: Customers
Change Type: Deleted, Text: GroupDocs is used by companies of all sizes across the globe, from large multinational firms to small freelance businesses. They come to us because they have a need for a simple, one-stop-shop, document management solution.

Você pode obter uma lista de alterações entre os arquivos de origem e de destino chamando o método GetChanges() da classe Comparer. Ele retorna uma lista de objetos ChangeInfo. A classe ChangeInfo representa informações sobre as alterações e fornece várias propriedades para obter detalhes das alterações, como Text, Type, etc.

Comparação de propriedades de documentos usando C#

Você pode comparar propriedades internas e personalizadas e propriedades variáveis de documentos do Word programaticamente seguindo as etapas abaixo:

  1. Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem
  2. Chame o método Add() com o arquivo DOCX de destino para adicionar à comparação
  3. Repita a etapa acima para adicionar mais arquivos em comparação
  4. Crie uma instância de CompareOptions
  5. Defina a CompareVariableProperty como true
  6. Defina a CompareDocumentProperty como true
  7. Chame o método Compare() com o caminho do arquivo de saída e CompareOptions

O exemplo de código a seguir mostra como comparar propriedades de documentos usando C#.

// inicializar comparador
Comparer compararr = new Comparer("C:\\Files\\source.docx");

// adicione o arquivo de destino para comparar
compararr.Add("C:\\Files\\target.docx");

// definir opções de comparação
CompareOptions options = new CompareOptions();
options.CompareVariableProperty = true; // activate the comparison of variable properties
options.CompareDocumentProperty = true; // activate the comparison of built and custom properties

// comparar
compararr.Compare("C:\\Files\\result.docx", options);
Comparação de propriedades de documentos usando C#

Comparação de propriedades de documentos usando C#

Você pode aprimorar seu processo de comparação aplicando várias opções de comparação. Para isso, a classe CompareOptions permite definir várias opções de comparação para obter resultados específicos. A CompareDocumentProperty dessa classe permite ativar a comparação de propriedades internas e personalizadas no formato do Word. A CompareVariableProperty permite ativar a comparação de propriedades de variáveis em formato Word.

Comparar documentos do Word protegidos por senha usando C#

Você pode comparar dois ou mais documentos do Word protegidos por senha programaticamente seguindo as etapas abaixo:

  1. Crie uma instância da classe LoadOptions
  2. Forneça a senha para o arquivo de origem
  3. Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem e LoadOptions
  4. Chame o método Add() com o caminho do arquivo DOCX de destino e a instância LoadOptions com senha
  5. Repita a etapa acima para adicionar mais arquivos em comparação
  6. Chame o método Compare() com o caminho do arquivo de saída

O exemplo de código a seguir mostra como comparar documentos do Word protegidos por senha usando C#.

// definir opções de carregamento para o arquivo de origem
LoadOptions sourceLoadOptions = new LoadOptions() { Password = "1234" };

// inicializar comparador
Comparer compararr = new Comparer("C:\\Files\\source.docx", sourceLoadOptions);

// adicione o arquivo de destino para comparar
compararr.Add("C:\\Files\\target.docx", new LoadOptions() { Password = "5678" });

// comparar
compararr.Compare("C:\\Files\\result.docx");

A classe LoadOptions permite especificar opções adicionais ao carregar um documento. Ele fornece as seguintes propriedades para especificar:

  • FontDirectories — Lista de diretórios de fontes a serem carregados.
  • LoadText — Indica que as strings passadas são texto de comparação, não caminhos de arquivo (somente para comparação de texto).
  • Senha — Senha do documento.

Comparar marcadores em documentos do Word usando C#

Você pode comparar os marcadores disponíveis em documentos do Word programaticamente seguindo as etapas abaixo:

  1. Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem
  2. Chame o método Add() com o arquivo DOCX de destino para adicionar à comparação
  3. Repita a etapa acima para adicionar mais arquivos em comparação
  4. Crie uma instância de CompareOptions
  5. Defina o CompareBookmarks como verdadeiro
  6. Chame o método Compare() com o caminho do arquivo de saída e CompareOptions

O exemplo de código a seguir mostra como comparar indicadores em documentos do Word usando C#.

// inicializar comparador
Comparer compararr = new Comparer("C:\\Files\\source.docx");

// adicione o arquivo de destino para comparar
compararr.Add("C:\\Files\\target.docx");

// definir opções de comparação
CompareOptions compararOptions = new CompareOptions();
compararOptions.CompareBookmarks = true; // comparar bookmarks

// comparar
compararr.Compare("C:\\Files\\result.docx", compararOptions);
Comparar marcadores em documentos do Word usando C#

Comparar marcadores em documentos do Word usando C#

A propriedade CompareBookmarks permite comparar os marcadores disponíveis nos documentos de origem e destino.

Obtenha uma licença gratuita

Você pode experimentar a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, você aprendeu como comparar dois ou mais documentos do Word e destacar as diferenças usando C#. Você também aprendeu como obter a lista de alterações destacadas. Além disso, você aprendeu a comparar marcadores em documentos do Word programaticamente. Além disso, você aprendeu a comparar documentos do Word protegidos por senha usando C#. Você pode aprender mais sobre GroupDocs.Comparison for .NET API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também