Altbilgi içeriğine atla
GEçIş KıLAVUZLARı

QuestPDF'den IronPDF'e C# ile Nasıl Geçilir

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against QuestPDF on pricing, HTML support, and licensing.

View Full Comparison

QuestPDF'ten IronPDF'ye geçiş, PDF oluşturma iş akışınızı geniş PDF manipülasyon yeteneklerine sahip standart HTML/CSS tabanlı bir yaklaşıma ve bir C# akıcı düzen API'sinden taşır. Bu kılavuz, mevcut web becerilerine başvurmanız, HTML şablonlarını yeniden kullanmanız veQuestPDFtemel kütüphanesinin içermediği özellikleri kazanmanız için adım adım bir geçiş yolu sunar.

Neden QuestPDF'den IronPDF'ye Geçilmeli

QuestPDF'yi Anlamak

QuestPDF, C# ile programatik olarak PDF oluşturmak üzere özel olarak tasarlanmış modern bir fluent API'dir. Kapsamlı HTML'den PDF'e dönüştürme sunan kütüphanelerin aksine,QuestPDFtemel kütüphanesi programatik bir düzen API'si ile sınırlıdır. QuestPDF, geliştiricilerin HTML'ye dayanmak zorunda kalmadan C# kodu kullanarak belgeleri sıfırdan oluşturmaları gereken senaryolarda başarılıdır.

Topluluk düzeyi, bireyler, kâr amacı gütmeyenler, FOSS projeleri ve yıllık brüt geliri 1 milyon USD'nin altında olan kuruluşlar için MIT şartlarına göre ücretsizdir. O eşik üzerinde, QuestPDF, $999'dan başlayan profesyonel lisans (ömür boyu, en fazla 10 geliştirmeci) ve $2.999'dan başlayan kurumsal lisans (ömür boyu, kurulum çapında), uzun vadeli planlamaya dahil edilmesi gereken sundur.

Temel Sorun: Çekirdek Kütüphanede HTML Motoru Yok

QuestPDF bazen HTML'den PDF'e dönüştürme önerilir, ancak temel kütüphane HTML render yapmaz. Topluluk tarafından sürdürülen QuestPDF.HTML uzantısı, HTML/CSS'in sınırlı bir alt kümesini kapsar, ancak çekirdek motor yalnızca programlamaya yöneliktir ve gerçek bir tarayıcı motoru çalıştırmaz. Zaten HTML/CSS şablonlarına sahip ekipler genellikle bunları akıcı API'de yeniden inşa etmek zorundadır.

Özellik QuestPDF IronPDF
HTML'den PDF'e (çekirdek) Desteklenmez (sadece akıcı API) Tam destek
HTML'den PDF'e (uzantı) Kısmen QuestPDF.HTML (sınırlı alt küme) aracılığıyla Tam destek
CSS Stil Verme Uzantı aracılığıyla sınırlı Tam CSS3
Mevcut Şablonlar Sıfırdan Yeniden İnşa Etmek Gerekir HTML/CSS Varlıklarını Yeniden Kullanma
Tasarım Aracı Uyumluluğu None Herhangi bir web tasarım aracı
Öğrenme Eğrisi Yeni akıcı C# API Web becerileri transferi
Düzen Önizlemesi Tamamlayıcı uygulama Herhangi bir tarayıcıda önizleme
PDF Manipülasyonu Birleştirme / ayıklama / üst üste bindirme / şifreleme (Belge İşlemleri API'si, 2024.12.0+) Birleştirme, bölme, düzenleme, imzalama

IronPDF,QuestPDFtemelinin içermediği yerel HTML'den PDF'e renderleme sunarak belgeleri C# kodunda elle yeniden oluşturma ihtiyacını ortadan kaldırır. Ayrıca QuestPDF'in Belge İşlemleri API'si (2024.12.0+) birleştirme, sayfa çıkarma, üst/alt kaplama, ekler ve şifreleme içerir, ancak mevcuttaki sayfa içeriğini düzenleme, OCR veya dijital imzalar sunmaz ancak belgede düzenleme gibi PDF manipülasyon özelliklerini de kapsar.

QuestPDFLisanslama Modeli

QuestPDF'nin Community License (MIT koşulları) bireyler, kar amacı gütmeyen kuruluşlar, FOSS projeleri ve yıllık brüt geliri 1 milyon USD'nin altında olan organizasyonlar için ücretsizdir. Bu eşikten sonra, 999 $ (süresiz, 10 geliştiriciye kadar) veya 2.999 $ (süresiz, organizasyon geneli için) Enterprise lisansına ihtiyacınız vardır. Tetikleyici, koltuk sayısından ziyade kuruluşunuzun geliri olduğu için, bu, hem kendi lisanslamanızda hem de müşterilerle olan görüşmelerinizi değiştirebilir.

IronPDF, geliri denetlemeyen, müşteri lisansı gereksinimlerini kaldıran ve öngörülebilir maliyetlerle her geliştirici için ticari lisans sunar.

Modern .NET sürümlerini benimseyen ekipler için,IronPDF her geliştiriciye lisanslama sağlayarak gelir tabanlı tetikleyicilerden uzak durur ve mevcut web geliştirme becerilerini kullanan standart bir HTML/CSS yaklaşımı sunar.


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

# Remove QuestPDF
dotnet remove package QuestPDF

# Add IronPDF
dotnet add package IronPdf
# Remove QuestPDF
dotnet remove package QuestPDF

# Add IronPDF
dotnet add package IronPdf
SHELL

Lisans Yapılandırması

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

QuestPDFKullanımını Bul

# Find allQuestPDFusages in your codebase
grep -r "QuestPDF\|Document.Create\|\.GeneratePdf" --include="*.cs" .
# Find allQuestPDFusages in your codebase
grep -r "QuestPDF\|Document.Create\|\.GeneratePdf" --include="*.cs" .
SHELL

Tam API Referansı

Ad Alanı Değişiklikleri

// Before: QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

// After: IronPDF
using IronPdf;
// Before: QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

// After: IronPDF
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Temel API Eşlemeleri

QuestPDF Kavramı IronPDF Eşdeğeri
Document.Create() new ChromePdfRenderer()
.Page() RenderHtmlAsPdf()
.Text() HTML <p>, <h1>, <span>
.Bold() CSS font-weight: bold
.FontSize(24) CSS font-size: 24px
.Image() HTML <img src="...">
.Table() HTML
.Column() CSSdisplay: flex; flex-yön: sütun
.Row() CSSdisplay: flex; flex-yön: sıra
PageSizes.A4 RenderingOptions.PaperSize
.Margin() RenderingOptions.Margin*
.GeneratePdf() pdf.SaveAs()
Yok PdfDocument.Merge()
Yok PdfDocument.FromFile()
Yok pdf.SecuritySettings

Kod Göç Örnekleri

Örnek 1: Temel Belge Oluşturma (HTML'den PDF'ye)

Önceki (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("Hello World").FontSize(20).Bold();
                    column.Item().Text("This is a paragraph of text.");
                });
            });
        }).GeneratePdf("output.pdf");
    }
}
// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("Hello World").FontSize(20).Bold();
                    column.Item().Text("This is a paragraph of text.");
                });
            });
        }).GeneratePdf("output.pdf");
    }
}
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Module Program
    Sub Main()
        QuestPDF.Settings.License = LicenseType.Community

        Document.Create(Sub(container)
                            container.Page(Sub(page)
                                               page.Size(PageSizes.A4)
                                               page.Margin(2, Unit.Centimetre)
                                               page.Content().Column(Sub(column)
                                                                         column.Item().Text("Hello World").FontSize(20).Bold()
                                                                         column.Item().Text("This is a paragraph of text.")
                                                                     End Sub)
                                           End Sub)
                        End Sub).GeneratePdf("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

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><p>This is a paragraph of text.</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a paragraph of text.</p>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a paragraph of text.</p>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnek paradigmalardaki farkı gösterir. QuestPDF, akıcı API'sini öğrenmeyi gerektirir: Document.Create(), container.Page(), page.Content().Column(), column.Item().Text() ve .FontSize(20).Bold() gibi metod zincirlemesi ile stil verilerek. Ayrıca QuestPDF.Settings.License = LicenseType.Community ile lisans türünü de ayarlamanız gerekir.

IronPDF, her web geliştiricisinin bildiği standart HTML kullanır: başlıklar için

, paragraflar için

. Öğrenilecek yeni bir yerleşim DSL yok. IronPDF'nin yaklaşımı daha temiz bir sözdizimi sunar ve modern .NET web yığınının geri kalanıyla entegre olur. Kapsamlı örnekler için HTML'den PDF'e dönüşüm belgelerine bakın.

Örnek 2: Fatura Oluşturma

Önceki (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("INVOICE").FontSize(24).Bold();
                    column.Item().Text("Invoice #: 12345").FontSize(12);
                    column.Item().PaddingTop(20);
                    column.Item().Text("Customer: John Doe");
                    column.Item().Text("Total: $100.00").Bold();
                });
            });
        }).GeneratePdf("invoice.pdf");
    }
}
// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                page.Content().Column(column =>
                {
                    column.Item().Text("INVOICE").FontSize(24).Bold();
                    column.Item().Text("Invoice #: 12345").FontSize(12);
                    column.Item().PaddingTop(20);
                    column.Item().Text("Customer: John Doe");
                    column.Item().Text("Total: $100.00").Bold();
                });
            });
        }).GeneratePdf("invoice.pdf");
    }
}
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Module Program
    Sub Main()
        QuestPDF.Settings.License = LicenseType.Community

        Document.Create(Sub(container)
                            container.Page(Sub(page)
                                               page.Size(PageSizes.A4)
                                               page.Margin(2, Unit.Centimetre)
                                               page.Content().Column(Sub(column)
                                                                         column.Item().Text("INVOICE").FontSize(24).Bold()
                                                                         column.Item().Text("Invoice #: 12345").FontSize(12)
                                                                         column.Item().PaddingTop(20)
                                                                         column.Item().Text("Customer: John Doe")
                                                                         column.Item().Text("Total: $100.00").Bold()
                                                                     End Sub)
                                           End Sub)
                        End Sub).GeneratePdf("invoice.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = @"
            <h1>INVOICE</h1>
            <p>Invoice #: 12345</p>
            <br/>
            <p>Customer: John Doe</p>
            <p><strong>Total: $100.00</strong></p>
        ";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("invoice.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = @"
            <h1>INVOICE</h1>
            <p>Invoice #: 12345</p>
            <br/>
            <p>Customer: John Doe</p>
            <p><strong>Total: $100.00</strong></p>
        ";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("invoice.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim htmlContent As String = "
            <h1>INVOICE</h1>
            <p>Invoice #: 12345</p>
            <br/>
            <p>Customer: John Doe</p>
            <p><strong>Total: $100.00</strong></p>
        "

        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("invoice.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

QuestPDF, yerleşim için .Column() ve .Item(), boşluklar için .PaddingTop(20) kullanır. IronPDF, standart HTML kullanır: başlık için

, paragraflar için

, boşluklar için
ve kalın metin için .

Gerçek avantaj:IronPDF ile tasarımcılar HTML şablonlarını bağımsız olarak oluşturabilir ve değiştirebilir.QuestPDFile her tasarım değişikliği, bir C# geliştiricisinin kodu değiştirmesini gerektirir. Daha fazla bilgiyi kılavuzlarımızda öğrenin.

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

Önceki (QuestPDF):

// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);

                page.Header().Text("Document Header").FontSize(14).Bold();

                page.Content().Text("Main content of the document.");

                page.Footer().AlignCenter().Text(text =>
                {
                    text.Span("Page ");
                    text.CurrentPageNumber();
                });
            });
        }).GeneratePdf("document.pdf");
    }
}
// NuGet: Install-Package QuestPDF
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

class Program
{
    static void Main()
    {
        QuestPDF.Settings.License = LicenseType.Community;

        Document.Create(container =>
        {
            container.Page(page =>
            {
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);

                page.Header().Text("Document Header").FontSize(14).Bold();

                page.Content().Text("Main content of the document.");

                page.Footer().AlignCenter().Text(text =>
                {
                    text.Span("Page ");
                    text.CurrentPageNumber();
                });
            });
        }).GeneratePdf("document.pdf");
    }
}
Imports QuestPDF.Fluent
Imports QuestPDF.Helpers
Imports QuestPDF.Infrastructure

Module Program
    Sub Main()
        QuestPDF.Settings.License = LicenseType.Community

        Document.Create(Sub(container)
                            container.Page(Sub(page)
                                               page.Size(PageSizes.A4)
                                               page.Margin(2, Unit.Centimetre)

                                               page.Header().Text("Document Header").FontSize(14).Bold()

                                               page.Content().Text("Main content of the document.")

                                               page.Footer().AlignCenter().Text(Sub(text)
                                                                                    text.Span("Page ")
                                                                                    text.CurrentPageNumber()
                                                                                End Sub)
                                           End Sub)
                        End Sub).GeneratePdf("document.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Sonrası (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<p>Main content of the document.</p>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        pdf.Header = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 14
        };

        pdf.Footer = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<p>Main content of the document.</p>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        pdf.Header = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 14
        };

        pdf.Footer = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim htmlContent As String = "<p>Main content of the document.</p>"

        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

        pdf.Header = New TextHeaderFooter() With {
            .CenterText = "Document Header",
            .FontSize = 14
        }

        pdf.Footer = New TextHeaderFooter() With {
            .CenterText = "Page {page}"
        }

        pdf.SaveAs("document.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

QuestPDF, page.Header() ve page.Footer() kullanarak .AlignCenter() ve .CurrentPageNumber() gibi akıcı yöntemlerle. IronPDF, TextHeaderFooter nesneleri, CenterText ve FontSize gibi özelliklerle kullanır. {page} yer tutucu otomatik olarak geçerli sayfa numarasını ekler.


Kritik Taşıma Notları

Paradigma Değişikliği

Temel değişiklik, özel bir C# akıcı yerleşim API'sinden standart HTML/CSS'ye geçiştir:

// QuestPDF: Fluent C# layout API
container.Page(page =>
{
    page.Content().Column(column =>
    {
        column.Item().Text("Invoice").Bold().FontSize(24);
        column.Item().Row(row =>
        {
            row.RelativeItem().Text("Customer:");
            row.RelativeItem().Text("Acme Corp");
        });
    });
});

// IronPDF: Standard HTML/CSS
var html = @"
<div style='font-family: Arial; padding: 40px;'>
    <h1 style='font-weight: bold; font-size: 24px;'>Invoice</h1>
    <div style='display: flex; justify-content: space-between;'>
        <span>Customer:</span>
        <span>Acme Corp</span>
    </div>
</div>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// QuestPDF: Fluent C# layout API
container.Page(page =>
{
    page.Content().Column(column =>
    {
        column.Item().Text("Invoice").Bold().FontSize(24);
        column.Item().Row(row =>
        {
            row.RelativeItem().Text("Customer:");
            row.RelativeItem().Text("Acme Corp");
        });
    });
});

// IronPDF: Standard HTML/CSS
var html = @"
<div style='font-family: Arial; padding: 40px;'>
    <h1 style='font-weight: bold; font-size: 24px;'>Invoice</h1>
    <div style='display: flex; justify-content: space-between;'>
        <span>Customer:</span>
        <span>Acme Corp</span>
    </div>
</div>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
' QuestPDF: Fluent VB.NET layout API
container.Page(Sub(page)
    page.Content().Column(Sub(column)
        column.Item().Text("Invoice").Bold().FontSize(24)
        column.Item().Row(Sub(row)
            row.RelativeItem().Text("Customer:")
            row.RelativeItem().Text("Acme Corp")
        End Sub)
    End Sub)
End Sub)

' IronPDF: Standard HTML/CSS
Dim html As String = "
<div style='font-family: Arial; padding: 40px;'>
    <h1 style='font-weight: bold; font-size: 24px;'>Invoice</h1>
    <div style='display: flex; justify-content: space-between;'>
        <span>Customer:</span>
        <span>Acme Corp</span>
    </div>
</div>"

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Düzen Şablonu Dönüşümleri

QuestPDF Deseni HTML/CSS Eşdeğeri
.Column() display: flex; flex-yön: sütun
.Row() display: flex; flex-yön: sıra
.RelativeItem() flex: 1
.Table() elemanı
.PaddingTop(20) padding-top: 20px veya
.AlignCenter() text-align: center
.FontSize(24) font-size: 24px
.Bold() font-weight: bold veya

Sayfa Ayarları Dönüşümü

// QuestPDF
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);

// IronPDF
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;    // mm (2cm = 20mm)
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// QuestPDF
page.Size(PageSizes.A4);
page.Margin(2, Unit.Centimetre);

// IronPDF
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;    // mm (2cm = 20mm)
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
' QuestPDF
page.Size(PageSizes.A4)
page.Margin(2, Unit.Centimetre)

' IronPDF
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20 ' mm (2cm = 20mm)
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
$vbLabelText   $csharpLabel

Geçiş Sonrası Yeni Özellikler

IronPDF'e geçiş yaptıktan sonra QuestPDF'in sağlayamadığı yetenekler kazanırsınız:

PDF Birleştirme

var cover = renderer.RenderHtmlAsPdf("<h1>Cover</h1>");
var content = renderer.RenderHtmlAsPdf(reportHtml);
var existing = PdfDocument.FromFile("appendix.pdf");

var merged = PdfDocument.Merge(cover, content, existing);
merged.SaveAs("complete.pdf");
var cover = renderer.RenderHtmlAsPdf("<h1>Cover</h1>");
var content = renderer.RenderHtmlAsPdf(reportHtml);
var existing = PdfDocument.FromFile("appendix.pdf");

var merged = PdfDocument.Merge(cover, content, existing);
merged.SaveAs("complete.pdf");
Dim cover = renderer.RenderHtmlAsPdf("<h1>Cover</h1>")
Dim content = renderer.RenderHtmlAsPdf(reportHtml)
Dim existing = PdfDocument.FromFile("appendix.pdf")

Dim merged = PdfDocument.Merge(cover, content, existing)
merged.SaveAs("complete.pdf")
$vbLabelText   $csharpLabel

PDF Güvenliği

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "reader";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "reader";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.OwnerPassword = "admin"
pdf.SecuritySettings.UserPassword = "reader"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SaveAs("protected.pdf")
$vbLabelText   $csharpLabel

URL'den PDF'e

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;

var pdf = renderer.RenderUrlAsPdf("https://example.com/report");
pdf.SaveAs("webpage.pdf");
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True

Dim pdf = renderer.RenderUrlAsPdf("https://example.com/report")
pdf.SaveAs("webpage.pdf")
$vbLabelText   $csharpLabel

Mevcut PDF'leri Yükleyin ve Düzenleyin

var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");
var pdf = PdfDocument.FromFile("existing.pdf");
// Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf");
Dim pdf = PdfDocument.FromFile("existing.pdf")
' Modify, merge, add security, etc.
pdf.SaveAs("modified.pdf")
$vbLabelText   $csharpLabel

Özellik Karşılaştırması Özeti

Özellik QuestPDF IronPDF
HTML-PDF Çekirdek: Desteklenmez (sınırlı QuestPDF.HTML uzantısı aracılığıyla) Birincil özellik
Öğrenme Eğrisi Fluent C# API Standart web becerileri
Şablon Önizlemesi Tamamlayıcı uygulama Herhangi bir tarayıcı
Tasarım İşbirliği Yalnızca geliştiriciler Tasarımcılar + Geliştiriciler
Mevcut Varlıklar Yeniden inşa edilmelidir HTML/CSS'i Yeniden Kullanın
PDF Manipülasyonu Birleştirme / ayıklama / üstüne bindirme (Doküman İşlemleri API'si, 2024.12.0+) Desteklenen
Güvenlik/İmzalama Şifreleme + izinler (dijital imzalama yok) Şifreleme + dijital imzalama
Lisanslama Modeli Gelire dayalı (1 milyon $ eşik) Geliştirici başına
Müşteri Etkisi 1 milyon $ gelirin üzerinde lisansa ihtiyaç olabilir None
Bootstrap/Tailwind Desteklenmiyor Desteklenen
URL'den PDF'ye Desteklenmiyor Desteklenen

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • TümQuestPDFbelge şablonlarını tanımlayın (Document.Create, .GeneratePdf)
  • Kullanılan DSL kalıplarını belgelerleyeceğinizi belirtin (.Column(), .Row(), .Table(), .Text())
  • Stil yöntemlerini CSS eşdeğerleriyle eşleyin
  • ironpdf.com adresinden IronPDF lisans anahtarını edinin

Paket Değişiklikleri

  • QuestPDF NuGet paketini kaldır
  • IronPdf NuGet paketini kurun: dotnet add package IronPdf

Kod Değişiklikleri

  • Ad alanı ithalatlarını güncelleyin
  • QuestPDF.Settings.License = LicenseType.Community'ı kaldırın
  • Document.Create() modelini ChromePdfRenderer + HTML'e dönüştürün
  • .Column() / .Row() yerine CSS Flexbox kullanın
  • .Table() yerine HTML elemanlarını kullanın
  • .Text().Bold().FontSize(24)'i <h1 style='...'>'ye dönüştürün
  • page.Header() / page.Footer() yerine TextHeaderFooter kullanın
  • .CurrentPageNumber() yerine {page} yer tutucusunu kullanın
  • .GeneratePdf()'i pdf.SaveAs()'a dönüştürün
  • Uygulama başlangıcında lisans başlatma ekle
  • Geçiş Sonrası

    • PDF çıktısının görsel karşılaştırması
    • Çok sayfalı belgelerde doğru sayfa ekiplerlerini test edin
    • Gerekli olduğunda yeni özellikler ekleyin (güvenlik, birleştirme, URL-to-PDF)

    Lütfen dikkate alınQuestPDF, ilgili sahibinin ticari markasıdır. Bu site, Codeux Software veyaQuestPDFbakımcıları ile ilişkili değildir, desteklenmemektedir veya sponsorluğu yapılmamaktadır. 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ı...

    Daha Fazla Oku

    Iron Destek Ekibi

    Haftada 5 gün, 24 saat çevrimiçiyiz.
    Sohbet
    E-posta
    Beni Ara