ما خوشحالیم که انتشار GroupDocs.Comparison برای .NET 26.5 را اعلام می‌کنیم که از مه 2026 در دسترس است.
نسخه 26.5 از GroupDocs.Comparison بهبودهایی در دقت رندر PDF، خوانایی مقایسه CSV و صفحات گسترده، قابلیت‌های جدید API برای مدیریت بازبینی و متادیتای تغییرات صفحات گسترده، و مدل بسته‌بندی NuGet به‌روز شده با پشتیبانی چند چارچوب ارائه می‌دهد.

اصلاحات و بهبودها

  • [Feature] بسته‌بندی NuGet چند چارچوبی و بسته‌های تقسیم‌شده بر اساس TFM. (COMPARISONNET-4770)
  • [Enhancement] مقایسه PDF: بهبود دقت رندر پاراگراف در حالت Inline. (COMPARISONNET-4751)
  • [Enhancement] بهبود نتایج مقایسه برای اسناد PDF حاوی جدول‌ها. (COMPARISONNET-4763)
  • [Bug] رفع ArgumentOutOfRangeException هنگام مقایسه PDFهایی با جدول‌های استایل‌دار. (COMPARISONNET-4762)
  • [Feature] پشتیبانی از حذف اختیاری جریان (stream) پاس‌داده‌شده در RevisionHandler. (COMPARISONNET-4773)
  • [Enhancement] بهبود خوانایی نتایج مقایسه CSV با نشانگرهای متنی. (COMPARISONNET-4769)
  • [Feature] گسترش ChangeInfo با ویژگی‌های صفحات گسترده. (COMPARISONNET-4767)
  • [Bug] متد Compare برای خروجی HTML استثنا می‌اندازد. (COMPARISONNET-4764)

ویژگی‌های اصلی

بسته‌بندی NuGet چند چارچوبی و بسته‌های تقسیم‌شده بر اساس TFM

GroupDocs.Comparison به مدل پیشرفته‌تری برای تحویل بسته‌های NuGet منتقل شده است. بسته اصلی اکنون هدف net462;net6.0;net8.0;net10.0 را دارد و جایگزین هدف‌های قبلی net462;netstandard2.1 شده است.

علاوه بر این، برای کاهش حجم دانلود، بسته‌های NuGet اختصاصی برای هر چارچوب به‌صورت همزمان با بسته اصلی منتشر می‌شوند. هنگام نصب بسته مخصوص پلتفرم، فقط باینری‌های منطبق با چارچوب هدف کاربر دانلود می‌شود — هیچ اسمبلی غیرقابل استفاده‌ای گنجانده نمی‌شود.

بسته چارچوب هدف
GroupDocs.Comparison net462;net6.0;net8.0;net10.0 (همه چارچوب‌ها)
GroupDocs.Comparison.net462 .NET Framework 4.6.2
GroupDocs.Comparison.net6 .NET 6.0
GroupDocs.Comparison.net8 .NET 8.0
GroupDocs.Comparison.net10 .NET 10.0

نکته: .NET Standard 2.1 دیگر به‌عنوان هدف اختصاصی پشتیبانی نمی‌شود. پروژه‌هایی که پیش‌تر به netstandard2.1 وابسته بودند باید به یکی از TFMs پشتیبانی‌شده در بالا مهاجرت کنند.

پشتیبانی از حذف اختیاری جریان (stream) پاس‌داده‌شده در RevisionHandler

RevisionHandler اکنون پارامتر leaveOpen را می‌پذیرد که کنترل می‌کند آیا جریان زیرین هنگام آزادسازی (dispose) هندلر نیز آزاد شود یا خیر. وقتی leaveOpen برابر true باشد، پس از آزادسازی RevisionHandler، جریان باز می‌ماند و فراخوان می‌تواند به استفاده از آن ادامه دهد. این ویژگی در سناریوهایی مفید است که چرخه حیات جریان به‌صورت خارجی مدیریت می‌شود.

using FileStream revisionFileStream = new FileStream("source.docx", FileMode.Open, FileAccess.ReadWrite);

using (RevisionHandler revisionHandler = new RevisionHandler(revisionFileStream, leaveOpen: true))
{
    List<RevisionInfo> revisionList = revisionHandler.GetRevisions();

    foreach (var rev in revisionList)
    {
        if (rev.Type == RevisionType.Deletion)
            rev.Action = RevisionAction.Accept;
    }

    ApplyRevisionOptions revisionChanges = new ApplyRevisionOptions { Changes = revisionList };
    revisionHandler.ApplyRevisionChanges(resultPath, revisionChanges);
}

گسترش ChangeInfo با ویژگی‌های صفحات گسترده

سه ویژگی جدید به ChangeInfo اضافه شده‌اند تا متادیتای مخصوص صفحات گسترده برای هر تغییر شناسایی‌شده را در اختیار بگذارند. این ویژگی‌ها هنگام مقایسه فایل‌های Excel (.xlsx) و CSV (.csv) پر می‌شوند و به شما امکان می‌دهند هر تغییر را دقیقاً در شبکه صفحه گسترده مکان‌یابی کنید:

  • Row – اندیس ردیف (صفر‑مبنا) سلول تغییر یافته.
  • Column – اندیس ستون (صفر‑مبنا) سلول تغییر یافته.
  • ColumnHeader – متن سرستون ستون حاوی سلول تغییر یافته (در صورت موجود بودن).

مثال زیر نشان می‌دهد چگونه دو فایل CSV را مقایسه کرده و فهرست تغییرات — شامل ویژگی‌های جدید صفحات گسترده — را به JSON سریالیزه می‌کنیم:

string source = "source.csv";
string target = "target.csv";
string outFilePathJson = "result.json";

using (var comparer = new Comparer(source))
{
    comparer.Add(target);
    var doc = comparer.Compare();
    var changes = doc.Changes;

    var json = changes.Select(c => new
    {
        id = c.Id,
        type = c.Type.ToString(),
        componentType = c.ComponentType,
        row = c.Row,
        column = c.Column,
        columnHeader = c.ColumnHeader,
        sourceText = c.SourceText,
        targetText = c.TargetText,
        text = c.Text
    });

    File.WriteAllText(outFilePathJson,
        JsonSerializer.Serialize(json, new JsonSerializerOptions { WriteIndented = true }));
}

بهبودها

بهبود خوانایی نتایج مقایسه CSV با نشانگرهای متنی

خروجی مقایسه CSV اکنون از نشانگرهای متنی درون‌خطی استفاده می‌کند تا محتوای اضافه‌شده و حذف‌شده بلافاصله قابل مشاهده باشد بدون نیاز به نمای کنار‑به‑کنار:

  • متن اضافه‌شده داخل پرانتز قرار می‌گیرد — برای مثال، (new value)
  • متن حذف‌شده داخل کروشه قرار می‌گیرد — برای مثال، [old value]

نحوه دریافت به‌روزرسانی

می‌توانید آخرین نسخه را از NuGet دریافت کنید یا مستقیماً از وب‌سایت GroupDocs دانلود کنید.

NuGet

GroupDocs.Comparison for .NET 26.5

دانلود مستقیم

دستگاه‌های اجرایی برای هر دو .NET و .NET Framework را از صفحه GroupDocs.Comparison for .NET 26.5 دانلود کنید.

بیشتر بدانید