Introduzione

Che tu lavori con contratti, politiche interne, specifiche tecniche o testi di marketing, lo schema è lo stesso: accumuli rapidamente diverse versioni .docx e a un certo punto devi capire cosa è cambiato esattamente tra di esse. La finestra di dialogo Confronta integrata in Word è sufficiente per un controllo manuale occasionale, ma non aiuta molto quando il confronto diventa parte di un processo regolare o deve essere automatizzato sul server.

GroupDocs.Comparison for .NET ti consente di eseguire quel confronto da codice e produrre il risultato nel formato preferito dai revisori. La libreria supporta due modalità di output per i documenti Word:

  1. Modalità revisione — le differenze sono scritte come markup di revisione (track‑changes) di Word. I revisori aprono il file, vedono i familiari controlli Revisione → Accetta / Rifiuta e lavorano sulle modifiche una per una.
  2. Modalità evidenziazione — il testo inserito, cancellato e modificato viene visualizzato con evidenziazioni colorate direttamente nel corpo del documento, così le differenze sono visibili a colpo d’occhio durante la lettura del testo finale.

In questo articolo percorreremo entrambe le approcci con esempi funzionanti in C#, esploreremo la classe WordCompareOptions e le sue proprietà, e discuteremo quando ha più senso ciascuna modalità.

Prerequisiti

Prima di iniziare:

  • .NET 6.0 o versioni successive.
  • GroupDocs.Comparison for .NET — installa via NuGet:
dotnet add package GroupDocs.Comparison
  • Un file di licenza (GroupDocs.Comparison.lic). Senza di esso la libreria funziona in modalità valutazione con filigrane e limiti di dimensione. Puoi richiedere una licenza temporanea per i test.
  • Due file Word da confrontare — li chiameremo source.docx e target.docx. Esempio di contenuto:
source.docx target.docx

Metodo 1: Confronto con Revision‑Track

Quando usarlo: i revisori devono accettare o rifiutare ogni modifica singolarmente in Microsoft Word usando gli strumenti integrati Revisione → Accetta / Rifiuta — ad esempio durante negoziazioni contrattuali o cicli di approvazione delle politiche.

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 risultante in modalità revisione (track changes):

Risultato del confronto in modalità revisione (track changes)

Cosa succede dietro le quinte:

  • ComparisonDisplayMode.Revisions indica al motore di generare markup nativo di track‑changes di Word.
  • DetectStyleChanges = true fa sì che il confronto rilevi anche le differenze di formattazione (grassetto, dimensione del carattere, colore) oltre alle modifiche testuali.
  • Il file di output si apre in Microsoft Word con il riquadro Revisione pronto — ogni inserimento, cancellazione e modifica di stile è elencata e può essere accettata o rifiutata.

Poiché la modalità revisione non necessita di rieseguire il rendering del contenuto del documento — si limita ad aggiungere metadata di revisione — tende a essere la più veloce delle due modalità.


Metodo 2: Confronto in Modalità Evidenziazione

Quando usarlo: gli stakeholder desiderano un documento pulito che mostri chiaramente cosa è cambiato, ma non hanno bisogno di gestire ogni singola revisione. Uno scenario tipico è un manager che apre l’ultima versione in Word e scansiona rapidamente le evidenziazioni di inserimenti e cancellazioni per capire l’impatto dell’aggiornamento.

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 risultante in modalità evidenziazione:

Risultato del confronto in modalità evidenziazione

Cosa succede dietro le quinte:

  • ComparisonDisplayMode.Highlight rende le differenze come evidenziazioni colorate in linea — rosso per le cancellazioni, verde per le inserzioni, blu per le modifiche di stile (colori predefiniti che possono essere regolati tramite WordCompareOptions / CompareOptions e le relative StyleSettings).
  • Il documento è pronto per la lettura o la stampa senza passaggi aggiuntivi.
  • Nessun metadata di track‑changes viene aggiunto al file.

La modalità evidenziazione richiede più lavoro internamente perché deve modificare il contenuto reale del documento e applicare la formattazione. Per file di grandi dimensioni potresti notare una differenza di prestazioni significativa rispetto alla modalità revisione.


Esplorare WordCompareOptions

Entrambi gli esempi sopra utilizzano WordCompareOptions — una classe che eredita le impostazioni comuni da CompareOptions e aggiunge proprietà specifiche per i documenti Word. Attraverso questo tipo controlli la modalità di visualizzazione (DisplayMode), se tracciare le modifiche di stile (DetectStyleChanges), quale nome autore compare sulle revisioni (RevisionAuthorName), come gestire interruzioni di riga, segnalibri, ecc.

In più, la classe base CompareOptions espone stili per elementi inseriti, cancellati e modificati (InsertedItemStyle, DeletedItemStyle, ChangedItemStyle), così puoi affinare colori e formattazione delle evidenziazioni quando necessario.

Ecco un piccolo esempio di configurazione delle opzioni per un controllo solo testuale in modalità revisione:

var options = new WordCompareOptions
{
    DisplayMode = WordCompareOptions.ComparisonDisplayMode.Revisions,
    DetectStyleChanges = false,
    RevisionAuthorName = "QA Bot",
    CompareBookmarks = true
};

Ottenere le modifiche programmaticamente

Indipendentemente dalla modalità di output scelta (revisioni o evidenziazione), è sempre possibile ottenere un elenco strutturato delle differenze rilevate tramite l’API comune Comparer.GetChanges. Questo metodo funziona per Word e per tutti gli altri formati supportati.

using (var comparer = new Comparer("source.docx"))
{
    comparer.Add("target.docx");

    comparer.Compare("result_revision.docx");

    var changes = comparer.GetChanges(); // restituisce ChangeInfo[]
}

Questo è utile quando devi post‑processare le modifiche nel tuo workflow — ad esempio per creare un report HTML personalizzato, alimentare le differenze in un sistema di revisione, o aggregare statistiche sulle modifiche. Consulta il riferimento API ufficiale per maggiori dettagli: Comparer.GetChanges.


Lavorare con documenti protetti da password

Se i documenti sono protetti da password, possono comunque essere confrontati: la password viene passata tramite LoadOptions al momento della creazione del Comparer. Questo approccio funziona allo stesso modo per Word, PDF e gli altri formati supportati.

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);
}

Ottieni una prova gratuita

Puoi scaricare GroupDocs.Comparison for .NET dalla pagina ufficiale dei rilasci. Per test senza limitazioni, richiedi una licenza temporanea — non è richiesta alcuna carta di credito.


Domande frequenti

D: È necessario avere Microsoft Word o Office installato sul server?
R: No. GroupDocs.Comparison è una libreria .NET autonoma; legge e scrive file DOCX in maniera indipendente.

D: Posso confrontare documenti in altri formati oltre a Word?
R: Sì — la libreria supporta PDF, fogli Excel, presentazioni, file di testo semplice e molti altri. L’elenco completo è nella documentazione.

D: Cosa succede se non imposto una licenza?
R: La libreria funziona in modalità valutazione. I documenti di output conterranno una filigrana e verranno elaborati solo i primi pagine. Una licenza temporanea rimuove queste restrizioni per i test.

D: Posso personalizzare i colori delle evidenziazioni?
R: I colori predefiniti funzionano per la maggior parte dei casi d’uso. Per un controllo avanzato dello stile, consulta la proprietà StyleSettings su CompareOptions.


Conclusione

GroupDocs.Comparison for .NET ti offre due modi chiari per confrontare documenti Word da codice. La modalità revisione si integra direttamente nel flusso di revisione già utilizzato dal tuo team; la modalità evidenziazione fornisce un riepilogo visivo istantaneo per chi ha solo bisogno di vedere le modifiche. La classe WordCompareOptions ti permette di affinare l’output — dalla rilevazione di stile e attribuzione dell’autore al confronto di segnalibri e proprietà del documento.

Scegli la modalità più adatta al tuo scenario, oppure genera entrambe e lascia che ogni pubblico selezioni la visualizzazione preferita.

Risorse aggiuntive