O GroupDocs.Comparison for .NET é uma biblioteca C# que permite comparar documentos e encontrar diferenças. Compare e mescle Microsoft Word, Excel, PowerPoint, OpenDocument, PDF, Text, HTML e muitos outros documentos, recupere uma lista de alterações entre documentos de origem e de destino, aplique ou rejeite alterações e salve resultados com GroupDocs .API de comparação. Além disso, GroupDocs.Comparison pode identificar alterações de estilo e formatação - como negrito, itálico, sublinhados, tachados, tipos de fonte, etc.

Os algoritmos de detecção de alterações usados pelo GroupDocs.Comparison permitem detectar diferenças em diferentes partes e blocos do documento:

  • Blocos de texto - parágrafos, palavras e caracteres;
  • Tabelas;
  • Imagens;
  • Formas etc

Aqui estão etapas simples para comparar dois arquivos de texto e mostrar as diferenças:

  • Instanciar o objeto Comparer com o caminho ou fluxo do documento de origem;
  • Chame o método Add e especifique o caminho ou fluxo do documento de destino;
  • Chame o método Compare.

O trecho de código a seguir demonstra o caso mais simples de comparação de documentos usando algumas linhas de código.

Comparar documentos do arquivo local

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare(“result.docx”);
}

Comparar documentos do stream

using (Comparer comparer = new Comparer(File.OpenRead(“source.docx”)))
{
    comparer.Add(File.OpenRead(“target.docx”));
    comparer.Compare(File.Create(“result.docx”));
}

Digamos que você tenha dois contratos no formato DOCX que foram celebrados em anos diferentes. Se você usar o código acima para comparar esses contratos, obterá um arquivo DOCX onde os elementos excluídos são marcados em vermelho, os adicionados em azul e os modificados em verde, conforme mostrado abaixo:

Aceitar ou Rejeitar as diferenças detectadas

GroupDocs.Comparison fornece a capacidade de aplicar ou descartar alterações específicas entre documentos de origem e de destino e salvar o documento resultante com (ou sem) alterações selecionadas.

A seguir estão as etapas para aplicar/rejeitar alterações no documento resultante.

O exemplo de código a seguir mostra como aceitar/rejeitar as diferenças detectadas.

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare();
    ChangeInfo[] changes = comparer.GetChanges();
    changes[0].ComparisonAction = ComparisonAction.Reject;
    comparer.ApplyChanges(File.Create(“result.docx”), new SaveOptions(), new ApplyChangeOptions() { Changes = changes });
}

Gerar visualização de páginas do documento

GroupDocs.Comparison permite gerar visualizações de página para documentos de origem, destino e resultante(s) usando o método GeneratePreview de uma classe Document.

A classe PreviewOptions é usada para gerenciar o processo de geração de visualização - especifique os números de página desejados, o formato da imagem etc.

A seguir estão as etapas para gerar uma visualização de documento com a API GroupDocs.Comparison:

  • Crie uma nova instância da classe Comparer e passe o caminho do documento de origem como um parâmetro do construtor;
  • Adicione o(s) documento(s) de destino à comparação usando o método Add;
  • As propriedades Source e Targets do objeto Comparer permitem acessar documentos de origem e destino e fornecem o método GeneratePreview;
  • Instancie o objeto PreviewOptions com:
    • delegado para cada criação de fluxo de página (consulte o manipulador de eventos CreatePageStream);
    • formato de visualização da imagem - PNG / JPG / BMP;
    • números de página a serem processados;
    • tamanho personalizado das imagens de visualização (se necessário).
  • Chame o método GeneratePreview do documento Source e Targets e passe PreviewOptions para ele.

Obtenha visualizações de página para o documento resultante

using (Comparer comparer = new Comparer(“source.docx”))
{
    comparer.Add(“target.docx”);
    comparer.Compare(“result.docx”);
    Document document = new Document(File.OpenRead(“result.docx”));
    PreviewOptions previewOptions = new PreviewOptions(pageNumber =>
    {
        var pagePath = Path.Combine(“C:\\”, $"result\_{pageNumber}.png");
        return File.Create(pagePath);
    });
    previewOptions.PreviewFormat = PreviewFormats.PNG;
    previewOptions.PageNumbers = new int[] { 1, 2 };
    document.GeneratePreview(previewOptions);
}

Comparar vários documentos

GroupDocs.Comparison permite comparar mais de dois documentos. O exemplo de código a seguir mostra como comparar vários documentos programaticamente.

using (Comparer comparer = new Comparer(“source.docx”)
{
    comparer.Add(“target1.docx”);
    comparer.Add(“target2.docx”);
    comparer.Add(“target3.docx”);
    comparer.Compare(“result.docx”);
}

Instalação

NuGet é a maneira mais fácil de baixar e instalar GroupDocs.Comparison for .NET. Por favor obtenha uma licença temporária para testar a biblioteca sem quaisquer restrições funcionais.

Verifique a documentação para saber mais sobre a biblioteca. Também oferecemos suporte técnico gratuito, portanto, sinta-se à vontade para contatar-nos - teremos prazer em ajudar.