GroupDocs.Markdown for .NET 26.3 sürümünün yayınlandığını duyurmaktan mutluluk duyuyoruz; Mart 2026 itibarıyla kullanılabilir. Bu büyük güncelleme, yeniden tasarlanmış bir genel API, özel DOM‑tabanlı Markdown işleyicisi, tam Markdown lezzet kontrolü, async desteği ve bir dizi hata düzeltmesi getiriyor. Ayrıca, TFM‑başına runtime NuGet paketleri ve .NET 8 ve .NET 10 desteği eklenmiştir.

Bu sürümde yenilikler

Anahtar Kategori Özet
MARKDOWNNET-33 Özellik NuGet paketini TFM‑başına runtime paketlerine böl
MARKDOWNNET-31 Özellik .NET 8 ve .NET 10 desteği ekle
MARKDOWNNET-30 Özellik Özel DOM‑tabanlı Markdown işleyicisi
MARKDOWNNET-29 Özellik Dönüşüm uyarıları ve birleşik hata modeli
MARKDOWNNET-28 Özellik Göreceli resim yolları ve resim değiştirme
MARKDOWNNET-27 Özellik Başlık seviyesi ofseti ve YAML ön bilgi oluşturma
MARKDOWNNET-26 Özellik Markdown lezzet kontrolü ve elektronik tablo render seçenekleri
MARKDOWNNET-25 Özellik Dönüşüm olmadan belge inceleme
MARKDOWNNET-24 Özellik Async API
MARKDOWNNET-23 Özellik Statik kolaylık metodları ve format keşfi
MARKDOWNNET-20 İyileştirme API’yi gözden geçir ve yeniden tasarla
MARKDOWNNET-8 Özellik Markdown’a dönüşüm sırasında resim değiştirme desteği
MARKDOWNNET-35 Hata Düzeltmesi Kalite ve işlevsel sorunlar

Genel API değişiklikleri

Yeni genel tipler

  • DocumentInfo — belge meta verileri (format, sayfa sayısı, başlık, yazar, şifreleme durumu)
  • MarkdownFlavor — hedef Markdown lehçesi için enum (GitHub, CommonMark)
  • IImageSavingHandler — özel resim kaydetme geri çağrıları için arayüz
  • IUriSavingHandler — özel URI kaydetme geri çağrıları için arayüz
  • GroupDocsMarkdownException — genel dönüşüm istisnası
  • InvalidFormatException — bozuk veya tanınmayan dosya formatı
  • DocumentProtectedException — yanlış veya eksik şifre

MarkdownConverter üzerindeki yeni statik metodlar

  • ToMarkdown(string sourcePath) ve LoadOptions/ConvertOptions ile aşırı yüklemeler
  • ToFile(string sourcePath, string outputPath) ve aşırı yüklemeler
  • GetInfo(string sourcePath) ve aşırı yüklemeler
  • GetSupportedFormats()
  • Async varyantlar: ToMarkdownAsync, ToFileAsync, GetInfoAsync

MarkdownConverter üzerindeki yeni örnek metodları

  • GetDocumentInfo()
  • ConvertAsync() ve aşırı yüklemeler

ConvertOptions üzerindeki yeni özellikler

  • ImageExportStrategy (ExportStrategy yerine)
  • UriExportStrategy
  • HeadingLevelOffset
  • IncludeFrontMatter
  • Flavor
  • MaxColumns, MaxRows, SheetSeparator, IncludeHiddenSheets

ConvertResult üzerindeki yeni özellikler

  • Warnings — ölümcül olmayan dönüşüm uyarıları

ExportImagesToFileSystemStrategy ve CustomImagesStrategy üzerindeki yeni özellikler

  • ImagesRelativePath — Markdown resim referanslarında yazılan yolu kontrol eder

CustomImageSavingArgs üzerindeki yeni metodlar

  • SetReplacementImage(Stream imageStream) — resim içeriğini değiştir

Kaldırılan tipler

  • IExportStrategyIImageExportStrategy ve IUriExportStrategy ile değiştirildi
  • DocumentConverterOptionsConvertOptions olarak yeniden adlandırıldı
  • DocumentConverterResultConvertResult olarak yeniden adlandırıldı

Kırıcı değişiklikler

Yeniden Adlandırılan Tipler

Önce Sonra
DocumentConverterOptions ConvertOptions
DocumentConverterResult ConvertResult

FileFormat Enum

Aile‑seviyesi değerler (FileFormat.WordProcessing, FileFormat.Spreadsheet) belirli formatlarla (FileFormat.Docx, FileFormat.Xlsx vb.) değiştirildi. Yeni girişler: FileFormat.Txt, FileFormat.Chm.

ConvertOptions ve LoadOptions ayrıldı

ConvertOptions artık LoadOptions’dan miras almıyor. Şifre ve format ipuçları LoadOptions üzerine konur:

var loadOptions = new LoadOptions(FileFormat.Docx) { Password = "secret" };
var convertOptions = new ConvertOptions { HeadingLevelOffset = 1 };
using var converter = new MarkdownConverter("file.docx", loadOptions);
var result = converter.Convert(convertOptions);

Resim ve URI stratejileri bölündü

Tek ExportStrategy özelliği iki tip özelliğe ayrıldı:

var options = new ConvertOptions
{
    ImageExportStrategy = new ExportImagesToFileSystemStrategy("images"),
    UriExportStrategy = new CustomUriExportStrategy(handler)
};

Delegeler arayüzlerle değiştirildi

CustomImagesStrategy ve CustomUriExportStrategy artık delegeler yerine IImageSavingHandler ve IUriSavingHandler arayüzlerini kabul eder.

LoadOptions.Extension ve LoadOptions.MimeType içsel hale getirildi

Extension veya MimeType doğrudan ayarlamak yerine new LoadOptions(FileFormat.Docx) kullanın.

Yeni özellikler

Özel DOM‑Tabanlı Markdown İşleyicisi

Kütüphane artık Markdown üretimini üçüncü‑taraf bir dışa aktarmaya bırakmaz. Özel bir işleyici, belge nesne modelini düğüm düğüm dolaşarak doğrudan Markdown üretir; bu sayede çıktının her yönü üzerinde tam kontrol sağlanır.

Word/PDF/Ebook/Text/CHM belgeleri paragraf, başlık (H1‑H6), kalın, italik, üstü çizili, satır içi kod, sıralı ve sırasız listeler (iç içe), tablolar (GFM boru sözdizimi veya CommonMark kod bloğu geri dönüşü), köprüler ve resimler desteklenir.

Elektronik tablolar hücre‑hücre ızgara geçişi, tiplenmiş değer biçimlendirme, çalışma sayfası bölümleri, sütun/ satır kesme ve üç nokta göstergeleri, gizli sayfa filtreleme ve özel sayfa ayırıcıları ile işlenir.

Statik Kolaylık Metodları

Kaynak yönetimini otomatik olarak yapan tek‑satır dönüşüm metodları:

string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();

Async API

Tüm statik ve örnek metodların CancellationToken desteğiyle async karşılıkları:

string md = await MarkdownConverter.ToMarkdownAsync("report.docx");
await MarkdownConverter.ToFileAsync("large.pdf", "output.md");
DocumentInfo info = await MarkdownConverter.GetInfoAsync("report.docx");

Dönüşüm Olmadan Belge İncelemesi

Tam dönüşüm yapmadan belge meta verilerini alın:

DocumentInfo info = MarkdownConverter.GetInfo("report.docx");
Console.WriteLine($"{info.FileFormat}, {info.PageCount} pages, by {info.Author}");

Markdown Lezzet Kontrolü

Belirli bir Markdown lehçesini hedefleyin:

var options = new ConvertOptions { Flavor = MarkdownFlavor.GitHub }; // boru tabloları, üstü çizili
var options = new ConvertOptions { Flavor = MarkdownFlavor.CommonMark }; // tablolar kod blokları olarak

Elektronik Tablo Render Seçenekleri

Elektronik tabloların Markdown’a nasıl render edileceği üzerinde tam kontrol:

var options = new ConvertOptions
{
    MaxColumns = 8,
    MaxRows = 50,
    SheetSeparator = "\n---\n",
    IncludeHiddenSheets = false
};

Başlık Seviyesi Ofseti ve YAML Ön Bilgi

var options = new ConvertOptions
{
    HeadingLevelOffset = 2,       // # Title  ->  ### Title
    IncludeFrontMatter = true     // YAML meta verisini başa ekle
};

Dönüşüm Uyarıları ve Birleşik Hata Modeli

Tüm Convert() metodları artık başarısızlıkta istisna fırlatır. ConvertResult ölümcül olmayan uyarıları taşır:

ConvertResult result = converter.Convert();
foreach (string w in result.Warnings)
    Console.WriteLine(w);  // örn. "Worksheet 'Data' truncated at 50 rows."

Resim Değiştirme ve Göreceli Yollar

Dönüşüm sırasında resimleri değiştirin ve yol referanslarını kontrol edin:

var strategy = new ExportImagesToFileSystemStrategy("c:/output/images")
{
    ImagesRelativePath = "images"  // ![](images/img-001.png)
};

İçindekiler Tablosu Render’ı

İçindekiler tablosu olan belgeler, ham alan kodları yerine temiz listeler olarak render edilir:

- Introduction
- 1.  Executive Summary
- 2.  Company Overview

Kod örneği

string md = MarkdownConverter.ToMarkdown("report.docx");
MarkdownConverter.ToFile("report.docx", "report.md");
IReadOnlyList<FileFormat> formats = MarkdownConverter.GetSupportedFormats();

Güncellemeyi nasıl alabilirsiniz

NuGet

NuGet üzerinden en son GroupDocs.Markdown paketine yükseltin (örnek: Install-Package GroupDocs.Markdown).

Kaynaklar