نحن سعداء بالإعلان عن إصدار GroupDocs.Comparison for .NET 26.5، المتاح اعتبارًا من مايو 2026.
إصدار GroupDocs.Comparison 26.5 يقدم تحسينات في دقة عرض ملفات PDF، تحسين قابلية قراءة مقارنة ملفات CSV وجداول البيانات، إمكانات API جديدة لمعالجة المراجعات وبيانات تعريف تغييرات الجداول، ونموذج تعبئة حزم NuGet محدث يدعم عدة أطر عمل.

الإصلاحات والتحسينات

  • [Feature] تعبئة حزم NuGet متعددة الأطر وتقسيم الحزم حسب TFM. (COMPARISONNET-4770)
  • [Enhancement] مقارنة PDF: تحسين دقة عرض الفقرات في الوضع Inline. (COMPARISONNET-4751)
  • [Enhancement] تحسين نتائج المقارنة لملفات PDF التي تحتوي على جداول. (COMPARISONNET-4763)
  • [Bug] إصلاح استثناء ArgumentOutOfRangeException عند مقارنة ملفات PDF ذات الجداول المنسقة. (COMPARISONNET-4762)
  • [Feature] دعم إتلاف اختياري للتيار الممرّر إلى 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 المدعومة المذكورة أعلاه.

دعم إتلاف اختياري للتيار الممرّر إلى RevisionHandler

أصبح RevisionHandler الآن يقبل معامل leaveOpen الذي يتحكم فيما إذا كان سيتم إتلاف التيار الأساسي عند إتلاف المعالج. عندما يتم تعيين 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 .

معرفة المزيد