IRONSOFTWAREHOME

Iron Suite for .NET

10 .NET kütüphanesi. Tek bir tam belge suiti.

IRONPDF
IRONWORD
IRONXL
IRONPPT
IRONOCR
IRONBARCODE
IRONQR
IRONPRINT
IRONZIP
IRONWEBSCRAPER
KARŞILAŞTIRMA

Telerik Document Processing ve IronPDF Karşılaştırması: Teknik Kılavuz

Curtis Chau
Curtis Chau
Updated: 8 Mayıs 2026

.NET 8, birçok geleneksel PDF kütüphanesiyle uyumluluğu bozan çalışma zamanı değişiklikleri sundu. System.Drawing.Common, Windows dışı platformlarda kullanımdan kaldırılmaktadır. Native AOT, yansıma ağırlıkta kütüphaneler üzerinde yeni sınırlamalar getirir ve kapsayıcı öncelikli dağıtım modeli, Windows geliştirme makinelerinde ortaya çıkmayan bağımlılık sorunlarını açığa çıkarır. .NET Framework veya hatta .NET 6'da çalışan kütüphaneler, .NET 8'de NU1202, DllNotFoundException veya PlatformNotSupportedException hataları ile başarısız olabilir.

Bu makale, hangi PDF kütüphanelerinin .NET 8 ile çalıştığını belgelemekte, uyumsuz kütüphanelerle karşılaşılan specific hataları göstermekte ve Docker ve Azure Functions için dağıtım yapılandırmaları sağlamaktadır.

Hızlı Başlangıç: .NET 8'de HTML'den PDF Oluşturma

using IronPdf;

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;

var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
    <head><style>
        body { font-family: 'Segoe UI', sans-serif; padding: 40px; }
        h1 { color: #2563eb; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th { background: #2563eb; color: white; padding: 12px; text-align: left; }
        td { padding: 10px; border-bottom: 1px solid #e5e7eb; }
    </style></head>
    <body>
        <h1>Q4 Report</h1>
        <table>
            <tr><th>Metric</th><th>Value</th><th>Change</th></tr>
            <tr><td>Revenue</td><td>$1.2M</td><td>+12%</td></tr>
            <tr><td>Users</td><td>45,230</td><td>+23%</td></tr>
        </table>
    </body></html>");

pdf.SaveAs("report.pdf");

NuGet ile kurulum: Install-Package IronPdf. Ek bir yapılandırma olmadan net8.0 hedefler. Platforma özgü ayarlama gerektirmeden Windows, Linux, macOS, Docker ve Azure'a dağıtımlar.

.NET 8'de Eski PDF Kütüphaneleri Neden Başarısız Oluyor?

iText— .NET 8 ile Uyumsuz

iText (iText'in orijinal .NET portu) 2018'den beri güncellenmemiştir. Sadece .NET Framework'ü hedefler:

hata NU1202: Paket iTextSharp 5.5.13 net8.0 ile uyumlu değil
Text

Geçiş yolu, farklı bir API'ye sahip olan ve ya AGPL uyumluluğu (tüm uygulamanızı açık kaynağa dönüştürün) ya da ticari lisanslama gerektiren iText'tir. Fiyatlandırma yayınlanmamış — üçüncü taraf verileri $15,000–$210,000/yıl öneriyor.

wkhtmltopdf Çevreleyicileri — .NET 8'de DLL Yükleme Hataları

Wkhtmltopdf etrafında C# çevreleyicileri (DinkToPdf, Rotativa, NReco.PdfGenerator) .NET 8'deki dağıtım modeliyle yalnızca platforma özgü hatalar ile başarısız oluyor:

DinkToPdf — yerel kütüphane bulunamadı:

System.DllNotFoundException: 'libwkhtmltox' DLL'i yüklenemedi
Text

Rotativa.AspNetCore — .NET 8'in kapsayıcı öncelikli dağıtımıyla çelişen manuel ikili yol yapılandırması gerektiriyor:

// This pattern requires deploying wkhtmltopdf binaries alongside your app
// and breaks in Docker containers without explicit path configuration
RotativaConfiguration.Setup(env.WebRootPath, "wkhtmltopdf");

TuesPechkin / NReco — mimari uyumsuzluk:

System.BadImageFormatException: Dosya veya derlemeyi yükleyemedi
Text

Bu hatalar daha derin bir sorunu yansıtıyor: wkhtmltopdf, Temmuz 2024'te arşivlendi yamalanmamış CVE'lerle. Yerel binary mimarisi .NET 8'in platform algılama iyileştirmelerinin öncesinde geldi. Hiçbir düzeltme yok — sadece farklı bir kütüphaneye geçiş var.

PDFSharp— Linux'ta System.Drawing.Common Başarısızlıkları

PDFSharp, Microsoft'un .NET 6'da Windows dışı platformlar için kullanımdan kaldırdığı System.Drawing.Common'a bağlıdır. .NET 8'de, Linux veya Docker'a dağıtıldığında çalışma zamanı hatalarına neden olur:

using PdfSharp.Pdf;
using PdfSharp.Drawing;

var document = new PdfDocument();
// PlatformNotSupportedException on Linux:
// System.Drawing.Common is not supported on this platform

PDFSharp 6.x, bu bağımlılığı kaldırmak için çalışmıştır, ancak 2026 başı itibariyle platformlar arası destek hala tamamlanmamıştır. Sadece Windows dağıtımları için PDFSharp, .NET 8 ile çalışır. Linux, Docker veya bulut dağıtımları için güvenilir değildir.

.NET 8 ile Hangi PDF Kütüphaneleri Çalışır?

IronPDF— Tam .NET 8 Desteği, Çapraz Platform

IronPDF, gömülü Chromium render kullanarak doğrudan net8.0 hedef alır. System.Drawing.Common bağımlılığı yok, yerel binary yönetimi yok, platforma özel yapılandırma yok.

Minimal API entegrasyonu (ana .NET 8 modeli):

using IronPdf;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/invoice/{id}/pdf", async (int id, InvoiceService service) =>
{
    var invoice = await service.GetInvoiceAsync(id);
    var renderer = new ChromePdfRenderer();

    var pdf = renderer.RenderHtmlAsPdf(invoice.ToHtml());

    return Results.File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf");
});

app.Run();

Controller desenini kullanan ekipler için, aynı kod bir controller eylemi içinde çalışır — RenderHtmlAsPdf, .BinaryData ile bayta dönüştürebileceğiniz bir PdfDocument döndürür.

Lisanslama: Süresiz lisans $liteLicense (Lite — 1 geliştirici, 1 proje) başlangıç fiyatıyla. Professional: $1,499 (10 geliştirici). Enterprise: $2,999 (sınırsız). ironpdf.com adresinde yayınlanmıştır.

QuestPDF— .NET 8 Uyumlu, HTML Yok

QuestPDF, platform bağımlılıkları olmadan .NET 8 ile çalışır. Akıcı C# API'si belgeleri programatik olarak oluşturur — HTML ayrıştırıcı, CSS motoru, tarayıcı motoru yok:

using QuestPDF.Fluent;
using QuestPDF.Infrastructure;

QuestPDF.Settings.License = LicenseType.Community; // Free under $1M revenue

Document.Create(container =>
{
    container.Page(page =>
    {
        page.Size(PageSizes.A4);
        page.Margin(2, Unit.Centimetre);
        page.Content().Column(col =>
        {
            col.Item().Text("Q4 Report").FontSize(24).Bold();
            col.Item().Table(table =>
            {
                table.ColumnsDefinition(c => { c.RelativeColumn(2); c.RelativeColumn(1); c.RelativeColumn(1); });
                table.Header(h =>
                {
                    h.Cell().Text("Metric").Bold();
                    h.Cell().Text("Value").Bold();
                    h.Cell().Text("Change").Bold();
                });
                table.Cell().Text("Revenue"); table.Cell().Text("$1.2M"); table.Cell().Text("+12%");
                table.Cell().Text("Users"); table.Cell().Text("45,230"); table.Cell().Text("+23%");
            });
        });
    });
}).GeneratePdf("report.pdf");

QuestPDF HTML dönüştürmez. İş akışınız HTML şablonları kullanıyorsa (Razor görünümleri, pano dışa aktarımları, web içerik arşivi), farklı bir kütüphaneye ihtiyacınız var. Topluluk Lisansı, yıllık $1M brüt gelir altındaki işletmeleri kapsar; bu eşiği geçerseniz, ticari lisans gereklidir.

iText— .NET 8 Uyumlu, AGPL Lisanslı

iText (iText'in ardılı) .NET 8'i destekler. pdfHTML eklentisi, özel bir ayrıştırıcı ile HTML-to-PDF dönüşümü sağlar — bir tarayıcı motoru değildir, bu nedenle modern CSS özellikleri (Flexbox, Grid) doğru şekilde rendere edilmez.

Lisanslama: AGPL açık kaynak kullanımı için, ticarî uygulamalar için ticarî lisanslama (abonelik, fiyat açıklanmadı).iText2024'te abonelik bazlı ticarî lisansa geçiş yaptı.

Docker Dağıtımı

Standart Debian Görüntüsü (Önerilen)

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["MyApp.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish

FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app

# IronPDF works without additional apt-get installs
# Chromium dependencies are handled internally

COPY --from=build /app/publish .

ENV DOTNET_RUNNING_IN_CONTAINER=true
EXPOSE 8080
ENTRYPOINT ["dotnet", "MyApp.dll"]
Text

Alpine Görüntüsü (Daha Küçük Bir Kapasite)

FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build
WORKDIR /src
COPY ["MyApp.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet publish -c Release -o /app/publish

FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine
WORKDIR /app

# Alpine requires explicit Chromium dependencies
RUN apk add --no-cache chromium nss freetype harfbuzz ca-certificates ttf-freefont

COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Text

Debian görüntüsü hiçbir ek paket gerektirmez. Alpine görüntüsü daha küçüktür ama açıkça Chromium kütüphane kurulumu gerektirir. Çoğu dağıtım için, standart Debian görüntüsü daha basit ve daha güvenilir.

Azure Functions (İzole İşçi)

.NET 8 Azure Functions izole işçi modelini kullanır. IronPDF, isteğe bağlı PDF üretimi için bu modelle çalışır:

using IronPdf;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;

namespace MyApp.Functions;

public class PdfFunctions
{
    [Function("GenerateInvoice")]
    public async Task<HttpResponseData> GenerateInvoice(
        [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req)
    {
        var invoice = await req.ReadFromJsonAsync<InvoiceRequest>();

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(BuildInvoiceHtml(invoice));

        var response = req.CreateResponse(System.Net.HttpStatusCode.OK);
        response.Headers.Add("Content-Type", "application/pdf");
        response.Headers.Add("Content-Disposition",
            $"attachment; filename=invoice-{invoice.Id}.pdf");
        await response.Body.WriteAsync(pdf.BinaryData);

        return response;
    }

    private string BuildInvoiceHtml(InvoiceRequest invoice)
    {
        return $@"<html><body>
            <h1>Invoice #{invoice.Id}</h1>
            <p>Amount: ${invoice.Amount:F2}</p>
        </body></html>";
    }
}

public record InvoiceRequest(string Id, decimal Amount);

Dağıtım düşüncesi: IronPDF'in Chromium binary'si konuşlanma paketine ~200MB ekler. Azure Functions tüketim planının 1.5GB dağıtım boyutu sınırı vardır — toplam paket boyutunuzu doğrulayın. Premium veya Adanmış planlar için, bu sınır geçerli değil. İlk PDF üretimi için soğuk başlatma gecikmesi, Chromium başlatılırken 2–5 saniyedir.

Yerel AOT Uyumluluğu

.NET 8, Native AOT desteğini genişletti, ancak PDF kütüphaneleri temel sınırlamalarla karşı karşıya. Chromium tabanlı kütüphaneler (IronPDF, Puppeteer Sharp) AOT derlenemez çünkü tarayıcı süreçlerini gömüyor veya çalıştırıyorlar. iText, kırpma ile çelişen kapsamlı bir yansıma kullanır.

Mevcut durum <PublishAot>true</PublishAot> ile:

KütüphaneAOT DurumuSebep
IronPDFUyumsuzChromium çalışma zamanı gömüyor
iTextUyumsuzAğır yansıma, dinamik kod üretimi
QuestPDFKısmi (with TrimMode=partial)Bazı yansıma kullanımı
PDFSharpUyumsuzSystem.Drawing.Common bağımlılığı

Eğer Native AOT katı bir gereksinimse,QuestPDFile TrimMode=partial en yakın seçenektir — ancak yalnızca programlı doküman üretimi için, HTML dönüşümü için değil. HTML-PDF senaryoları için, AOT şu anda hiçbir kütüphane ile uygulanabilir değil.

Lisans Karşılaştırması

KütüphaneModelMaliyet.NET 8 Desteği
IronPDFSüresiz$liteLicense (Lite) / $1,499 (Pro) / $2,999 (Enterprise)Tam
iTextAGPL veya AbonelikYayınlanmamış ($15K–$210K/yıl tahmini)Tam
QuestPDFTopluluk / TicariÜcretsiz <$1M gelir, sonra ticariTam
PDFSharpMIT (ücretsiz)$0Yalnızca Windows (Linux tamamlanmamış)
Aspose.PDFGeliştirici başına~$999+Tam (Linux bellek sorunları)

.NET 9 İleri Uyumluluk

.NET 9 (Kasım 2025'te yayına çıktı), .NET 8'de belirtilmiş olan desenleri devam ettiriyor. .NET 8 ile çalışan kütüphaneler genel olarak değişiklik yapmadan .NET 9 ile çalışır. .NET 9'un PDF üretimi için ilgili başlıca eklemeleri ARM64 performansı iyileştirmeleri (Apple Silicon ve AWS Graviton üzerinde Chromium tabanlı renderden faydalanır) ve devam eden Yerel AOT geliştirmeleri (ancak PDF kütüphaneleri için temel sınırlamalar devam ediyor).

.NET 9'u hedefliyorsanız veya yükseltmeyi planlıyorsanız, .NET 8 çapraz platform dağıtımını tam olarak destekleyen bir kütüphane seçmek en güvenli yoldur. Platforma özel sorunları olan kütüphaneler (Linux'ta PDFSharp, libgdiplus ile Aspose), .NET 9'da bu sorunları çözmeleri pek olası değildir çünkü altta yatan bağımlılık kullanımdan kaldırma kalıcıdır.

Geçiş Rehberi

iText'ten IronPDF'e

// Before (iTextSharp — doesn't compile against net8.0)
using iTextSharp.text;
using iTextSharp.text.pdf;

var doc = new Document();
PdfWriter.GetInstance(doc, new FileStream("output.pdf", FileMode.Create));
doc.Open();
doc.Add(new Paragraph("Hello World"));
doc.Close();

// After (IronPDF — targets net8.0)
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<p>Hello World</p>");
pdf.SaveAs("output.pdf");

wkhtmltopdf Çevreleyicilerinden IronPDF'e Geçiş

// Before (DinkToPdf — DllNotFoundException on .NET 8)
var converter = new SynchronizedConverter(new PdfTools());
var doc = new HtmlToPdfDocument
{
    Objects = { new ObjectSettings { HtmlContent = html } }
};
var bytes = converter.Convert(doc);

// After (IronPDF — native .NET 8 support)
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
var bytes = pdf.BinaryData;

Her iki durumda da API yüzeyi daha basittir. Ana geçiş maliyeti, çıktının beklentilere uygun olduğunu doğrulamak için mevcut HTML şablonlarınızı yeni render motoruna karşı test etmenizdir.

Tavsiye

.NET 8 projeleri için HTML-PDF dönüşümü gerekmektedir: IronPDF, yerleşik Chromium render işlemiyle yapılandırma olmaksızın çapraz platform olarak çalışır. Docker dağıtımını, Azure Functions'ını ve Linux kapsayıcılarını kutudan çıktığı gibi kullanır.

.NET 8 projeleri için verilerden programatik olarak belge oluşturuluyorsa: QuestPDF'nin akıcı API'si iyi tasarlanmış ve .NET 8 uyumlu, Topluluk Lisansı çoğu girişim ve küçük ekipleri kapsar.

Windows'ta PDF işlemleri (birleştirme, ayırma, formlar) için: Dağıtım hedefiniz sadece Windows ise,PDFSharpgeçerli kalır.

iText'ten (uyumlu değildir), wkhtmltopdf sarmalayıcılardan (arşivlenmiş, CVE'ler) ve çapraz platform dağıtım için System.Drawing.Common'a bağlı herhangi bir kütüphaneden kaçının.

Lütfen dikkate alın: Aspose, DinkToPdf, NReco, PDFSharp, PuppeteerSharp, QuestPDF, Rotativa, TuesPechkin, iText, ve wkhtmltopdf kendi sahiplerinin tescilli markalarıdır. Bu site, Aspose Pty Ltd, CodeFlint, DinkToPdf, NReco, PuppeteerSharp, Rotativa, TuesPechkin, empira Software GmbH,iTextGroup veya wkhtmltopdf ile bağlantılı, onaylanan veya sponsor olunan bir site 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.
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
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