Návod na porovnání dokumentů v C# – programové porovnání více dokumentů Word

Pokud potřebujete porovnat více dokumentů Word rychle a přesně, tento návod vám přesně ukáže, jak to provést pomocí GroupDocs.Comparison pro .NET. Ať už kontrolujete smlouvy, sledujete revize nebo konsolidujete návrhy od několika autorů, automatizace porovnání eliminuje ruční kontrolu řádek po řádku, snižuje lidské chyby a vytváří jednotnou vylepšenou zprávu, která zvýrazní každé vložení, smazání a úpravu.

V tomto průvodci se naučíte:

  • Načítání souborů Word ze streamů (ideální pro soubory uložené v databázi nebo v cloudu)
  • Nastavení GroupDocs.Comparison v novém projektu C#
  • Přizpůsobení vizuálního stylu vloženého, smazaného a změněného textu
  • Porovnání libovolného počtu cílových dokumentů najednou
  • Řešení běžných problémů a ladění výkonu pro velké soubory
  • Reálné scénáře, kde automatické porovnání šetří hodiny ruční práce

Rychlé odpovědi

  • Jakou knihovnu mám použít? GroupDocs.Comparison for .NET.
  • Mohu porovnat více dokumentů Word najednou? Ano – přidejte tolik cílových streamů, kolik potřebujete.
  • Jak zvýraznit rozdíly ve Wordu? Nakonfigurujte CompareOptions s vlastním StyleSettings.
  • Potřebuji licenci pro vývoj? Bezplatná zkušební verze funguje pro učení; dočasná licence odstraňuje vodoznaky.
  • Je k dispozici podpora async? Ano – zabalte porovnání do Task.Run pro neblokující provedení.

Proč porovnávat více dokumentů Word?

Můžete získat jednotný přehled všech změn napříč všemi verzemi místo toho, abyste se potýkali s oddělenými zprávami vedle sebe. To je zásadní, když více recenzentů upravuje stejnou smlouvu, když potřebujete auditovat několik návrhů nabídek nebo když chcete vytvořit hlavní dokument, který zaznamenává každou úpravu. Sloučením rozdílů do jednoho výstupu mohou zúčastněné strany okamžitě vidět, co bylo přidáno, odebráno nebo změněno, aniž by otevíraly více souborů.

Jak zvýraznit rozdíly v dokumentech Word

Načtěte zdrojový soubor, přidejte každý cíl a poté aplikujte CompareOptions, které určují InsertedItemStyle, DeletedItemStyle a ModifiedItemStyle. Výsledkem je soubor Word, kde jsou vložení zobrazena žlutě, smazání červeně přeškrtnutá a úpravy podtržené modře, v souladu s brandingovými směrnicemi vaší organizace.

Přímá odpověď

GroupDocs.Comparison vám umožňuje nastavit vizuální styly pomocí CompareOptions — definujete barvy, písma a typy zvýraznění pro vložený, smazaný a upravený obsah, poté engine tyto styly přímo vloží do výstupního dokumentu Word. Tento jediný konfigurační krok činí rozdíly pro recenzenty jednoznačnými.

Požadavky

  • GroupDocs.Comparison knihovna (v25.4.0 nebo novější) – kompatibilní s .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5/6/7.
  • Visual Studio (jakékoli recentní vydání) nebo srovnatelný C# IDE.
  • Základní znalost C# konzolových aplikací.
  • Jeden nebo více ukázkových souborů .docx pro experimentování.

Zprovoznění GroupDocs.Comparison

Instalace knihovny (jednoduchý způsob)

Možnost 1: Package Manager Console

Install-Package GroupDocs.Comparison -Version 25.4.0

Možnost 2: .NET CLI (můj osobní favorit)

dotnet add package GroupDocs.Comparison --version 25.4.0

Licencování jednoduše

  • Bezplatná zkušební verze: Plná funkčnost s malým vodoznakem — ideální pro učení.
  • Dočasná licence: Odstraňuje vodoznaky pro demonstrace; požádejte o bezplatný klíč od GroupDocs.
  • Produkční licence: Zakupte plnou licenci na GroupDocs Purchase.

Váš první srovnání (styl hello‑world)

Comparer je hlavní třída v GroupDocs.Comparison, která orchestruje načítání dokumentů, porovnání a generování výsledku.
Tento úryvek vytvoří objekt Comparer, načte zdrojový dokument a přidá jeden cílový dokument. Považujte to za nastavení porovnání „před a po“.

using System;
using GroupDocs.Comparison;

namespace DocumentComparisonApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Initialize comparer with a source document stream
            using (Comparer comparer = new Comparer(File.OpenRead("SOURCE_WORD.docx")))
            {
                // Add target documents to compare
                comparer.Add("TARGET_WORD.docx");
                Console.WriteLine("Documents added for comparison.");
            }
        }
    }
}

Kompletní implementace – krok za krokem

Krok 1: nastavení základu

Comparer je vytvořen s streamem místo cesty k souboru, což vám poskytuje flexibilitu pracovat s dokumenty uloženými v databázích nebo přijatými přes síť.

string documentDirectory = "YOUR_DOCUMENT_DIRECTORY";
using (Comparer comparer = new Comparer(File.OpenRead(System.IO.Path.Combine(documentDirectory, "SOURCE_WORD.docx"))))
{
    // We'll build on this foundation
}

Krok 2: přidání více cílových dokumentů

Nyní můžete porovnat více dokumentů Word v jednom běhu. GroupDocs.Comparison inteligentně sloučí všechny rozdíly do jednoho výstupního souboru.

comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET_WORD.docx")));
comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET2_WORD.docx")));
comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET3_WORD.docx")));

Krok 3: zvýraznění rozdílů (vlastní stylování)

CompareOptions vám umožňuje specifikovat chování porovnání a vizuální stylování pro vložený, smazaný a upravený obsah.
StyleSettings definuje vizuální vzhled (barvu, písmo, zvýraznění) aplikovaný na rozdíly ve výstupním dokumentu.

CompareOptions compareOptions = new CompareOptions()
{
    InsertedItemStyle = new StyleSettings()
    {
        FontColor = System.Drawing.Color.Yellow  // Highlight inserted text in yellow
    }
};

Krok 4: provedení porovnání a uložení výsledků

Jedna řádka níže provádí porovnání napříč všemi cíli a zapíše vylepšený výstupní dokument. Protože používáme File.Create(), můžete stream nahradit cílem v databázi nebo cloudovém úložišti.

string outputDirectory = "YOUR_OUTPUT_DIRECTORY";
string outputFileName = System.IO.Path.Combine(outputDirectory, "RESULT_WORD.docx");
comparer.Compare(File.Create(outputFileName), compareOptions);

Časté problémy a jejich řešení

Problém: chyby „Soubor nenalezen“

Vždy ověřte, že cesty k souborům, které předáváte do File.OpenRead (nebo ekvivalentu), skutečně existují a jsou přístupné z běžícího procesu.

string sourcePath = System.IO.Path.Combine(documentDirectory, "SOURCE_WORD.docx");
if (!File.Exists(sourcePath))
{
    throw new FileNotFoundException($"Source document not found: {sourcePath}");
}

Problém: problémy s pamětí u velkých dokumentů

Okamžitě uvolňujte streamy pomocí using bloků. GroupDocs.Comparison zpracovává dokumenty po částech, takže ponechávání streamů otevřených zbytečně může zvýšit využití paměti.

// Don't do this - keeps all streams in memory
// comparer.Add(File.OpenRead(doc1));
// comparer.Add(File.OpenRead(doc2));

// Do this instead - process one at a time
using (var stream1 = File.OpenRead(doc1))
{
    comparer.Add(stream1);
    // Stream is disposed automatically here
}

Problém: neočekávané výsledky porovnání

Upravte nastavení citlivosti v CompareOptions, aby se ignorovaly prvky jako změny záhlaví/pati, čísla stránek nebo metadata, která nejsou relevantní pro vaši revizi.

CompareOptions options = new CompareOptions()
{
    CompareBookmarks = false,  // Ignore bookmark differences
    CompareComments = false,   // Ignore comment differences
    CompareFields = false      // Ignore field differences
};

Asynchronní porovnání pro webové aplikace

Zabalte volání porovnání do Task.Run, aby UI vlákna zůstala responzivní a aby nedocházelo k blokování pipeline požadavků ASP.NET.

public async Task<string> CompareDocumentsAsync(Stream source, Stream[] targets)
{
    using (var comparer = new Comparer(source))
    {
        foreach (var target in targets)
        {
            comparer.Add(target);
        }
        
        // Perform comparison on background thread
        return await Task.Run(() => 
        {
            var output = new MemoryStream();
            comparer.Compare(output, compareOptions);
            return Convert.ToBase64String(output.ToArray());
        });
    }
}

Tipy pro optimalizaci výkonu

  • Uvolňujte streamy okamžitě po použití (using bloky).
  • Zpracovávejte dokumenty sekvenčně, pokud je to možné; paralelní zpracování může zvýšit zatížení paměti.
  • Využívejte async vzory pro webové API, aby se zlepšila škálovatelnost.
  • Zařaďte velké dávky do fronty pomocí background workeru, aby nedocházelo k přetížení webového serveru.
  • Zůstaňte aktuální: GroupDocs.Comparison pravidelně získává vylepšení výkonu — aktualizujte na nejnovější verzi, abyste těžili z nižšího zatížení CPU a paměti.

Často kladené otázky

Q: Jak GroupDocs.Comparison zachází s různými formáty dokumentů?
A: Podporuje více než 30 vstupních a výstupních formátů — včetně DOCX, PDF, PPTX, XLSX a HTML — a může porovnávat soubory až do 500 MB, aniž by načítala celý obsah do paměti.

Q: Mohu porovnávat dokumenty s různými rozvrženími nebo strukturami?
A: Ano. Engine porovnává obsah sémanticky, takže změny ve struktuře jsou zpracovány elegantně.

Q: Co když jsou dokumenty chráněny heslem?
A: Zadejte heslo při otevírání streamu; knihovna soubor dešifruje pro porovnání.

Q: Existuje limit, kolik dokumentů mohu porovnat najednou?
A: Praktickým limitem je paměť systému; na typickém vývojovém počítači funguje porovnání 5‑10 velkých dokumentů dobře.

Q: Jak mohu toto integrovat do CI/CD pipeline?
A: Zabalte logiku porovnání do konzolové aplikace nebo webového API a poté ji spouštějte ze svých skriptů pro sestavení, aby se automaticky detekovaly změny v dokumentaci.

Q: Podporuje knihovna vícejazykové dokumenty?
A: Rozhodně. Zpracovává jazyky psané zprava doleva, jako arabštinu a hebrejštinu, stejně jako kompletní sady znaků Unicode.

Další zdroje pro hlubší učení

  • Documentation – komplexní reference API a pokročilé návody
  • API reference – podrobná dokumentace metod a vlastností
  • Download center – nejnovější verze a seznam změn
  • Community forums – spojte se s dalšími vývojáři a získejte pomoc od expertů GroupDocs

Poslední aktualizace: 2026-10-05
Testováno s: GroupDocs.Comparison 25.4.0 for .NET
Autor: GroupDocs

Související tutoriály