Skip to content

Latest commit

 

History

History
521 lines (403 loc) · 18.4 KB

File metadata and controls

521 lines (403 loc) · 18.4 KB
categories
Document Comparison
date 2026-03-06
description GroupDocs.Comparison for .NET kullanarak belge karşılaştırması sırasında hedef meta verilerini nasıl koruyacağınızı öğrenin. C# örnekleriyle adım adım rehber.
keywords preserve target metadata, GroupDocs.Comparison metadata preservation, .NET document comparison, metadata preservation tutorial
lastmod 2026-03-06
linktitle Metadata Preservation Tutorial
tags
GroupDocs.Comparison
metadata-preservation
dotnet-tutorial
document-management
title GroupDocs.Comparison ile Hedef Metaverisini Korumak – .NET Öğreticisi
type docs
url /tr/net/advanced-comparison/groupdocs-comparison-net-metadata-target/
weight 1

GroupDocs.Comparison ile Hedef Üstveriyi Korumak – .NET Öğreticisi

Giriş

İki belgeyi karşılaştırıp süreçte önemli üstveriyi kaybettiğiniz oldu mu? Yalnız değilsiniz. .NET uygulamasında belgeleri karşılaştırırken hedef üstveriyi korumak istediğinizde görev zorlayıcı görünebilir—ama öyle olmak zorunda değil.

GroupDocs.Comparison for .NET, karşılaştırma sonucunda hangi belgenin üstverisinin kalacağını seçmenizi sağlar. Bir belge yönetim sistemi oluşturuyor, yasal sözleşmelerle uğraşıyor ya da işbirlikçi içerik yönetiyorsanız, her seferinde doğru kaynak belgeden gelen üstveriyi elde etmek isteyeceksiniz.

Bu öğreticide hedef üstveriyi koruma yöntemini öğrenecek, yaygın tuzaklardan kaçınacak ve çözümü gerçek dünyadaki senaryolara uygulayacaksınız.

Hızlı Yanıtlar

  • “Hedef üstveriyi korumak” ne anlama gelir? Karşılaştırma sonucu oluşturulurken hedef olarak belirlediğiniz belgeden (author, creation date, custom properties vb.) üstverinin korunması demektir.
  • Hangi GroupDocs.Comparison sürümü gerekir? Sürüm 25.4.0 veya üzeri.
  • Bunu .NET Core ile kullanabilir miyim? Evet – .NET Core 2.0+ veya .NET Framework 4.6.1+.
  • Üretim için lisans gerekli mi? Üretim ortamları için ticari bir lisans gerekir; öğrenme amaçlı ücretsiz deneme sürümü yeterlidir.
  • Özellik PDF ve DOCX ile çalışır mı? Evet – tüm büyük Office ve PDF formatları üstveri korumayı destekler.

Neden Üstveri Koruma Önemlidir

Koda geçmeden önce, hedef üstveriyi korumanın neden kritik olduğuna bakalım. Belge üstverisi sadece “güzel bir ek” değil; çoğu zaman yasal zorunluluk ya da iş kritik bir unsur olur:

  • Yasal belgeler – avukat‑müşteri gizlilik işaretlerini korumalı.
  • Kurumsal dosyalar – uyumluluk etiketleri ve onay zincirleri saklanmalı.
  • Akademik makaleler – yazar atıfları ve revizyon geçmişi hayati.
  • Teknik dokümantasyon – sürüm kontrolü ve inceleme durumu önemli.

Uygun şekilde ele almazsanız, aylarca biriktirdiğiniz bilgileri istemeden silebilirsiniz. İşte hedef üstveriyi koruma seçeneği burada devreye girer.

Önkoşullar

Gerekli Kütüphaneler ve Sürümler

  • GroupDocs.Comparison for .NET: Sürüm 25.4.0 ve üzeri (eski sürümlerde üstveri seçenekleri sınırlıdır).
  • .NET Framework: 4.6.1 ve üzeri, ya da .NET Core 2.0+.

Ortam Kurulumu

  • Visual Studio (ya da tercih ettiğiniz C# IDE).
  • Temel C# bilgisi (çok karmaşık olmayan, söz veriyoruz!).
  • Test için iki örnek belge (Word .docx ideal).

Bilgi Önkoşulları

GroupDocs uzmanı olmanıza gerek yok, ancak şu konularda rahat olmalısınız:

  • C# using ifadeleri ve dosya işleme.
  • Temel belge‑işleme kavramları.
  • Üstverinin ne olduğu (author, title, custom properties vb.).

Hazır mısınız? Hadi kurulum aşamasına geçelim.

GroupDocs.Comparison for .NET Kurulumu

GroupDocs.Comparison’ı kurmak oldukça basit, fakat dikkat etmeniz gereken birkaç nokta var.

Kurulum Seçenekleri

NuGet Package Manager Console (en kolay yöntem):

Install-Package GroupDocs.Comparison -Version 25.4.0

.NET CLI (komut satırını tercih ediyorsanız):

dotnet add package GroupDocs.Comparison --version 25.4.0

İpucu: Projenizde beklenmedik kırılmalardan kaçınmak için her zaman sürümü belirtin.

Lisans Edinimi

Birçok geliştiricinin ilk takıldığı nokta burada. GroupDocs.Comparison ücretsiz değil, fakat seçenekler mevcut:

  • Ücretsiz Deneme – 30 gün tam işlevsellik, değerlendirme için ideal.
  • Geçici Lisans – daha uzun bir deneme süresi gerektiğinde.
  • Ticari Lisans – üretim kullanımı için (çeşitli fiyatlandırma katmanları mevcut).

Şu anda sadece öğreniyorsanız lisans konusunda endişelenmeyin—deneme sürümü hedef üstveriyi koruma özelliklerini içerir.

Temel Kurulum Doğrulaması

Basit bir testle her şeyin çalıştığını kontrol edelim:

using System.IO;
using GroupDocs.Comparison;

string sourceFilePath = "source.docx";
string targetFilePath = "target.docx";

// Initialize the Comparer object.
using (Comparer comparer = new Comparer(sourceFilePath))
{
    // Add the target document for comparison.
    comparer.Add(targetFilePath);
}

Bu kod hatasız derleniyorsa hazırsınız demektir. Derleme hatası alırsanız paket kurulumunu ve using ifadelerini tekrar kontrol edin.

Hedef Üstveriyi Nasıl Korumalıyız

Şimdi esas konuya—belge karşılaştırması sırasında üstveriyi korumaya. İşte GroupDocs.Comparison’ın bu konuda ne kadar güçlü olduğu.

Üstveri Akışını Anlamak

Tipik bir karşılaştırmada:

  1. Kaynak belge temel içeriği sağlar.
  2. Hedef belge karşılaştırılacak değişiklikleri içerir.
  3. Çıktı belgesi ikisini birleştirir, ancak üstveri hangi belgeden alınır?

Varsayılan olarak GroupDocs.Comparison, kaynak belgenin üstverisini kullanır. Hedef üstveriyi korumak için API’ye açıkça söylemeniz gerekir.

Adım‑Adım Uygulama

Adım 1: Karşılaştırıcı Nesnesini Başlatın

Bu, “baz” belgeyi (karşılaştırdığınız belge) tanımlar:

using (Comparer comparer = new Comparer(sourceFilePath))
{
    // All comparison operations happen within this scope
}

Neden using ifadeleri kullanılır? Büyük belgelerle çalışırken kaynakların otomatik olarak serbest bırakılmasını sağlar, hafıza sızıntılarını önler. 50 MB Word dosyalarıyla uğraşırken size çok teşekkür eder.

Adım 2: Hedef Belgeyi Ekleyin

Karşılaştırıcıya, analiz etmek istediğiniz değişikliklerin bulunduğu belgeyi belirtin:

comparer.Add(targetFilePath);

Yaygın hata: Kaynak ve hedefi karıştırmak. Şöyle düşünün—kaynak “orijinal”, hedef “güncellenmiş sürüm”.

Adım 3: Üstveri Tipini Belirleyin (Büyü Burada Başlar)

Çıktıda hangi belgenin üstverisinin kalacağını belirtin:

comparer.Compare(outputFileName, new SaveOptions() { CloneMetadataType = MetadataType.Target });

Ne oluyor? CloneMetadataType = MetadataType.Target ifadesi, GroupDocs.Comparison’a “Hedef belgenin üstverisini nihai sonuçta tut” diyor.

Tam Çalışan Örnek

Her şeyi bir araya getiren çalıştırılabilir program:

using System;
using System.IO;
using GroupDocs.Comparison;
using GroupDocs.Comparison.Options;

class Program
{
    static void Main(string[] args)
    {
        try
        {
            string sourceFile = "original_document.docx";
            string targetFile = "updated_document.docx";
            string outputFile = "comparison_result.docx";
            
            using (Comparer comparer = new Comparer(sourceFile))
            {
                comparer.Add(targetFile);
                
                // Preserve target document metadata
                comparer.Compare(outputFile, new SaveOptions() 
                { 
                    CloneMetadataType = MetadataType.Target 
                });
                
                Console.WriteLine($"Comparison completed! Check {outputFile}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error during comparison: {ex.Message}");
        }
    }
}

Kaçınılması Gereken Yaygın Tuzaklar

Dosya Yolu Sorunları – her zaman tam yol kullanın ya da dosyalarınızın çalışma dizininde olduğundan emin olun:

// Good
string sourceFile = Path.Combine(Directory.GetCurrentDirectory(), "docs", "source.docx");

// Risky (might work locally but fail in production)
string sourceFile = "source.docx";

Bellek Yönetimi – büyük belgeler için Comparer nesnelerini using içinde tutun.

Sürüm Uyumluluğu – farklı GroupDocs.Comparison sürümleri farklı üstveri seçenekleri sunar—en iyi sonuç için 25.4.0 ve üzerini tercih edin.

İleri Düzey Üstveri Senaryoları

Hedef mi, Kaynak mı Üstveri?

Senaryo Hedef Üstveri Tercih Edilsin Kaynak Üstveri Tercih Edilsin
Güncellenmiş yazar bilgisi gerekli
Orijinal belge yasal önceliğe sahip
Yeni dosyada sadece özel özellikler eklenmiş
“Ana” belgenin geçmişini korumak istiyorsunuz

Birden Fazla Hedef Belgeyle Çalışma

İlk eklediğiniz hedef belgeden üstveri koruyarak birden fazla hedefe karşılaştırma yapabilirsiniz:

using (Comparer comparer = new Comparer(sourceFilePath))
{
    comparer.Add(targetFilePath1);
    comparer.Add(targetFilePath2);
    comparer.Add(targetFilePath3);
    
    // Metadata will come from the first target document
    comparer.Compare(outputFileName, new SaveOptions() 
    { 
        CloneMetadataType = MetadataType.Target 
    });
}

Pratik Uygulamalar ve Kullanım Örnekleri

Hukuki Belge Yönetimi

Hukuk firmaları, sözleşme sürümlerini karşılaştırırken belirli üstveri işaretlerini korumak zorundadır:

// Preserve client metadata from updated contract
using (Comparer comparer = new Comparer("original_contract.docx"))
{
    comparer.Add("client_revised_contract.docx");
    
    comparer.Compare("final_contract_comparison.docx", new SaveOptions() 
    { 
        CloneMetadataType = MetadataType.Target  // Keep client's metadata
    });
}

Akademik ve Araştırma İşbirliği

Birden fazla araştırmacı birlikte çalıştığında, en güncel yazar bilgisinin korunması istenir:

// Keep metadata from the researcher's latest submission
using (Comparer comparer = new Comparer("draft_paper.docx"))
{
    comparer.Add("researcher_updates.docx");
    
    comparer.Compare("paper_comparison.docx", new SaveOptions() 
    { 
        CloneMetadataType = MetadataType.Target  // Preserve researcher metadata
    });
}

Kurumsal Uyumluluk İş Akışları

Düzenlenmiş sektörlerde, uyumluluk üstverisinin korunması kritik öneme sahiptir:

// Preserve compliance tags from updated policy document
using (Comparer comparer = new Comparer("old_policy.docx"))
{
    comparer.Add("compliance_approved_policy.docx");
    
    comparer.Compare("policy_comparison.docx", new SaveOptions() 
    { 
        CloneMetadataType = MetadataType.Target  // Keep compliance metadata
    });
}

Yaygın Sorunların Çözümü

“Dosya Bulunamadı” Hataları

En sık karşılaşılan sorun. Açık kontrollerle hata ayıklayın:

string sourceFile = "source.docx";

// Always check if files exist before comparison
if (!File.Exists(sourceFile))
{
    Console.WriteLine($"Source file not found: {Path.GetFullPath(sourceFile)}");
    return;
}

// Same for target files
if (!File.Exists(targetFile))
{
    Console.WriteLine($"Target file not found: {Path.GetFullPath(targetFile)}");
    return;
}

Büyük Belgelerde Bellek Sorunları

10 MB üzerindeki belgeler için şu iyileştirmeleri düşünün:

// Use explicit disposal for large documents
using (var comparer = new Comparer(sourceFile))
{
    comparer.Add(targetFile);
    
    var saveOptions = new SaveOptions() 
    { 
        CloneMetadataType = MetadataType.Target 
    };
    
    comparer.Compare(outputFile, saveOptions);
    
    // Explicitly clean up
    GC.Collect();
    GC.WaitForPendingFinalizers();
}

İzin ve Erişim Sorunları

Korunan dosyalar ya da ağ paylaşımlarıyla çalışırken:

try
{
    using (var comparer = new Comparer(sourceFile))
    {
        comparer.Add(targetFile);
        comparer.Compare(outputFile, new SaveOptions() 
        { 
            CloneMetadataType = MetadataType.Target 
        });
    }
}
catch (UnauthorizedAccessException ex)
{
    Console.WriteLine("Access denied. Check file permissions.");
    Console.WriteLine($"Details: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine("File I/O error occurred.");
    Console.WriteLine($"Details: {ex.Message}");
}

Performans Düşünceleri ve En İyi Uygulamalar

Bellek Yönetimi

GroupDocs.Comparison hafıza yoğun olabilir. using ifadeleriyle kesin imha sağlayın:

// Good - automatic resource cleanup
using (var comparer = new Comparer(sourceFile))
{
    // comparison logic here
}

// Bad - potential memory leaks
var comparer = new Comparer(sourceFile);
// ... comparison logic
// comparer.Dispose(); // Easy to forget!

Belgeleri Partiler Halinde İşleyin – çok sayıda dosyayı karşılaştırıyorsanız, hafıza kullanımını düşük tutmak için onları daha küçük gruplara ayırın.

Daha İyi Yanıt Verebilmek İçin Async İşlemler

Masaüstü ya da web uygulamaları için karşılaştırmayı async bir metoda sarın:

public async Task<bool> CompareDocumentsAsync(string source, string target, string output)
{
    return await Task.Run(() =>
    {
        try
        {
            using (var comparer = new Comparer(source))
            {
                comparer.Add(target);
                comparer.Compare(output, new SaveOptions() 
                { 
                    CloneMetadataType = MetadataType.Target 
                });
                return true;
            }
        }
        catch
        {
            return false;
        }
    });
}

Dosya Boyutu Rehberi

  • Küçük (< 1 MB) – doğrudan işleyin.
  • Orta (1‑10 MB) – UI’nın yanıt vermesini sağlamak için ilerleme göstergesi ekleyin.
  • Büyük (> 10 MB) – mutlaka async işleme kullanın ve yukarıda gösterildiği gibi açık GC çağrısı düşünün.

Daha Büyük Sistemlerle Entegrasyon

ASP.NET Core Entegrasyonu

Aşağıda iki dosya yükleyip karşılaştırma yapan ve hedef üstveriyi koruyarak sonucu döndüren hazır bir denetleyici yer alıyor:

[ApiController]
[Route("api/[controller]")]
public class DocumentComparisonController : ControllerBase
{
    [HttpPost("compare-with-target-metadata")]
    public async Task<IActionResult> CompareWithTargetMetadata(
        IFormFile sourceFile, 
        IFormFile targetFile)
    {
        var tempSource = Path.GetTempFileName();
        var tempTarget = Path.GetTempFileName();
        var outputPath = Path.GetTempFileName();
        
        try
        {
            // Save uploaded files temporarily
            await sourceFile.CopyToAsync(new FileStream(tempSource, FileMode.Create));
            await targetFile.CopyToAsync(new FileStream(tempTarget, FileMode.Create));
            
            // Perform comparison with target metadata preservation
            using (var comparer = new Comparer(tempSource))
            {
                comparer.Add(tempTarget);
                comparer.Compare(outputPath, new SaveOptions() 
                { 
                    CloneMetadataType = MetadataType.Target 
                });
            }
            
            // Return comparison result
            var resultBytes = await System.IO.File.ReadAllBytesAsync(outputPath);
            return File(resultBytes, "application/vnd.openxmlformats-officedocument.wordprocessingml.document", 
                       "comparison_result.docx");
        }
        finally
        {
            // Clean up temporary files
            if (System.IO.File.Exists(tempSource)) System.IO.File.Delete(tempSource);
            if (System.IO.File.Exists(tempTarget)) System.IO.File.Delete(tempTarget);
            if (System.IO.File.Exists(outputPath)) System.IO.File.Delete(outputPath);
        }
    }
}

Sık Sorulan Sorular

S: Birden fazla hedef belgeden üstveri koruyabilir miyim?
C: Birden fazla hedef dosya eklediğinizde, GroupDocs.Comparison ilk eklenen hedef belgenin üstverisini kullanır. İstediğiniz üstveriye sahip belgeyi ilk ekleyin.

S: Hedef belge bazı üstveri alanlarına sahip değilse ne olur?
C: Yalnızca hedefte mevcut olan üstveri kopyalanır. Eksik alanlar göz ardı edilir; karşılaştırma sorunsuz devam eder.

S: Şifre korumalı belgeler nasıl işlenir?
C: Şifreyi içeren bir LoadOptions nesnesi oluşturup Comparer yapıcısına geçirin:

var loadOptions = new LoadOptions() { Password = "your_password" };
using (var comparer = new Comparer(sourceFile, loadOptions))
{
    // comparison logic here
}

S: Sadece seçili üstveri özelliklerini korumak mümkün mü?
C: Mevcut API, seçilen kaynaktan (Target veya Source) tüm üstveriyi korur. Daha ince kontrol için karşılaştırma sonrası özellikleri çıkartıp manuel olarak yeniden uygulamanız gerekir.

S: Hangi belge formatları üstveri korumayı destekler?
C: DOCX, PDF, PPTX, XLSX ve birçok başka yaygın iş formatı üstveri korumayı destekler. Tam liste için resmi dokümantasyona bakın.

S: Sorun yaşarsam nereden yardım alabilirim?
C: Topluluk desteği için GroupDocs Support Forum adresini ziyaret edin, ya da ticari lisansınız varsa doğrudan GroupDocs destek ekibiyle iletişime geçin.

Ek Kaynaklar


Son Güncelleme: 2026-03-06
Test Edilen Sürüm: GroupDocs.Comparison 25.4.0 for .NET
Yazar: GroupDocs