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'den IronPDF'ye geçmek, PDF üretim iş akışınızı özel bir C# akıcı API'den kapsamlı PDF manipülasyon yetenekleriyle standart bir HTML/CSS tabanlı yaklaşıma dönüştürür. Bu rehber, mevcut web becerilerinizi kullanmanıza, HTML şablonlarını yeniden kullanmanıza ve QuestPDF'nin basitçe sağlayamayacağı özellikleri kazanmanıza olanak tanıyan eksiksiz, adım adım bir geçiş yolu sunar.

Neden QuestPDF'den IronPDF'ye Geçilmeli

QuestPDF'yi Anlamak

QuestPDF, C#'ta programatik olarak PDF üretmek için spesifik olarak oluşturulmuş modern bir akıcı API'dir. Bazı eşdeğerleri gibi kapsamlı HTML'den PDF'e dönüştürme yeteneği sunmamasının aksine, QuestPDF, programatik düzen API işlevsellikleriyle sınırlıdır. QuestPDF, geliştiricilerin C# kodu kullanarak tamamen yeni belgeler oluşturması gerektiği senaryolarda mükemmel sonuç verir, HTML'ye güvenilmeden.

Kütüphane, geliri 1 milyon doların altında olan işletmeler için ücretsizdir, fakat bu gelir seviyesinin kanıtlanması gerekliliği, bazıları için uyumluluk yükü olabilir. Bu eşiği aşan kullanıcılar, QuestPDF'yi potansiyel bir çözüm olarak değerlendirdiğinde uzun vadeli planlamaya dahil edilmesi gereken bir lisans almak zorundadır.

Temel Sorun: HTML Desteği Yok

QuestPDF genellikle HTML'den PDF'e dönüştürme için önerilse de, HTML'yi hiç desteklememektedir. Geliştirici forumlarında yoğun bir şekilde tanıtılmasına rağmen,QuestPDFkendi özel düzen dilini kullanıyor ve bu da mevcut web becerilerinizden yararlanmak yerine tamamen yeni bir DSL öğrenmenizi gerektiriyor.

Özellik QuestPDF IronPDF
HTML'den PDF'ye DESTEKLENMİYOR Desteklenir
CSS Stili DESTEKLENMİYOR Tam CSS3
**Mevcut Sablo lar** Bastan yeniden insa edilmesi gerekir HTML/CSS varliklarini yeniden kullanin
Tasarim Araci Uyumlulugu None Herhangi bir web tasarim araci
Öğrenme Eğrisi Yeni tescilli DSL Web beceri transferi
Yerlesim Onizlemesi IDE plugin gerektirir Herhangi bir tarayicide onizle
PDF Manipulasyonu None Birleştirme, bölme, düzenleme

IronPDF, QuestPDF'nin tamamen eksik olduğu yerli HTML'den PDF'e işleme sağlar, belgeleri C# kodunda manuel olarak yeniden yapılandırma ihtiyaçını ortadan kaldırır. Bu, QuestPDF'nin gerçekleştiremeyeceği kapsamlı PDF manipülasyon özelliklerini (birleştirme, bölme, düzenleme, güvenlik) içerir.

QuestPDFLisans Modeli

QuestPDF'nin 'Community Lisansı', yalnızca şirketinizin yıllık brüt geliri 1 milyon doların altındaysa ücretsizdir. Müşterileriniz (yalnızca siz geliştirici olarak değil) eğer gelir eşiklerini aşarlarsa lisans satın almak zorunda kalabilirler. Basit bir geliştirici başına ticari lisansın aksine, QuestPDF'nin modeli, gelir açıklamasını ve uyumluluk takibini gerektirir.

IronPDF, basit lisanslama sunar: geliştirici başına bir lisans, gelir denetimleri yok, müşteri lisanslama gereksinimleri yok ve net, tahmin edilebilir maliyetler.

.NET 10 ve C# 14 benimsemeye yönelik 2025 ve 2026 yılı planlamaları yapan ekipler için IronPDF, gelir bazlı denetimler olmadan geçerli lisanslama ve mevcut web geliştirme becerilerinden yararlanan standart bir HTML/CSS yaklaşımı sunar.


Başlamadan Önce

Önkoş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ükleme yeteneği
  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ı Bulun

# 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

API Referansının Tamamı

Namespace 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şleştirmeleri

QuestPDF Kavrami 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 <table>
.Column() CSS görüntüle: esnek; flex-direction: column
.Row() CSS görüntüle: esnek; flex-direction: row
PageSizes.A4 RenderingOptions.PaperSize
.Margin() RenderingOptions.Margin*
.GeneratePdf() pdf.SaveAs()
N/A PdfDocument.Merge()
N/A PdfDocument.FromFile()
N/A pdf.SecuritySettings

Kod Geçiş Örnekleri

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

Önce (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

Sonra (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, temel paradigma farkını göstermektedir. QuestPDF, akıcı API'sini ve method zincirlemesi yoluyla stil vermeyi öğrenmeyi gerektirir: Document.Create(), container.Page(), page.Content().Column(), column.Item().Text(), .FontSize(20).Bold(). Ayrıca lisans türünü QuestPDF.Settings.License = LicenseType.Community ile ayarlamanız gerekmektedir.

IronPDF, her web geliştiricisinin bildiği standart HTML'i kullanır: Başlıklar için <h1>, paragraflar için <p>. Öğrenilecek bir özel DSL yok. IronPDF'in yaklaşımı, daha temiz bir sözdizimi ve modern .NET uygulamalarıyla daha iyi entegrasyon sunar. Kapsamlı örnekler için HTML'den PDF'e döndürme belgesine bakın.

Örnek 2: Fatura Oluşturma

Önce (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

Sonra (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, düzen için .Column() ve .Item(), boşluk için .PaddingTop(20) kullanır. IronPDF, başlık için <h1>, paragraflar için <p>, boşluk için <br/> ve kalın metin için <strong> şeklinde standart HTML kullanır.

Gerçek avantaj:IronPDFile, 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. Detayli bilgi icin eğitimlerimize bakin.

Örnek 3: Sayfa Numaralı Başlıklar ve Altbilgiler

Önce (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

Sonra (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() ile .AlignCenter() ve .CurrentPageNumber() gibi akıcı metotlar kullanır. IronPDF, TextHeaderFooter ve içinde CenterText ile FontSize gibi özelliklere sahip objeleri kullanır. {page} yer tutucu otomatik olarak geçerli sayfa numarasını ekler.


Kritik Geçiş Notları

Paradigma Değişimi

Temel değişiklik, özel bir C# DSL'den standart HTML/CSS'ye geçiştir:

// QuestPDF: Proprietary fluent 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: Proprietary fluent 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: Proprietary fluent 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

Yerleşim Şablon Dönüşümleri

QuestPDFDeseni HTML/CSS Eşdeğeri
.Column() görüntüle: esnek; flex-direction: column
.Row() görüntüle: esnek; flex-direction: row
.RelativeItem() flex: 1
.Table() <table> elemanı
.PaddingTop(20) padding-top: 20px veya <br/>
.AlignCenter() text-align: center
.FontSize(24) font-size: 24px
.Bold() font-weight: bold veya <strong>

Sayfa Ayarları Dönüşümleri

// 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çtikten sonra QuestPDF'in sunamadığı yetenekleri 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ükleme ve Düzenleme

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 Karsilastirma Ozeti

Özellik QuestPDF IronPDF
HTML'den PDF'ye Desteklenmiyor Ana özellik
Öğrenme Eğrisi Özel DSL Standart web becerileri
Şablon Önizleme Eklenti gerekli Herhangi bir tarayıcı
Tasarım İşbirliği Yalnızca geliştiriciler Tasarımcılar + Geliştiriciler
Mevcut Varlıklar Yeniden inşa edilmesi gerekiyor HTML/CSS yeniden kullanın
PDF Manipulasyonu Desteklenmiyor Desteklenir
Güvenlik/İmzalama Desteklenmiyor Desteklenir
Lisans Modeli Gelir tabanlı Geliştirici başına
Müşteri Etkisi Lisanslara ihtiyaç olabilir None
Bootstrap/Tailwind Desteklenmiyor Desteklenir
URL'den PDF'ye Desteklenmiyor Desteklenir

Goc Kontrol Listesi

Geçiş Öncesi

  • TümQuestPDFdoküman şablonlarını tanımlayın (Document.Create, .GeneratePdf)
  • Kullanılan DSL kalıplarını belgelendirin (.Column(), .Row(), .Table(), .Text())
  • Stil yöntemlerini CSS karşılıklarına eşleyin
  • ironpdf.com adresindenIronPDFlisans anahtarını alın

Paket Değişiklikleri

  • QuestPDF NuGet paketini kaldırın
  • IronPdf NuGet paketini yükleyin: dotnet add package IronPdf

Kod Değişiklikleri

  • Ad alanı eklerini güncelleyin
  • QuestPDF.Settings.License = LicenseType.Community kaldırın
  • Document.Create() desenini ChromePdfRenderer + HTML'e dönüştürün
  • .Column() / .Row() ile CSS Flexbox'ı değiştirin
  • .Table() yerineHTML <table>elemanlarını kullanın
  • .Text().Bold().FontSize(24)'yı <h1 style='...'>'ya dönüştürün
  • page.Header() / page.Footer() yerine TextHeaderFooter kullanın
  • .CurrentPageNumber() yerine {page} yer tutucuyu kullanın
  • .GeneratePdf()'yi pdf.SaveAs()'ya dönüştürün
  • Uygulama başlatıldığında lisans başlatma ekleyin

Geçişten Sonra

  • PDF çıktısının görsel karşılaştırması
  • Çok sayfalı belgeleri doğru sayfa bölmeleri için test edin
  • Gerektiğinde yeni yetenekler ekleyin (güvenlik, birleştirme, URL-to-PDF gibi)

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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