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üzIUriSavingHandler— özel URI kaydetme geri çağrıları için arayüzGroupDocsMarkdownException— 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)veLoadOptions/ConvertOptionsile aşırı yüklemelerToFile(string sourcePath, string outputPath)ve aşırı yüklemelerGetInfo(string sourcePath)ve aşırı yüklemelerGetSupportedFormats()- Async varyantlar:
ToMarkdownAsync,ToFileAsync,GetInfoAsync
MarkdownConverter üzerindeki yeni örnek metodları
GetDocumentInfo()ConvertAsync()ve aşırı yüklemeler
ConvertOptions üzerindeki yeni özellikler
ImageExportStrategy(ExportStrategyyerine)UriExportStrategyHeadingLevelOffsetIncludeFrontMatterFlavorMaxColumns,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
IExportStrategy—IImageExportStrategyveIUriExportStrategyile değiştirildiDocumentConverterOptions—ConvertOptionsolarak yeniden adlandırıldıDocumentConverterResult—ConvertResultolarak 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" // 
};
İç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).