ما خوشحالیم که انتشار GroupDocs.Merger برای .NET نسخه 26.9 را اعلام می‌کنیم که از سپتامبر 2026 در دسترس است. این نسخه امکان ترکیب ردیفی صفحات‌گسترده را معرفی می‌کند، انتخاب صفحه در فایل‌های TIFF را از طریق PageBuilder بهبود می‌بخشد، مدیریت ابعاد پیش‌نمایش را دقیق‌تر می‌کند، مشکلات همزمانی در خروجی Visio و DOC را برطرف می‌سازد و چندین حالت شکست ساکت را با استثناهای واضح جایگزین می‌کند—به‌طوری که API پایدارتر و پیش‌بینی‌پذیرتر باشد.

چه چیزهای جدیدی در این انتشار وجود دارد

  • [Feature] ترکیب ردیف‌های Excel از چندین فایل در یک شیت واحد (MERGERNET-2198)
  • [Feature] اعمال انتخاب صفحه PageBuilder به اولین سند TIFF (MERGERNET-1372)
  • [Improvement] پرتاب استثنا زمانی که SetLicense نتواند فایل لایسنس را پیدا کند (MERGERNET-2183)
  • [Improvement] رد کردن جریان لایسنس خالی در SetLicense (MERGERNET-2184)
  • [Improvement] پرتاب استثنای واضح زمانی که یک تصویر یا فایل صوتی را به فرمت پشتیبانی‌نشده‌ای می‌پیوندید (MERGERNET-2190)
  • [Improvement] حذف System.Drawing.Common از بسته‌های چندپلتفرمی و گزارش واضح وابستگی‌های گمشده (MERGERNET-2202)
  • [Bug] بستن فایل منبع پس از باز یا پیوستن یک سند توسط مسیر (MERGERNET-2187)
  • [Bug] فراخوانی کارخانه جریان (stream factory) تنها یک بار هنگام ساخت Merger (MERGERNET-2189)
  • [Bug] رفع خروجی خراب DOC هنگام پیوستن اسناد PDF یا XPS به DOC از چندین رشته (MERGERNET-2192)
  • [Bug] اعمال تغییر جهت صفحه به هر صفحه وقتی شماره صفحه‌ای مشخص نشده باشد (MERGERNET-2194)
  • [Bug] رعایت عرض و ارتفاع پیش‌نمایش درخواست‌شده در هر خانواده فرمت سند (MERGERNET-2196)
  • [Bug] رد کردن ExtractPages و RemovePages که بدون شماره صفحه فراخوانی می‌شوند به‌جای تولید ساکت یک سند خالی یا بدون تغییر (MERGERNET-2197)
  • [Bug] رفع خطای Intermittent ArgumentNullException trueTypeFont در اسناد Visio هنگام پردازش همزمان (MERGERNET-2199)
  • [Bug] رفع خطای NullReferenceException در PDF Portfolioها وقتی فایلی که جاسازی شده تاریخ اصلاحی نداشته باشد (MERGERNET-2200)

تغییرات API عمومی

1. ترکیب صفحات‌گسترده — حالت ردیفی (API جدید)

انواع عمومی جدید در فضای نام GroupDocs.Merger.Domain.Options:

نوع توضیح
SpreadsheetJoinOptions گزینه‌های ترکیب برای صفحات‌گسترده که از PageJoinOptions ارث می‌برند. ویژگی‌ها: Mode، SkipRows، SheetMatching.
SpreadsheetJoinMode حالت Worksheets (پیش‌فرض) شیت‌های فایل ترکیب‌شده را به‌عنوان شیت‌های جداگانه اضافه می‌کند، همان‌طور که قبلاً بود. حالت Rows ردیف‌های هر فایل ترکیب‌شده را زیر آخرین ردیف حاوی داده شیت متناظر در نتیجه اضافه می‌کند.
SpreadsheetSheetMatching ByIndex (پیش‌فرض) شیت ۲ را به شیت ۲، شیت ۳ را به شیت ۳ و غیره اضافه می‌کند؛ FirstSheetOnly فقط اولین شیت هر فایل ترکیب‌شده را اضافه می‌کند.
  • SkipRows اولین N ردیف هر فایل ترکیب‌شده را نادیده می‌گیرد، برای مثال ردیف سرعنوان. سند اول همیشه به‌صورت کامل گرفته می‌شود. SkipRows و SheetMatching در حالت Worksheets تأثیری ندارند.
  • فرمت‌های پشتیبانی‌شده: XLSX، XLS، XLSM، XLSB، XLTX، XLTM، XLT، XLAM و ODS.
  • مواردی که منتقل می‌شوند: مقادیر سلول، فرمول‌ها (ارجاعات نسبی تنظیم می‌شوند)، سبک‌ها، سلول‌های ترکیبی و ارتفاع ردیف‌ها. مواردی که منتقل نمی‌شوند: نمودارها، تصاویر، جدول‌های محوری، جداول، قالب‌بندی شرطی و اعتبارسنجی داده.
  • مقدار منفی SkipRows باعث پرتاب GroupDocsMergerException می‌شود («تعداد ردیف‌های قابل نادیده‌گیری نمی‌تواند منفی باشد.»).
  • عبور از محدودیت‌های ردیف (65 536 برای XLS/XLT، 1 048 576 برای سایر فرمت‌ها) باعث پرتاب GroupDocsMergerException می‌شود.
  • ApplyPageBuilder در حالی که یک صفحات‌گسترده در حالت Rows ترکیب شده در انتظار است، GroupDocsMergerException پرتاب می‌کند.

2. TIFF — PageBuilder انتخاب صفحه اولین سند را اعمال می‌کند

بدون تغییر در API. CreatePageBuilder و ApplyPageBuilder اکنون صفحات انتخاب‌شده از اولین سند TIFF را اعمال می‌کنند؛ پیش‌تر همیشه تمام صفحات اولین سند گنجانده می‌شد. ترکیب‌هایی که از PageBuilder استفاده نمی‌کنند همان نتیجه قبلی را تولید می‌کنند.

پس از ترکیب با ImageJoinOptions، CreatePageBuilder و ApplyPageBuilder اکنون GroupDocsMergerException پرتاب می‌کنند، زیرا تصاویر ترکیب‌شده به‌صورت یک طرح واحد ساخته می‌شوند نه به‌صورت توالی صفحات.

3. لایسنس‌دهی — SetLicense دیگر به‌صورت ساکت شکست نمی‌خورد

  • License.SetLicense(string licensePath) هنگام عدم یافتن فایل لایسنس InvalidOperationException پرتاب می‌کند («License not found: …»).
  • License.SetLicense(Stream licenseStream) برای جریان خالی ArgumentNullException پرتاب می‌کند.

4. عملیات صفحه با لیست صفحه خالی

  • ExtractPages و RemovePages که بدون شماره صفحه فراخوانی می‌شوند، اکنون GroupDocsMergerException پرتاب می‌کنند («There are no page numbers to extract.» / «There are no page numbers to remove.»).
  • ChangeOrientation که بدون شماره صفحه فراخوانی می‌شود، جهت تمام صفحات را برای اسناد PDF، XPS، پردازش‌گر متن، صفحات‌گسترده و Visio تغییر می‌دهد.

5. اندازه پیش‌نمایش

GeneratePreview اکنون هر تصویر صفحه را به Width و Height درخواست‌شده تغییر اندازه می‌دهد — به‌صورت کشیده شده دقیقاً به آن اندازه وقتی هر دو مقدار داده شوند. مقدار منفی Width یا Height اکنون GroupDocsMergerException پرتاب می‌کند.

6. System.Drawing.Common و وابستگی‌های گمشده

  • بسته‌های چندپلتفرمی (GroupDocs.Merger.Net60، GroupDocs.Merger.Net80، GroupDocs.Merger.Net100) دیگر به System.Drawing.Common وابسته نیستند.
  • وابستگی‌های زمان اجرا که گمشده‌اند، اکنون MissingDependencyException پرتاب می‌کنند و نام مؤلفه گمشده و دستورالعمل نصب را اعلام می‌نمایند.

7. ترکیب تصاویر و صدا در فرمت‌های پشتیبانی‌نشده

ترکیب یک تصویر یا فایل صوتی در فرمت سندی که پشتیبانی نمی‌شود، اکنون FileTypeNotSupportedException پرتاب می‌کند («Joining ‘…’ into ‘…’ is not supported»).

ویژگی‌های جدید

  • ترکیب ردیفی صفحات‌گسترده: ردیف‌های چندین صفحات‌گسترده اکنون می‌توانند به یک شیت واحد اضافه شوند به‌جای اینکه به‌عنوان شیت‌های جداگانه افزوده شوند، با گزینه‌هایی برای نادیده‌گیری ردیف‌های سرعنوان و تطبیق شیت‌ها بر اساس موقعیت.
  • PageBuilder برای اسناد TIFF: انتخاب صفحه‌ای که با PageBuilder انجام می‌شود، اکنون به اولین سند TIFF نیز اعمال می‌شود — پیش‌تر همیشه تمام صفحات آن گنجانده می‌شد.
  • ابعاد پیش‌نمایش دقیق: GeneratePreview اکنون تصاویر را با عرض و ارتفاع درخواست‌شده برای هر خانواده فرمت سند برمی‌گرداند.
  • رفع مشکلات همزمانی: خروجی Visio و DOC دیگر به‌صورت متناوب هنگام پردازش از چندین رشته شکست نمی‌خورند.
  • مدیریت منابع: اسنادی که با مسیر فایل باز یا ترکیب می‌شوند، دیگر فایل منبع را باز نگه نمی‌دارند؛ کارخانه‌های جریان دقیقاً یک بار فراخوانی می‌شوند.
  • خطاهای واضح‌تر: چندین عملیات که پیش‌تر به‌صورت ساکت شکست می‌خوردند، اکنون استثناهای توصیفی پرتاب می‌کنند.

مثال کد

using GroupDocs.Merger;
using GroupDocs.Merger.Domain.Options;

using (var merger = new Merger("january.xlsx"))
{
    var options = new SpreadsheetJoinOptions
    {
        Mode = SpreadsheetJoinMode.Rows,   // append rows into the existing sheets
        SkipRows = 1                        // skip the header row of each joined file
    };

    merger.Join("february.xlsx", options);
    merger.Join("march.xlsx", options);
    merger.Save("q1.xlsx");
}

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

NuGet

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

منابع