IRONSOFTWAREHOME
VIDEOLAR

C# İçinde PDF Revizyon Geçmişini Nasıl Kaydeder ve Düzenleriz

Curtis Chau
Curtis Chau
Updated: 18 Mayıs 2026

MigraDoc'tan IronPDF'e geçiş, belirsiz bir programatik döküman modeli gerektiren manuel eleman-eleman yapısından mevcut web geliştirme becerilerinden yararlanan modern birHTML/CSStabanlı yaklaşıma dönüştürür. Bu kılavuz, MigraDoc'un özel belge nesne modelinin öğrenme eğrisini ortadan kaldıran kapsamlı, adım adım bir geçiş yolu sağlar.

MigraDoc'tan IronPDF'e Neden Geçilmeli

MigraDoc Zorlukları

MigraDoc, PDFsharp PdfDocument içine işler ve PDFsharp paketine bağlı olan bir yerleşim motorudur. empira / PDFsharp-Team tarafından MIT lisansı altında sürdürülen bu araç, programlı üretim için güçlüdür, ancak modern geliştirme iş akışlarını etkileyen temel sınırlamalara sahiptir:

  1. **HTML Desteği Yok:**MigraDocdoğrudan HTML'yi desteklemez. Belgeleri element-öğe bazında Document, Section, Paragraph ve Table nesneleri kullanarak elle oluşturmalısınız—mevcutHTML/CSStasarımlarını kullanamazsınız.

  2. Tescilli Belge Modeli: MigraDoc, AddSection(), AddParagraph(), AddTable(), AddRow() ve AddCell() gibi kavramlara sahip benzersiz bir belge modelini öğrenmeyi gerektirir. Bu dik öğrenme eğrisi, özellikle web geliştirme altyapısına sahip geliştiriciler için zordur.

  3. Sınırlı Stil Seçenekleri: MigraDoc, güçlü belge yapısı yönetimi sunsa da, stil belirleme yetenekleri modern web araçlarına kıyasla mütevazıdır. Format.Font.Size, Format.Font.Bold ve Format.Alignment gibi özellikler tam CSS3'e göre sınırlıdır.

  4. Belirgin Kod: Basit düzenler oluşturmak bile düzinelerce satır kod gerektirir. Başlıklarla basit bir tablo, 15-20 satırMigraDockodu gerektirebilir.

  5. JavaScript Desteği Yok: MigraDoc, dinamik içeriği render edemez veyaJavaScriptçalıştıramaz, modern grafik ve etkileşimli ögeler için seçenekleri kısıtlar.

  6. Grafikler Temel: MigraDoc'un grafik işlevselliği Chart.js veya D3 gibi modernJavaScriptgrafik kütüphanelerine kıyasla sınırlıdır.

MigraDoc vs IronPDF Karşılaştırması

ÖzellikMigraDocIronPDF
İçerik TanımıProgramlanabilir (Belge/Bölüm/Paragraf)HTML/CSS
Öğrenme EğrisiYoğun (özel DOM)Kolay (web becerileri)
StillemeSınırlı özelliklerTam CSS3
JavaScriptNoneTam Chromium uygulaması
TablolarManuel sütun/satır tanımıHTML <table> with CSS
GrafiklerTemelMigraDocgrafiklerHerhangi birJavaScriptgrafik kütüphanesi
GörsellerManuel boyutlandırma/konumlandırmaStandard HTML <img>
Duyarlı DüzenlerDesteklenmiyorFlexbox, Grid
LisansAçık Kaynak (MIT)Ticari

Modern .NET'i hedefleyen ekipler için,IronPDF geliştiricilerin özel bir belge modeli öğrenmek yerine tanıdıkHTML/CSSbecerilerini kullanmalarına izin verir.


Göç Karmaşıklığı Değerlendirmesi

Özelliklere Göre Tahmini Çaba

ÖzellikGöç Karmaşıklığı
Basit MetinÇok Düşük
TablolarDüşük
Başlıklar/AltbilgilerDüşük
TarzlarOrta
GörsellerDüşük
GrafiklerOrta

Paradigma Değişimi

BuMigraDocgeçişindeki temel değişiklik, programatik belge oluşturmadan HTML-öncelikli rendera geçiştir:

MigraDoc:  Belge → Bölüm Ekle() → Paragraf Ekle() → PdfBelgeRenderlayıcı → Kaydet()
IronPDF:   ChromePdfRenderer → RenderHtmlAsPdf(html) → SaveAs()
Text

Bu paradigma değişimi, CSS ile sınırsız stil yetenekleri sağlarken, kod karmaşıklığını büyük ölçüde azaltır.


Başlamadan Önce

Ön Koşullar

  1. .NET Ortamı: .NET Framework 4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi: NuGet paketlerini yükleyebilme
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# RemoveMigraDocpackages (package IDs are case-sensitive on nuget.org)
dotnet remove package PDFsharp-MigraDoc
dotnet remove package PDFsharp-MigraDoc-GDI
dotnet remove package PDFsharp-MigraDoc-WPF

# Install IronPDF
dotnet add package IronPdf
SHELL

Lisans Yapılandırması

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

MigraDoc Kullanımını Belirleyin

# Find allMigraDocreferences
grep -r "using MigraDoc\|PdfDocumentRenderer\|AddSection\|AddParagraph" --include="*.cs" .
grep -r "AddTable\|AddRow\|AddColumn\|AddCell\|AddImage" --include="*.cs" .
SHELL

Tam API Referansı

Sınıf Eşlemeleri

MigraDoc SınıfıIronPDF Eşdeğeri
DocumentChromePdfRenderer
SectionHTML <body> or <div>
ParagraphHTML <p>, <h1>, etc.
FormattedTextHTML <span>, <strong>, etc.
TableHTML <table>
RowHTML <tr>
ColumnHTML <col> or CSS
CellHTML <td>, <th>
PdfDocumentRendererChromePdfRenderer

Yöntem Eşlemeleri

MigraDoc YöntemiIronPDF Eşdeğeri
document.AddSection()HTML yapısı
section.AddParagraph(text)<p>text</p>
section.AddTable()<table>
table.AddColumn(width)CSS width property
table.AddRow()<tr>
row.Cells[n].AddParagraph()<td>content</td>
renderer.RenderDocument()RenderHtmlAsPdf(html)
pdfDocument.Save(path)pdf.SaveAs(path)

Yer Tutucu Eşlemeleri (Üstbilgi/Altbilgi)

MigraDoc YöntemiIronPDF Yer Tutucu
AddPageField(){page}
AddNumPagesField(){total-pages}
AddDateField(){date}

Kod Göç Örnekleri

Örnek 1: Temel HTML'den PDF'e (Temel Fark)

Önce (MigraDoc):

// NuGet: Install-Package PDFsharp-MigraDoc-GDI
using MigraDoc.DocumentObjectModel;
using MigraDoc.Rendering;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        //MigraDocdoesn't support HTML directly
        // Must manually create document structure
        Document document = new Document();
        Section section = document.AddSection();
        
        Paragraph paragraph = section.AddParagraph();
        paragraph.AddFormattedText("Hello World", TextFormat.Bold);
        paragraph.Format.Font.Size = 16;
        
        PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();
        pdfRenderer.Document = document;
        pdfRenderer.RenderDocument();
        pdfRenderer.PdfDocument.Save("output.pdf");
    }
}
C#

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}

Bu örnek,MigraDocile IronPDF arasındaki temel farkı göstermektedir. MigraDoc, Document oluşturmayı, Section eklemeyi, Paragraph eklemeyi, AddFormattedText() ile TextFormat.Bold kullanmayı, Format.Font.Size ayarlamayı, PdfDocumentRenderer oluşturmayı, belgeyi atamayı, RenderDocument() çağırmayı ve son olarak kaydetmeyi gerektirir. Bu, 10'dan fazla satır kod ve birden çok nesne içerir.

IronPDF, aynı sonucu 3 satırda gerçekleştirir: bir renderlayıcı oluşturun, HTML renderlayın ve kaydedin. HTML <h1> etiketi doğal olarak kalın, büyük başlık stilini sağlar. HTML'den PDF'ye belgelemeyi ek işleme seçenekleri için inceleyin.

Örnek 2: Tablolar Oluşturma

Önce (MigraDoc):

// NuGet: Install-Package PDFsharp-MigraDoc-GDI
using MigraDoc.DocumentObjectModel;
using MigraDoc.DocumentObjectModel.Tables;
using MigraDoc.Rendering;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Section section = document.AddSection();
        
        Table table = section.AddTable();
        table.Borders.Width = 0.75;
        
        Column column1 = table.AddColumn("3cm");
        Column column2 = table.AddColumn("3cm");
        
        Row row1 = table.AddRow();
        row1.Cells[0].AddParagraph("Name");
        row1.Cells[1].AddParagraph("Age");
        
        Row row2 = table.AddRow();
        row2.Cells[0].AddParagraph("John");
        row2.Cells[1].AddParagraph("30");
        
        PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();
        pdfRenderer.Document = document;
        pdfRenderer.RenderDocument();
        pdfRenderer.PdfDocument.Save("table.pdf");
    }
}
C#

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlTable = @"
            <table border='1'>
                <tr><th>Name</th><th>Age</th></tr>
                <tr><td>John</td><td>30</td></tr>
            </table>";
        
        var pdf = renderer.RenderHtmlAsPdf(htmlTable);
        pdf.SaveAs("table.pdf");
    }
}

MigraDoc tablo oluşturma, Table, Column, Row ve Cell hiyerarşisini anlamayı gerektirir. Sütunları AddColumn() ile açıkça eklemeli, satırları AddRow() ile oluşturmalı, hücrelere indekse göre Cells[n] ile erişmeli ve içerik eklemelisiniz AddParagraph() ile. Kenar, table.Borders.Width ile ayarlanır.

IronPDF, her web geliştiricisinin bildiği standart HTML tablo sözdizimini kullanır. border='1' özelliği kenar sağlar, <th> öğeleri başlık hücreleri oluşturur ve <td> öğeleri veri hücreleri oluşturur. Zebra çizgileri, hover efektleri veya duyarlı düzenler gibi ileri düzey stil için CSS eklenebilir. PDF'lerde tablolar oluşturma hakkında daha fazla bilgi edinin.

Örnek 3: Sayfa Numaraları ile Başlıklar ve Alt Bilgiler

Önce (MigraDoc):

// NuGet: Install-Package PDFsharp-MigraDoc-GDI
using MigraDoc.DocumentObjectModel;
using MigraDoc.Rendering;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Section section = document.AddSection();
        
        // Add header
        Paragraph headerPara = section.Headers.Primary.AddParagraph();
        headerPara.AddText("Document Header");
        headerPara.Format.Font.Size = 12;
        headerPara.Format.Alignment = ParagraphAlignment.Center;
        
        // Add footer
        Paragraph footerPara = section.Footers.Primary.AddParagraph();
        footerPara.AddText("Page ");
        footerPara.AddPageField();
        footerPara.Format.Alignment = ParagraphAlignment.Center;
        
        // Add content
        section.AddParagraph("Main content of the document");
        
        PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();
        pdfRenderer.Document = document;
        pdfRenderer.RenderDocument();
        pdfRenderer.PdfDocument.Save("header-footer.pdf");
    }
}
C#

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter
        {
            CenterText = "Document Header"
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter
        {
            CenterText = "Page {page}"
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>");
        pdf.SaveAs("header-footer.pdf");
    }
}

MigraDoc başlık ve alt bilgi, section.Headers.Primary ve section.Footers.Primary erişimini gerektirir, bu içlerinde paragraflar oluşturur, AddText() ile metin ekler ve özel yöntemler kullanır, dinamik içerik için AddPageField() gibi. Hizalama, Format.Alignment ayarlanmasını gerektirir.

IronPDF, RenderingOptions.TextHeader / RenderingOptions.TextFooter üzerinde TextHeaderFooter kullanarak başlıklar ve alt bilgiler yapılandırır, LeftText, CenterText ve RightText bölgeyle. {page} yer tutucu, otomatik olarak mevcut sayfa numarasını ekler. Daha zengin düzenler için tamHTML/CSSdesteği ile HtmlHeader / HtmlFooter HtmlHeaderFooter kullanın. Başlıklar ve altbilgiler belgeleri için gelişmiş seçenekler görün.


Kritik Taşıma Notları

Sayfa Numarası Yer Tutucu Sözdizimi

Başlıklar ve altbilgiler için en önemli değişiklik yer tutucu sözdizimidir:

//MigraDocfield methods:
footerPara.AddPageField();       // Current page
footerPara.AddNumPagesField();   // Total pages

//IronPDF placeholders:
"Page {page} of {total-pages}"
C#

Format Özelliklerini CSS'e Dönüştür

MigraDoc'un Format özellikleri CSS ile eşleşir:

// MigraDoc:
paragraph.Format.Font.Size = 16;
paragraph.Format.Font.Bold = true;
paragraph.Format.Alignment = ParagraphAlignment.Center;

//IronPDF(CSS):
<p style="font-size: 16pt; font-weight: bold; text-align: center;">

Birim Dönüşümü

MigraDoc farklı birimi kullanırken;IronPDF kenar boşlukları milimetre cinsindendir:

  • '1cm' = 10mm
  • '1in' = 25,4mm
  • "72pt" = 25,4mm
// MigraDoc:
table.AddColumn("3cm");

//IronPDF(CSS):
<th style="width: 3cm;">

Renderlama Deseni Değişikliği

Tüm renderlama deseni değişir:

//MigraDocpattern (DELETE):
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();
pdfRenderer.Document = document;
pdfRenderer.RenderDocument();
pdfRenderer.PdfDocument.Save("output.pdf");

//IronPDF pattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
C#

Hata Ayıklama

Sorun 1: Belge/Bölüm Bulunamadı

Sorun: IronPDF'de Document ve Section sınıfları yok.

Çözüm: HTML yapısıyla değiştirin:

// MigraDoc
Document document = new Document();
Section section = document.AddSection();

// IronPDF
string html = "<html><body>...</body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);

Sorun 2: AddParagraph Bulunamadı

Sorun: AddParagraph() metodu yok.

Çözüm: HTML elemanlarını kullanın:

// MigraDoc
section.AddParagraph("Hello World");

// IronPDF
"<p>Hello World</p>"

Sorun 3: PdfDocumentRenderer Bulunamadı

Sorun: PdfDocumentRenderer sınıfı yok.

Çözüm: ChromePdfRenderer kullanın:

// MigraDoc
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();

// IronPDF
var renderer = new ChromePdfRenderer();

Sorun 4: AddPageField Çalışmıyor

Sorun: AddPageField() metodu yok.

**Çözüm:**IronPDF yer tutucu sözdizimini kullanın:

// MigraDoc
footerPara.AddPageField();

// IronPDF
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    CenterText = "Page {page}"
};

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • TümMigraDocusing ifadelerini tanımlayın.
  • Belge tablo yapıları (sütunlar, satırlar, stil)
  • Başlık/altbilgi içeriği ve sayfa alanı kullanımı
  • document.Styles ile tanımlanmış özel stilleri listeleyin. -IronPDF lisans anahtarını edinin

Paket Değişiklikleri

  • PDFsharp-MigraDoc, PDFsharp-MigraDoc-GDI ve PDFsharp-MigraDoc-WPF paketlerini kaldırın.
  • IronPdf NuGet paketi kurun: dotnet add package IronPdf
  • Ad alanı ithalatlarını güncelleyin

Kod Değişiklikleri

Başlangıçta lisans anahtarı yapılandırmasını ekleyin

  • Section HTML yapısıyla değiştirin.
  • AddParagraph()'i HTML <p> öğelerine dönüştürün.
  • Cell'i HTML <table> yapısına dönüştürün.
  • AddPageField()'i {page} yer tutucu ile değiştirin.
  • AddNumPagesField()'i {total-pages} yer tutucu ile değiştirin.
  • Format özelliklerini CSS stillerine dönüştürün.
  • PdfDocumentRenderer'i ChromePdfRenderer ile değiştirin.

Test Etme

  • Eski ve yeni PDF'ler arasında görsel çıktı karşılaştırması
  • Sayfa kırılmaları düzgün çalışıyor mu kontrol edin
  • Başlık/altbilgi işleme ve sayfa numaralarını kontrol et
  • Tablo biçimlendirme ve kenarlıkları doğrula
  • Karmaşık çok sayfalı belgelerle test yap

Geçiş Sonrası

-MigraDocile ilgili belgeleri kaldır

  • Ekip eğitim materyallerini güncelleyin
  • Yeni HTML şablon konumlarını belgeleyin

Lütfen dikkate alın: MigraDoc ve PDFSharp, ilgili sahiplerinin tescilli markalarıdır. Bu site, empira Software GmbH ile ilişkili, onaylanmış veya desteklenmiş değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.
Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez