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
- Compare dois ou mais documentos do Word usando C#
- Comparar documentos do Word usando Stream em C#
- Obter texto das alterações usando C#
- Comparação de propriedades de documentos usando C#
- Comparar documentos do Word protegidos por senha usando C#
- Comparar marcadores em documentos do Word usando C#
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:
- Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem
- Chame o método Add() com o arquivo DOCX de destino para adicionar à comparação
- Repita a etapa acima para adicionar mais arquivos em comparação
- 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");
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:
- Ler arquivo de origem em um objeto Stream
- Ler arquivo de destino em outro objeto Stream
- Crie uma instância da classe Comparer com o objeto Stream de origem
- Chame o método Add() com o objeto Stream de destino para adicionar à comparação
- 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:
- Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem
- Chame o método Add() com o arquivo DOCX de destino para adicionar à comparação
- Repita a etapa acima para adicionar mais arquivos em comparação
- Chame o método Compare()
- Chame o método GetChanges() para obter os detalhes das alterações
- 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:
- Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem
- Chame o método Add() com o arquivo DOCX de destino para adicionar à comparação
- Repita a etapa acima para adicionar mais arquivos em comparação
- Crie uma instância de CompareOptions
- Defina a CompareVariableProperty como true
- Defina a CompareDocumentProperty como true
- 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);
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:
- Crie uma instância da classe LoadOptions
- Forneça a senha para o arquivo de origem
- Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem e LoadOptions
- Chame o método Add() com o caminho do arquivo DOCX de destino e a instância LoadOptions com senha
- Repita a etapa acima para adicionar mais arquivos em comparação
- 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:
- Crie uma instância da classe Comparer com o caminho do arquivo DOCX de origem
- Chame o método Add() com o arquivo DOCX de destino para adicionar à comparação
- Repita a etapa acima para adicionar mais arquivos em comparação
- Crie uma instância de CompareOptions
- Defina o CompareBookmarks como verdadeiro
- 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);
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.