Tutorial perbandingan dokumen C# – membandingkan beberapa dokumen Word secara programatis

Jika Anda perlu membandingkan beberapa dokumen Word dengan cepat dan akurat, tutorial ini menunjukkan secara tepat cara melakukannya dengan GroupDocs.Comparison untuk .NET. Baik Anda sedang meninjau kontrak, melacak revisi, atau mengkonsolidasikan draf dari beberapa penulis, mengotomatisasi perbandingan menghilangkan pemeriksaan manual baris‑per‑baris, mengurangi kesalahan manusia, dan menghasilkan satu laporan yang dipoles yang menyoroti setiap penyisipan, penghapusan, dan modifikasi.

Dalam panduan ini Anda akan menguasai:

  • Memuat file Word dari stream (ideal untuk file yang disimpan di database atau cloud)
  • Menyiapkan GroupDocs.Comparison dalam proyek C# baru
  • Menyesuaikan gaya visual teks yang disisipkan, dihapus, dan diubah
  • Membandingkan sejumlah berapa pun dokumen target dalam satu kali proses
  • Memecahkan masalah umum dan mengoptimalkan kinerja untuk file besar
  • Skenario dunia nyata di mana perbandingan otomatis menghemat jam kerja manual

Jawaban Cepat

  • Perpustakaan apa yang harus saya gunakan? GroupDocs.Comparison untuk .NET.
  • Bisakah saya membandingkan beberapa dokumen Word sekaligus? Ya – tambahkan sebanyak mungkin stream target yang Anda perlukan.
  • Bagaimana cara menyoroti perbedaan di Word? Konfigurasikan CompareOptions dengan StyleSettings khusus.
  • Apakah saya memerlukan lisensi untuk pengembangan? Versi percobaan gratis cukup untuk belajar; lisensi sementara menghapus watermark.
  • Apakah dukungan async tersedia? Ya – bungkus perbandingan dalam Task.Run untuk eksekusi non‑blocking.

Mengapa membandingkan beberapa dokumen Word?

Anda dapat memperoleh tampilan terpadu tunggal dari semua perubahan di setiap versi alih‑alih mengelola laporan terpisah berdampingan. Ini sangat penting ketika banyak peninjau mengedit kontrak yang sama, ketika Anda perlu mengaudit beberapa draf proposal, atau ketika Anda ingin menghasilkan dokumen master yang mencatat setiap amandemen. Dengan menggabungkan perbedaan menjadi satu output, pemangku kepentingan dapat langsung melihat apa yang ditambahkan, dihapus, atau diubah tanpa membuka banyak file.

Cara menyoroti perbedaan dalam dokumen Word

Muat file sumber, tambahkan setiap target, lalu terapkan CompareOptions yang menentukan InsertedItemStyle, DeletedItemStyle, dan ModifiedItemStyle. Hasilnya adalah file Word di mana penyisipan muncul berwarna kuning, penghapusan berwarna merah dengan coretan, dan modifikasi berwarna biru dengan garis bawah, sesuai pedoman merek organisasi Anda.

Jawaban Langsung

GroupDocs.Comparison memungkinkan Anda mengatur gaya visual melalui CompareOptions—Anda menentukan warna, font, dan tipe sorotan untuk konten yang disisipkan, dihapus, dan diubah, kemudian mesin merender gaya tersebut langsung ke dalam dokumen Word output. Langkah konfigurasi tunggal ini membuat perbedaan menjadi jelas bagi peninjau.

Prasyarat

  • Perpustakaan GroupDocs.Comparison (v25.4.0 atau lebih baru) – kompatibel dengan .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5/6/7.
  • Visual Studio (edisi terbaru apa pun) atau IDE C# yang sebanding.
  • Pemahaman dasar tentang aplikasi konsol C#.
  • Satu atau lebih file contoh .docx untuk percobaan.

Menyiapkan GroupDocs.Comparison

Menginstal perpustakaan (cara mudah)

Opsi 1: Package Manager Console

Install-Package GroupDocs.Comparison -Version 25.4.0

Opsi 2: .NET CLI (favorit pribadi saya)

dotnet add package GroupDocs.Comparison --version 25.4.0

Lisensi dibuat sederhana

  • Versi percobaan gratis: Fungsionalitas penuh dengan watermark kecil—sempurna untuk belajar.
  • Lisensi sementara: Menghapus watermark untuk demo; minta kunci gratis dari GroupDocs.
  • Lisensi produksi: Beli lisensi penuh di GroupDocs Purchase.

Perbandingan pertama Anda (gaya hello‑world)

Comparer adalah kelas inti dalam GroupDocs.Comparison yang mengatur pemuatan dokumen, perbandingan, dan pembuatan hasil. Potongan kode ini membuat objek Comparer, memuat dokumen sumber, dan menambahkan satu dokumen target. Anggap ini sebagai penyiapan perbandingan “sebelum dan sesudah”.

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

Implementasi lengkap – langkah demi langkah

Langkah 1: menyiapkan fondasi

Comparer diinstansiasi dengan stream alih‑alih jalur file, memberi Anda fleksibilitas untuk bekerja dengan dokumen yang disimpan di basis data atau diterima melalui jaringan.

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
}

Langkah 2: menambahkan beberapa dokumen target

Sekarang Anda dapat membandingkan beberapa dokumen Word dalam satu kali proses. GroupDocs.Comparison secara cerdas menggabungkan semua perbedaan menjadi satu file hasil.

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

Langkah 3: membuat perbedaan menonjol (gaya khusus)

CompareOptions memungkinkan Anda menentukan perilaku perbandingan dan gaya visual untuk konten yang disisipkan, dihapus, dan diubah. StyleSettings mendefinisikan tampilan visual (warna, font, sorotan) yang diterapkan pada perbedaan dalam dokumen output.

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

Langkah 4: mengeksekusi perbandingan dan menyimpan hasil

Baris tunggal di bawah ini melakukan perbandingan di semua target dan menulis dokumen hasil yang dipoles. Karena kami menggunakan File.Create(), Anda dapat mengganti stream dengan tujuan penyimpanan basis data atau cloud.

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

Masalah umum dan cara mengatasinya

Masalah: kesalahan “File not found”

Selalu pastikan bahwa jalur file yang Anda berikan ke File.OpenRead (atau setara) memang ada dan dapat diakses oleh proses yang berjalan.

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

Masalah: masalah memori dengan dokumen besar

Dispose stream segera menggunakan pernyataan using. GroupDocs.Comparison memproses dokumen dalam potongan, jadi mempertahankan stream terbuka secara tidak perlu dapat meningkatkan penggunaan memori.

// 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
}

Masalah: hasil perbandingan yang tidak terduga

Sesuaikan pengaturan sensitivitas di CompareOptions untuk mengabaikan elemen seperti perubahan header/footer, nomor halaman, atau metadata yang tidak relevan dengan tinjauan Anda.

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

Perbandingan asynchronous untuk aplikasi web

Bungkus pemanggilan perbandingan dalam Task.Run untuk menjaga thread UI tetap responsif dan menghindari pemblokiran pipeline permintaan 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());
        });
    }
}

Tips optimasi kinerja

  • Dispose stream segera setelah digunakan (using blocks).
  • Proses dokumen secara berurutan bila memungkinkan; pemrosesan paralel dapat meningkatkan tekanan memori.
  • Manfaatkan pola async untuk API web guna meningkatkan skalabilitas.
  • Antrian batch besar dengan pekerja latar belakang untuk menghindari throttling server web.
  • Tetap terbaru: GroupDocs.Comparison menerima peningkatan kinerja secara reguler—upgrade ke versi terbaru untuk mendapatkan jejak CPU dan memori yang lebih kecil.

Pertanyaan yang sering diajukan

T: Bagaimana GroupDocs.Comparison menangani format dokumen yang berbeda?
A: Ia mendukung lebih dari 30 format input dan output—termasuk DOCX, PDF, PPTX, XLSX, dan HTML—dan dapat membandingkan file hingga 500 MB tanpa memuat seluruh konten ke memori.

T: Bisakah saya membandingkan dokumen dengan tata letak atau struktur yang berbeda?
A: Ya. Mesin membandingkan konten secara semantik, sehingga perubahan struktural ditangani dengan baik.

T: Bagaimana jika dokumen dilindungi kata sandi?
A: Berikan kata sandi saat membuka stream; perpustakaan akan mendekripsi file untuk perbandingan.

T: Apakah ada batas berapa banyak dokumen yang dapat saya bandingkan sekaligus?
A: Batas praktis adalah memori sistem; pada mesin pengembangan tipikal, membandingkan 5‑10 dokumen besar berjalan dengan baik.

T: Bagaimana saya dapat mengintegrasikan ini ke dalam pipeline CI/CD?
A: Bungkus logika perbandingan dalam aplikasi konsol atau API web, lalu panggil dari skrip build Anda untuk secara otomatis mendeteksi perubahan dokumentasi.

T: Apakah perpustakaan mendukung dokumen multibahasa?
A: Tentu saja. Ia menangani bahasa kanan‑ke‑kiri seperti Arab dan Ibrani, serta set karakter Unicode lengkap.

Sumber daya tambahan untuk pembelajaran lebih mendalam

  • Documentation – referensi API komprehensif dan tutorial lanjutan
  • API reference – dokumentasi detail metode dan properti
  • Download center – rilis terbaru dan changelog
  • Forum komunitas – terhubung dengan pengembang lain dan dapatkan bantuan dari ahli GroupDocs

Terakhir diperbarui: 2026-10-05
Diuji dengan: GroupDocs.Comparison 25.4.0 untuk .NET
Penulis: GroupDocs

Tutorial Terkait