Introdução
Seja você quem trabalha com contratos, políticas internas, especificações técnicas ou textos de marketing, o padrão é o mesmo: você vai acumulando rapidamente várias versões .docx e em algum momento precisa ver exatamente o que mudou entre elas. O diálogo Compare nativo do Word serve para uma verificação manual ocasional, mas não ajuda muito quando a comparação passa a fazer parte de um processo regular ou precisa ser automatizada no servidor.
GroupDocs.Comparison for .NET permite executar essa comparação a partir do código e gerar o resultado no formato que seus revisores preferem. A biblioteca oferece dois modos de saída de comparação para documentos Word:
- Modo de revisão — as diferenças são gravadas como marcação de revisão (track‑changes) do Word. Os revisores abrem o arquivo, veem os controles familiares Review → Accept / Reject e trabalham nas alterações uma a uma.
- Modo de destaque — textos inseridos, excluídos e modificados são exibidos com realces coloridos diretamente no corpo do documento, de modo que as diferenças ficam visíveis de imediato enquanto você lê o texto final.
Neste artigo percorreremos ambas as abordagens com exemplos práticos em C#, exploraremos a classe WordCompareOptions e suas propriedades, e discutiremos quando cada modo faz mais sentido.
Pré-requisitos
Antes de começar:
- .NET 6.0 ou superior.
- GroupDocs.Comparison for .NET — instale via NuGet:
dotnet add package GroupDocs.Comparison
- Um arquivo de licença (
GroupDocs.Comparison.lic). Sem ele a biblioteca funciona em modo de avaliação com marca d’água e limites de tamanho. Você pode solicitar uma licença temporária para testes. - Dois arquivos Word para comparar — chamaremos eles de
source.docxetarget.docx. Exemplo de conteúdo:
source.docx |
target.docx |
|---|
Método 1: Comparação com Controle de Revisões
Quando usar: os revisores precisam aceitar ou rejeitar cada mudança individualmente no Microsoft Word usando as ferramentas nativas Review → Accept / Reject — por exemplo, durante negociações de contrato ou ciclos de aprovação de políticas.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
var options = new WordCompareOptions
{
DetectStyleChanges = true,
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
};
comparer.Compare("result_revision.docx", options);
}
Documento resultante em modo de revisão (track changes):
O que acontece nos bastidores:
ComparisonDisplayMode.Revisionsindica ao motor que ele deve gerar a marcação nativa de controle de alterações do Word.DetectStyleChanges = truefaz com que a comparação detecte diferenças de formatação (negrito, tamanho de fonte, cor) além das edições de texto.- O arquivo de saída abre no Microsoft Word com o painel Review pronto — todas as inserções, exclusões e ajustes de estilo são listados e podem ser aceitos ou rejeitados.
Como o modo de revisão não precisa re‑renderizar o conteúdo do documento — ele simplesmente anexa metadados de revisão — costuma ser o mais rápido dos dois modos.
Método 2: Comparação no Modo de Destaque
Quando usar: as partes interessadas desejam um documento limpo que mostre claramente o que mudou, mas não precisam percorrer cada revisão individualmente. Um cenário típico é um gestor que abre a última versão no Word e rapidamente verifica inserções e exclusões destacadas para entender o impacto da atualização.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
var options = new WordCompareOptions
{
DetectStyleChanges = true,
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Highlight
};
comparer.Compare("result_highlighted.docx", options);
}
Documento resultante em modo de destaque:
O que acontece nos bastidores:
ComparisonDisplayMode.Highlightrenderiza as diferenças como realces de cor embutidos — vermelho para exclusões, verde para inserções, azul para mudanças de estilo (cores padrão que podem ser ajustadas através deWordCompareOptions/CompareOptionse seus respectivosStyleSettings).- O documento está pronto para leitura ou impressão sem etapas adicionais.
- Nenhum metadado de controle de alterações é adicionado ao arquivo.
O modo de destaque realiza mais trabalho internamente porque precisa modificar o conteúdo real do documento e aplicar formatação. Em arquivos grandes você pode notar uma diferença de desempenho significativa em comparação ao modo de revisão.
Explorando WordCompareOptions
Ambos os exemplos acima utilizam WordCompareOptions — uma classe que herda configurações comuns de CompareOptions e adiciona propriedades específicas para documentos Word. Por meio desse tipo você controla o modo de exibição (DisplayMode), se as alterações de estilo são rastreadas (DetectStyleChanges), qual nome de autor aparece nas revisões (RevisionAuthorName), como quebras de linha, marcadores etc.
Além disso, a classe base CompareOptions expõe estilos para itens inseridos, excluídos e modificados (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle), permitindo ajustar cores e formatação dos realces quando necessário.
A seguir, um pequeno exemplo de configuração de opções para uma verificação apenas de texto no modo de revisão:
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
DetectStyleChanges = false,
RevisionAuthorName = "QA Bot",
CompareBookmarks = true
};
Obtendo Alterações Programaticamente
Independentemente do modo de saída que você escolher (revisões ou destaque), você pode sempre obter uma lista estruturada das diferenças detectadas via a API comum Comparer.GetChanges. Esse método funciona para Word e todos os demais formatos suportados.
using (var comparer = new Comparer("source.docx"))
{
comparer.Add("target.docx");
comparer.Compare("result_revision.docx");
var changes = comparer.GetChanges(); // returns ChangeInfo[]
}
Isso é útil quando você precisa pós‑processar as alterações no seu próprio fluxo de trabalho — por exemplo, gerar um relatório HTML customizado, enviar as diferenças para um sistema de revisão ou agregar estatísticas sobre as edições. Veja a referência oficial da API para mais detalhes: Comparer.GetChanges.
Trabalhando com Documentos Protegidos por Senha
Se os documentos estiverem protegidos por senha, ainda podem ser comparados: a senha é passada via LoadOptions ao criar o Comparer. Essa abordagem funciona da mesma forma para Word, PDF e outros formatos suportados.
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;
using (var comparer = new Comparer("source_protected.docx",
new LoadOptions { Password = "secret" }))
{
comparer.Add("target_protected.docx");
var options = new WordCompareOptions
{
DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions
};
comparer.Compare("result_protected.docx", options);
}
Obtenha um Teste Gratuito
Você pode baixar o GroupDocs.Comparison for .NET na página oficial de lançamentos. Para testes sem restrições, solicite uma licença temporária — sem necessidade de cartão de crédito.
Perguntas Frequentes
P: Preciso ter o Microsoft Word ou o Office instalados no servidor?
R: Não. O GroupDocs.Comparison é uma biblioteca .NET independente; ele lê e grava arquivos DOCX por conta própria.
P: Posso comparar documentos em outros formatos além do Word?
R: Sim — a biblioteca suporta PDFs, planilhas Excel, apresentações, arquivos de texto simples e muitos outros. A lista completa está na documentação.
P: O que acontece se eu não definir uma licença?
R: A biblioteca funciona em modo de avaliação. Os documentos de saída conterão uma marca d’água e somente as primeiras páginas serão processadas. Uma licença temporária remove essas restrições para testes.
P: Posso personalizar as cores de realce?
R: As cores padrão atendem à maioria dos casos. Para controle avançado de estilo, verifique a propriedade StyleSettings em CompareOptions.
Conclusão
O GroupDocs.Comparison for .NET oferece duas maneiras eficientes de comparar documentos Word a partir do código. O modo de revisão integra-se diretamente ao fluxo de revisão que sua equipe já usa; o modo de destaque fornece um resumo visual imediato para quem só precisa ver as mudanças. A classe WordCompareOptions permite afinar a saída — desde detecção de estilo e atribuição de autor até comparação de marcadores e propriedades do documento.
Escolha o modo que melhor se adapta ao seu cenário, ou gere ambos e deixe cada público escolher a visualização preferida.