Search Results for

    Show / Hide Table of Contents

    Compare Documents

    Namespace: Clippit

    Compare two Word documents and produce a result document with tracked revisions showing the differences. Consolidate multiple revised documents against an original, or extract a list of revisions from a comparison result.

    public static class WmlComparer {
        public static WmlDocument Compare(
            WmlDocument source1, WmlDocument source2, WmlComparerSettings settings)
        {...}
    
        public static WmlDocument Consolidate(
            WmlDocument original,
            List<WmlRevisedDocumentInfo> revisedDocumentInfoList,
            WmlComparerSettings settings)
        {...}
    
        public static List<WmlComparerRevision> GetRevisions(
            WmlDocument source, WmlComparerSettings settings)
        {...}
    }
    

    Compare

    Compares two Word documents and returns a new document containing tracked revisions (insertions and deletions) that represent the differences between source1 and source2. The comparison operates at the word level by default, using WordSeparators from WmlComparerSettings to split text into tokens.

    Consolidate

    Merges multiple revised versions of a document against a common original. Each revised document is provided with a revisor name and color via WmlRevisedDocumentInfo. The result contains tracked revisions from all revisors. By default, revisions are wrapped in a comparison table (controlled by WmlComparerConsolidateSettings.ConsolidateWithTable).

    GetRevisions

    Extracts a flat list of WmlComparerRevision objects from a document that contains tracked revisions (typically the output of Compare or Consolidate). Each revision includes the revision type (Inserted or Deleted), text content, author, and date.

    WmlComparerSettings

    Property Type Default
    WordSeparators char[] [' ', '-', ')', '(', ';', ',']
    AuthorForRevisions string "Open-Xml-PowerTools"
    DateTimeForRevisions string DateTime.Now.ToString("o")
    DetailThreshold double 0.15
    CaseInsensitive bool false
    CultureInfo CultureInfo null
    LogCallback Action<string> null
    StartingIdForFootnotesEndnotes int 1
    DebugTempFileDi DirectoryInfo null

    Compare Sample

    var source1 = new WmlDocument("Original.docx");
    var source2 = new WmlDocument("Revised.docx");
    
    var settings = new WmlComparerSettings
    {
        AuthorForRevisions = "Comparison Tool",
        DetailThreshold = 0.15
    };
    
    var comparedDoc = WmlComparer.Compare(source1, source2, settings);
    comparedDoc.SaveAs("Comparison.docx");
    

    Consolidate Sample

    var original = new WmlDocument("Original.docx");
    
    var revisedDocs = new List<WmlRevisedDocumentInfo>
    {
        new()
        {
            RevisedDocument = new WmlDocument("Revised_Alice.docx"),
            Revisor = "Alice",
            Color = Color.LightBlue
        },
        new()
        {
            RevisedDocument = new WmlDocument("Revised_Bob.docx"),
            Revisor = "Bob",
            Color = Color.LightGreen
        }
    };
    
    var settings = new WmlComparerSettings();
    
    var consolidated = WmlComparer.Consolidate(original, revisedDocs, settings);
    consolidated.SaveAs("Consolidated.docx");
    

    GetRevisions Sample

    var comparedDoc = WmlComparer.Compare(source1, source2, settings);
    
    var revisions = WmlComparer.GetRevisions(comparedDoc, settings);
    foreach (var rev in revisions)
    {
        Console.WriteLine($"{rev.RevisionType}: \"{rev.Text}\" by {rev.Author} on {rev.Date}");
    }
    
    • Edit this page
    In this article
    Back to top Generated by DocFX