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
CompareOptionsdenganStyleSettingskhusus. - 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.Rununtuk 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
.docxuntuk 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 (
usingblocks). - 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