IRONSOFTWAREHOME
PDF ARAÇLARI

2025 için En İyi PDF Bloklama Yazılımını Keşfedin

Curtis Chau
Curtis Chau
Updated: 1 Temmuz 2026

2026'da HTML'yi PDF'ye dönüştürmek için bir C# kütüphanesi seçmek, ürettiğiniz belgelere uygun olan işleme motorunun kararına bağlıdır. .NET 10'da, alan üç gruba ayrılıyor. Tarayıcı tabanlı motorlar (Chromium, PuppeteerSharp,Playwrightveya gömülü bir yapı aracılığıyla), modern CSS ve JavaScript'i doğru bir şekilde işler. Programatik kütüphaneler (iText, PdfSharp), özel ayrıştırıcılarla PDF'ler çizer ve modern web doğruluğunu küçük bir ayak izi için değiştirir. Kod öncelikli düzen araçları (QuestPDF), HTML'yi tamamen atlar. Bu karşılaştırma, her seçeneği, çalışan C# kodu, bir değerlendirme kriteri, özgün kıyaslamalar ve gönderim yapabileceğiniz lisans koşulları ile birlikte ele alır.

Özet: hızlı cevap ve en hızlı çalışan kod

Güncel CSS ve JavaScript'in doğru bir şekilde işlenmesi için tarayıcı seviyesinde bir motor kullanın. Ücretsiz yolPuppeteerSharpveya Playwright'tir, ki bu araçlar Chrome seviyesinde çıktı sunar ama ayrı bir tarayıcı sürecini ve büyük bir ikiliyi yönetmenizi gerektirir. Ticari yol ise pakete Chromium'u dahil eder, böylece kurulacak veya başlatılacak ayrı bir şey kalmaz. Basit sabit belgeler için, PdfSharp gibi hafif bir kütüphane yeterlidir. HTML kaynağı olmayan kod tanımlı düzenler için,QuestPDFen kısa yoldur.

Gömülü bir motor kullanarak PDF'ye en hızlı çalışma yolu tek bir işleme çağrısıdır:

using IronPdf;

// The embedded Chromium engine ships inside the package, so no browser is launched or downloaded
var renderer = new ChromePdfRenderer();
// One synchronous call parses the HTML string and produces an in-memory PDF document
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Generated from HTML.</p>");
// Write the rendered document to disk
pdf.SaveAs("output.pdf");
C#

Aşağıda tam karşılaştırma, kıyaslamalar ve lisans detayları bulunmaktadır.

Senaryoya göre hızlı öneri tablosu

Derin dalışa geçmeden önce, kısıtlamanızı bir seçimle eşleştirin.

| Eğer ihtiyaç duyarsanız | Önerilen seçim |Neden| |---|---|---| | Modern CSS, Flexbox, Grid, ölçeklenebilir web yazı tipleri |IronPDF(gömülü Chromium) | Doğru işleme, hızlı çalışma, dağıtılacak harici tarayıcı yok | | Ücretsiz tarayıcı derecesinde işleme, operasyonları yönetmeye istekli |PuppeteerSharpveyaPlaywright| Gerçek Chromium,MITlisansı, daha ağır dağıtım boyutu | | Basit sabit HTML,JavaScriptyok | PdfSharp ile HtmlRenderer | Hafif, ücretsiz, eski CSS ile sınırlı | | Programatik sabit düzenler, HTML kaynağı yok |QuestPDF| Akıcı C# API, çok hızlı, bir HTML işleyicisi değil | | Sıfır altyapı, barındırılan işlem | Bir HTML'den PDF'ye API | Uygulamanızda bakımı yapılacak işleme motoru yok | | Wkhtmltopdf üzerinde eski proje | Bir Chromium motoruna geçiş yapın | Wkhtmltopdf arşivlenmiştir, güncel CSS'de başarısız olur ve kritik bir SSRF CVE'ye sahiptir |

C#'da HTML'den PDF'ye neyi zorlaştırıyor

Tarayıcılar ekranlar için akışkan içerik üretir; PDF sabit sayfalar, kesin boyutlar ve sıkı sayfa düzeni gerektirir. Bu iki model arasındaki fark, kütüphanelerin başarılı veya başarısız olduğu yerdir. Beş kriter onları ayırır ve bunlar tedarikçiden bağımsız olarak her araca uygulanır.

  1. İşleme motoru ve modern CSS: HTML ve CSS'yi ayrıştıran motor, temel farklılaştırıcıdır. Güncel şablonlar hizalama için CSS Flexbox'a, iki boyutlu düzen için CSS Grid'e, @font-face tipografi için ve vektör varlıklar için SVG'ye dayanır. Eski WebKit çatalları veya özel ayrıştırıcılar üzerinde inşa edilen motorlar, genellikle bunlarda sessizce başarısız olur ve stil verilmiş düzenleri dikey bir yığına düşürür. Ekran düzenini kağıt bir düzen haline getirirken @media print kurallarının doğru ele alınması da aynı derecede önemlidir.

  2. JavaScript yürütme ve işleme bekleme: bugünün içeriğinin çoğu istemci tarafında inşa ediliyor. Chart.js gibi grafik kütüphaneleri ve Blazor WebAssembly gibi tek sayfa çerçeveleri, sayfa tamamlanmadan önce DOM'uJavaScriptile oluşturur.JavaScriptmotoru olmayan bir kütüphane, boş grafikler veya yarı yüklenmiş sayfalar üretir, bu nedenle dinamik belgeler için betikleri çalıştırma ve işlemeye hazır bir sinyal bekleme yeteneği belirleyicidir.

  3. Dağıtım ağırlığı ve soğuk başlatma: harici başsız bir tarayıcıyı yönlendiren araçlar, yüzlerce megabaytlık ikilileri indirir, konteyner görüntülerini şişirir ve soğuk başlatmaları yavaşlatır. Depolama ve hafızanın yetersiz olduğu AWS Lambda veya Azure Functions gibi sunucusuz ortamlarda konteyner ağırlığı, bir kütüphanenin kullanılabilir olup olmadığını belirler.

  4. Lisans ve hukuki kapsamı: bir lisans maliyet dışında başka şeyleri dikte eder. .NET PDF alanı, izin verilen şartlarla (MIT, Apache 2.0), ağ yönlü uygulamalar için kaynağınızı açmanızı gerektirebilecek Copyleft şartlar (AGPLv3), gelir kapalı topluluk katmanları ve sürekli ticari lisansları kapsar. Yanlış seçim, yalnızca denetim sırasında ortaya çıkan bir yükümlülük oluşturabilir.

  5. Performans ve ölçekli bellek: konsol testinde iyi olan bir kütüphane, eşzamanlı bir web API'si altında durabilir. Bazıları işi akış halinde yapar; diğerleri tüm belgeyi bir kerede belleğe yükler ve toplu işler sırasında çöp toplama duraklamalarına neden olur. Soğuk başlatma, hızlı işleme ve işlem başına bellek, her biri ayrı dikkat gerektiren üç ayrı ölçümdür.

Kütüphaneler, her biri çalışan kod ile

Ücretsiz ve açık kaynak kodlu seçenekler önce gelir. Aşağıdaki her kod parçası .NET 10'da derlenmiş ve çalıştırılmıştır ve Chromium motorları hem HTML dizgisi hem de URL girişi gösterir, çünkü her birini desteklerler.

PuppeteerSharp

PuppeteerSharp, Google'ın Node.js Puppeteer'ının bir .NET portudur ve ilk olarak 2017'de piyasaya sürülmüştür. Chromium'un başsız bir örneğini Chrome DevTools Protokolü üzerinden yönlendirir. Bu, bir süreç düzenleyicisidir, uygulama içi bir kütüphane yerine: uygulama, BrowserFetcher ile bir Chromium sürümünü indirir, tarayıcıyı başlatır, sayfa içeriğini ayarlar ve PDF'yi yakalar.

using PuppeteerSharp;
using System.Threading.Tasks;

public class PuppeteerExample
{
    public async Task GeneratePdfAsync()
    {
        // Download a matching Chromium build if it is not already present (the 100-300 MB fetch)
        await new BrowserFetcher().DownloadAsync();

        // Start a headless browser process; await using disposes it to avoid orphaned processes
        await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
        // Open a fresh tab to work in
        await using var page = await browser.NewPageAsync();

        // Load the HTML directly into the page instead of navigating to a URL
        await page.SetContentAsync("<h1>Invoice Report</h1><p>Rendered with PuppeteerSharp.</p>");
        // Drive Chrome's print pipeline to emit the PDF file
        await page.PdfAsync("puppeteer_output.pdf");
    }
}
C#

Canlı bir URL'yi bir dizgi yerine yakalamak için çağrıdan önce ona gidin:

// Navigate the tab to a live URL so the loaded page becomes the render source
await page.GoToAsync("https://example.com");
// Capture whatever is currently displayed as a PDF
await page.PdfAsync("from_url.pdf");
C#

Güçlü Yönler:

  • İşleme Google Chrome ile eşleşir, tam Flexbox, Grid ve web yazı tipi desteği ile.
  • JavaScript'i çalıştırır ve yakalama öncesinde ağ-hareketsizliğini bekleyebilir. -MITlisanslıdır, bu nedenle ticari kullanım copyleft yükümlülüğü içermez.

Sınırlamalar:

  • İlk çalıştırma, 100 MB ila 300 MB arasında bir Chromium sürümünü indirir.
  • Her tarayıcı örneği önemli miktarda bellek tüketir, bu nedenle eşzamanlı toplu işlemler için bir tarayıcı havuzuna ihtiyaç vardır.
  • Gömülü PDF/A veya PDF/UA çıkışı yoktur.

License: MIT. Ücretsiz Chrome doğruluğunda çıktı istediğinizde ve ekip operasyon yükünü üstlenebiliyorsa bunu deneyin. Bu değiş tokuş hakkında odaklanmış bir karşılaştırma için, PuppeteerSharp ve IronPDFkarşılaştırmasına bakın.

###Playwrightfor .NET

Playwright Microsoft tarafından Chromium, WebKit ve Firefox için çapraz tarayıcı otomasyon çerçevesi olarak sürdürülür. Ekipler onu HTML'den PDF'ye Page.PdfAsync ile yeniden kullanır, ancak PDF üretimi yalnızca Chromium ile çalışır. Kurulum, bir kerelik kurulum adımıyla tarayıcı ikililerini indirir.

using Microsoft.Playwright;
using System.Threading.Tasks;

public class PlaywrightExample
{
    public async Task GeneratePdfAsync()
    {
        // Create thePlaywrightdriver that manages the installed browser binaries
        using var playwright = await Playwright.CreateAsync();
        // PDF output is Chromium-only, so launch the Chromium build specifically
        await using var browser = await playwright.Chromium.LaunchAsync();
        // Open a new page (tab) to render into
        var page = await browser.NewPageAsync();

        // Set the HTML content in place rather than navigating to a URL
        await page.SetContentAsync("<html><body><h1>Sales Dashboard</h1></body></html>");
        // Emit the PDF with an explicit A4 page format
        await page.PdfAsync(new PagePdfOptions { Path = "playwright_output.pdf", Format = "A4" });
    }
}
C#

İlk çalıştırmadan önce pwsh bin/Debug/net10.0/playwright.ps1 install chromium ile tarayıcıyı yükleyin (veya eşdeğer kurulum giriş noktasını kodda çağırın).

Canlı bir URL için önce sayfaya gidin:

// Load a live URL so its rendered DOM becomes the PDF source
await page.GotoAsync("https://example.com");
// Export the loaded page as an A4 PDF
await page.PdfAsync(new PagePdfOptions { Path = "from_url.pdf", Format = "A4" });
C#

Parladığı yer:

  • Aktif bir sürüm döngüsü ile Microsoft tarafından desteklenmektedir.
  • Tarayıcı açıldıktan sonra düşük ilk işleme gecikmesi.
  • Modern web standartlarını ve istemci tarafı JavaScript'i doğru bir şekilde işler.

Yakalanması gereken: -PuppeteerSharpile aynı ağır ikili ayak izi ve tarayıcı yönetimi.

  • Tarayıcı-bağlamı dikkatli bir şekilde ele alınmadığında bellek artar.
  • PDF çıkışı, Chrome'un yazdırma hattının yan bir özelliğidir, bu nedenle belge işleme özellikleri bulunmaz.

License: MIT. Bir proje zaten test içinPlaywrightkullanıyorsa ve yanına ücretsiz işleme istiyorsa idealdir.

wkhtmltopdf (DinkToPdf aracılığıyla)

On yılı aşkın bir süredir wkhtmltopdf varsayılan HTML'den PDF'ye dönüştürme aracı idi. .NET'te genellikle bir C# sarmalayıcı olan DinkToPdf aracılığıyla tüketilir. Sarmalayıcı API'si temizdir, ancak altındaki motor sorundur.

using DinkToPdf;

public class DinkToPdfExample
{
    public void GeneratePdf()
    {
        // SynchronizedConverter serializes calls into the non-thread-safe native libwkhtmltox library
        var converter = new SynchronizedConverter(new PdfTools());

        // Describe the document: global page settings plus one or more HTML content objects
        var doc = new HtmlToPdfDocument
        {
            // Set the paper size and the output file path for the whole document
            GlobalSettings = { PaperSize = PaperKind.A4, Out = "legacy_output.pdf" },
            // Each object is a chunk of HTML to render into the PDF
            Objects = { new ObjectSettings { HtmlContent = "<h1>Legacy Report</h1>" } }
        };

        // Hand the descriptor to the native engine, which writes the file defined in Out
        converter.Convert(doc);
    }
}
C#

Bu kod derlenir, ancak temiz bir makinede çalıştırıldığında yerel ikililer çıkış dizinine kopyalanana kadar System.DllNotFoundException: Unable to load DLL 'libwkhtmltox' hatası verir. Bu yerel bağımlılık adımı, bu motorun dağıtım sürtüşmesini getiren ilk işarettir.

Üst taraf:

  • Modern tarayıcı başlatmanıza gerek olmadan hızlı soğuk başlatma.
  • Düşük bellek, işleme başına yaklaşık 50 MB.

Alt taraf:

  • QtWebKit motoru (yaklaşık 2012-2013 WebKit anlık görüntüsü ki Qt bunu 2015'te kullanım dışı bıraktı ve 2016'da kaldırdı) Flexbox, Grid veya modern JavaScript'i işleyemez.
  • Wkhtmltopdf deposu 2 Ocak 2023 tarihinde arşivlendi ve son sürüm, 0.12.6, Haziran 2020'ye aittir.
  • CVE-2022-35583 taşır, CVSS 9.8 (kritik) olarak derecelendirilen ve proje artık bakımı yapılmadığı için yamanmayan bir Sunucu Tarafı İstek Sahteciliği hatasıdır.

Lisans: DinkToPdf kendisi MIT'tir, ancak LGPLv3 wkhtmltopdf ikililerini bağlar, dolayısıyla etkin yükümlülük wkhtmltopdf'ten kaynaklanır. Göç bekleyen eski iş akışlarına uygundur, güvenlik riski göz önünde bulundurularak. Tam göç resmini görmek için, wkhtmltopdf vs IronPDFkarşılaştırmasına bakın.

PdfSharp and HtmlRenderer

PdfSharp, yaygın olarak kullanılan bir açık kaynak kütüphanesidir, ancak yaygın bir yanlış anlama, kendi başına HTML dönüştürdüğüdür. Öyle değildir. PdfSharp, düşük seviyeli, koordinata dayalı bir çizim API'si sağlar. HTML dönüştürmek için, topluluk köprüsü HtmlRenderer.PdfSharp ile eşleştirirsiniz; bu, HTML'yi ayrıştırır ve PdfSharp çizim komutları yayar.

using PdfSharp;
using TheArtOfDev.HtmlRenderer.PdfSharp;

public class PdfSharpExample
{
    public void GeneratePdf()
    {
        string html = "<h1>Simple Title</h1><p>Statically rendered text.</p>";

        // The HtmlRenderer bridge parses the HTML and emits PdfSharp drawing commands onto an A4 page
        var pdf = PdfGenerator.GeneratePdf(html, PageSize.A4);
        // Persist the resulting PdfSharp document to disk
        pdf.Save("simple_document.pdf");
    }
}
C#

.NET 10'da iki kurulum detayı önemlidir. Köprü, modern .NET üzerinde varsayılan olarak bulunmayan Windows-1252 kod sayfasını bekler, bu nedenle başlanıçta bir kere kayıt edilmelidir Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) ile. Köprü, daha yeni PdfSharp 6.x paketiyle eşleştirildiğinde MissingMethodException hatası verir, bu nedenle HtmlRenderer'ın kendi uyumlu PdfSharp'ını çekmesi yerine en son sürüme sabitlemekten kaçının.

Çalışanlar:

  • Gerçekten izin vericiMITlisansı, gelir sınırı yok.
  • Hafif, yerel ikili yok veya tarayıcı getirme yok.
  • Saf C#, bu nedenle işletim sistemleri arasında dağıtım basittir.

Kırılanlar:

  • HTML köprüsü yaklaşık olarak HTML 4.01 ve CSS Seviye 2 ile sınırlıdır ve dokuz yıl süren hareketsizliğin ardından 2025 sonlarında tek bir sürüm seti görmüştür.
  • HiçbirJavaScriptyürütme yok.
  • page-break-inside: avoid gibi yazdırma kuralları desteklenmez, dolayısıyla tablo satırları sayfalara bölünür.

License: PdfSharp MIT, HtmlRenderer BSD-3-Clause. Karmaşık düzenler olmadan basit statik belgeler için doğru çağrı. Özellik bazında bir döküm için, PdfSharp vs IronPDFkarşılaştırmasına bakın.

QuestPDF

QuestPDF farklı bir yol izler: HTML'yi yok sayar ve düzenleri C#'da akıcı bir API aracılığıyla tanımlar. Nitelik olarak başlayan veri yerine nesneler olarak başlarsa, bu sadece HTML üretme adımını ortadan kaldırır.

using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;

public class QuestPdfExample
{
    public void GeneratePdf()
    {
        // The revenue-gated license tier must be declared before any document is built
        QuestPDF.Settings.License = LicenseType.Community;

        // Compose the layout in C# through the fluent API; no HTML anywhere
        var document = Document.Create(container =>
        {
            container.Page(page =>
            {
                // Define the physical page size and margins
                page.Size(PageSizes.A4);
                page.Margin(2, Unit.Centimetre);
                // Place content into named page regions (header and body)
                page.Header().Text("Programmatic Invoice").FontSize(24);
                page.Content().Text("This document is generated without HTML.");
            });
        });

        // Run the layout engine and write the composed document to a file
        document.GeneratePdf("fluent_layout.pdf");
    }
}
C#

Güçlü yanlar:

  • Çok hızlıdır, çünkü DOM ayrıştırmayı ve tarayıcı düzenini atlar.
  • Yüksek iş hacimli toplu çalışmaların gereksinimlerine uygun tahmin edilebilir, çizgisel bellek.
  • Tasarım sırasında canlı önizleme ve hızlı yenileme sağlayan bir yardımcı uygulama.

Zayıf yanlar:

  • Bir düzen motorudur, HTML işleyici değil, bu nedenle bir URL veya mevcut HTML şablonunu dönüştüremez.
  • Mevcut HTML veya Razor belgeleri, akıcı API'ye tam bir yeniden yazım gerektirecektir.
  • Lisans MIT'ten gelir engelli bir modele geçti.

Lisans: Topluluk Lisansı (yıllık geliri 1.000.000 USD'nin altında olan işletmeler için ücretsiz) veya ücretli Profesyonel ve Enterprise katmanı. Yapılandırılmış veri ile yönlendirilen kod tanımlı, sabit düzenli belgeler için uygundur. HTML'ye karşı akıcı düzen değiş tokuşu için, QuestPDF vs IronPDFkarşılaştırmasına bakın.

iText (pdfHTML)

iText 7 ve 8, programatik PDF işleme ile tanınır ve pdfHTML eklentisi HTML'yi dönüştürür. Chromium araçlarından farklı olarak, pdfHTML, HTML etiketlerini iText nesneleriyle eşleyen özel bir ayrıştırıcı kullanır ve bir tarayıcı çalıştırmaz.

using iText.Html2pdf;
using System.IO;

public class iTextExample
{
    public void GeneratePdf()
    {
        string html = "<h1>Report</h1><p>Converted with pdfHTML.</p>";

        // Open the destination stream; using ensures the file handle is released after writing
        using var dest = File.Create("output.pdf");
        // pdfHTML maps the HTML tags to iText objects and writes them to the stream (no browser involved)
        HtmlConverter.ConvertToPdf(html, dest);
    }
}
C#

Yeni bir projede, kriptografi yolu için iText'in gerektirdiği itext7.bouncy-castle-adapter paketini ekleyene kadar bu hata verir. Bu ek bağımlılık kaçırılması kolaydır ve olmadan opak bir hata oluşturur.

Avantajlar:

  • Derin PDF işlem, imzalama ve iText ekosistemi genelinde düzeltme.
  • Semantic HTML'den PDF/A ve PDF/UA üretir, bu uyumluluk çalışmalarına uygundur.
  • Hiçbir tarayıcı başlatmadığı için hızlı başlangıç zamanı.

Dezavantajlar:

  • Hiçbir betik yürütme yok, bu nedenle dinamik içerik işlenmez.
  • Grid gibi CSS3 özellikleri desteklenmez ve sessizce başarısız.
  • AGPLv3 lisansı, kapalı kaynak uygulamalar için ticari lisans gerektirir ve büyük dosyalar tam olarak tamponlanır, akış yapılmaz.

Lisans: AGPLv3 veya Ticari. Yoğun PDF işleme ve uyumluluk iş akışları için sabit, statik HTML ile seçin. Lisans ve işlem detayları için, iText 7 vs IronPDFkarşılaştırmasına bakın.

IronPDF

IronPDF, Chromium motorunu NuGet paketinin içine gömer ve bunu bir C# API üzerinden sunar, böylece harici bir şey başlatmanız veya havuz yapmanız gerekmez. Bu, ücretsiz tarayıcı araçları ile programatik kütüphaneler arasında yer alır ve tarayıcıyı yönetmeden doğruluğu yüksek işleme sağlar.

using IronPdf;
using System.Threading.Tasks;

public class IronPdfExample
{
    public async Task GeneratePdfAsync()
    {
        // Create the in-process Chromium renderer (no external browser to launch)
        var renderer = new ChromePdfRenderer();
        // Turn on theJavaScriptengine so client-side chart scripts execute before capture
        renderer.RenderingOptions.EnableJavaScript = true;
        // Wait 500 ms after load to let JavaScript-built content settle before rendering
        renderer.RenderingOptions.WaitFor.RenderDelay(500);

        // Render the HTML string asynchronously into an in-memory PDF
        var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Quarterly Report</h1><div class='chart'></div>");
        // Save the finished PDF to disk
        pdf.SaveAs("report.pdf");
    }
}
C#

Aynı işleyici, bir URL'yi PDF'ye tek bir çağrıyla dönüştürür:

// RenderUrlAsPdf fetches and renders the live page in one call, no navigation step needed
var fromUrl = new ChromePdfRenderer().RenderUrlAsPdf("https://example.com");
// Write the captured page to disk
fromUrl.SaveAs("from_url.pdf");
C#

Razor ve MVC görünümlerini de PDF'ye işler ve doğrudan HTML dosyalarını dönüştürür. Tam özellik tanıtımı, HTML'den PDF'ye eğitim'inde yer alır.

Avantajları:

  • Grid, Flexbox ve istemci tarafı scriptlerle baş edebilen tarayıcı seviyesinde işleme.
  • Harici çalıştırılabilir dosyalar veya tarayıcı havuzu olmadan dağıtım.
  • PDF/A üretir ve dijital imzalar uygular, ki bu, test çerçevelerinden ayrılır.

Dezavantajları:

  • Üretim için ücretsiz bir katman olmadan ticari lisans gereklidir.
  • Yeni dağıtımdan sonra, açılış işleme tek seferlik bir başlangıç maliyeti taşır, ardından sonraki işlemler hızlı bir şekilde ısınmış bir yola yerleşir.

Lisans: Ticari, sürekli. Güncel CSS hacim açısından önemli olduğu ve operasyon yükünü azaltırken doğruluğu yüksek tutmanın öncelikli olduğu yerlerde kullanın.

Tam Karşılaştırma Tablosu

Her kütüphane için bir satır, lisans sütunu dahil edilmiştir çünkü bu, doğrudan ücretsiz-karşılığı-ücretli kararını yönlendirir.

|Kütüphane| Motor |JavaScript|Modern CSS| Dağıtım ağırlığı |Lisans| En iyi | |---|---|---|---|---|---|---| |IronPDF|Gömülü Chromium|Evet|Tam| Hafif (NuGet) | Ticari | Ölçeklenebilir modern CSS | |PuppeteerSharp| Harici Chromium |Evet|Tam| Ağır (ikili indirme) |MIT| Ücretsiz tarayıcı işleme | |Playwright| Harici Chromium |Evet|Tam| Ağır (ikili indirme) |MIT| Modern ücretsiz işleme | | wkhtmltopdf | Eski QtWebKit | Sınırlı | Zayıf | Orta (yerel kütüphaneler) | LGPLv3 (sarmalayıcı MIT) | Eski iş akışları | | PdfSharp + HtmlRenderer | Özel çizim |Hayır| Sınırlı | Hafif |MIT/BSD-3 | Basit sabit HTML | |QuestPDF|Programvaruta|Yok|Yok| Hafif | Topluluk / Ücretli | Kod tanımlı düzenler | |iText pdfHTML|Özel ayrıştırıcı|Hayır| Sınırlı |Orta | AGPLv3 / Ticari |PDF işleme|

Lisansları ve motor desteği değiştiği için her entegre etmeden önce her hücreyi her kütüphanenin mevcut sürümüne karşı doğrulayın.

Ücretsiz ve Ücretli: hangisi doğru çağrı

Ücretsiz görünen araçlar, .NET PDF alanında operasyonel ve hukuki maliyetleri gizleyebilir, dolayısıyla ücretsiz bir aracın doğru seçim olduğu durumları belirlemek, dürüst bir başlangıç noktasıdır.

Ücretsiz bir açık kaynak kütüphane gerçekten düz, statik belgeler, düşük hacimli veya harici süreçleri yönetme kapasitesine sahip bir ekip için yeterlidir. Detaylı stil içermeyen, metin ağırlıklı bir fiş,MITlisanslı PdfSharp ile iyi bir şekilde işlenir. Bir ekip test için zatenPlaywrightçalıştırıyorsa ve konteynerizasyon sorununu çözmüşse, ara sıra PDF işleri için yeniden kullanılması verimli olur.

Ücretsiz yazılım, ücretsiz uygulama anlamına gelmez. Özet tarayıcıların gizli maliyeti, bakım saatlerinde ortaya çıkar: sunucunun yük altında çökmesini önleyecek şekilde tarayıcı yaşam döngüsünü havuzlamak, konteyner görüntüleri boyunca Linux paylaşılan kütüphane bağımlılıklarını yapıdan geçirmek ve ağır tarayıcı işlemlerinin altyapı maliyetine katlanmak. Basit statik belgeler için ücretli bir tarayıcı motoru aşırıdır ve hafif, ücretsiz bir kütüphane daha iyi bir çağrıdır.

Ticari bir Chromium kütüphanesi, iş CSS3'ün doğruluğunu hacimde gerektirdiğinde, erişilebilir PDF/UA çıktısı sağladığında ve tedarik maliyetinin üzerinde dağıtımın basitliği olduğunda haklı çıkar. Ticari lisanslama ayrıca copyleft açığa çıkmasını ortadan kaldırır. AGPLv3 kütüphaneleri, örneğin iText'i bir SaaS platformuna eklemek, ticari lisans satın alınmadığı sürece şirketi kaynak kodunu açıklama yükümlülüğüne sokabilir. Gerçek karşılaştırma toplam sahiplik maliyetidir: bir tarafta operasyon zamanı ve hukuki risk, diğer tarafta lisans ücretleri.

Kıyaslamalar

Aşağıdaki her sayı, tek bir makine üzerinde yapılan uygulamalı bir çalışmadan gelir, bu yüzden onları yön gösterici olarak değerlendirin. Test belgesi, üstbilgilerde CSS Grid kullanan ve satır içi birJavaScriptçubuk grafiği içeren bir 30 satırlık fatura. Test, .NET 10 üzerinde standart bir Windows iş istasyonunda çalıştırıldı. Her sıcak veri, ilk sekiz işleme denemesinin ortalamasıdır ve tepe bellek, .NET süreci ve oluşturduğu tarayıcı alt süreçlerinin tepe çalışma setidir.

|Kütüphane| Soğuk başlatma (süreç başına) | Sıcak işleme (8'in ortalaması) | Tepe bellek | |---|---|---|---| |IronPDF| 345 ms | 202 ms | 406 MB | |PuppeteerSharp| 746 ms | 204 ms | 611 MB | |Playwright| 588 ms | 132 ms | 515 MB | | wkhtmltopdf, iText, PdfSharp | sub-second | not comparable | 50 ile 120 MB |

Bir kere ısındıklarında, üç tarayıcı motoru, aynı belgeyi yaklaşık 130 ile 200 ms arasında işler, bu denemede en hızlısı Playwright'tir ve IronPDFvePuppeteerSharpyakın bir zamanda çatışırlar. Soğuk başlatma aşamasında gömülü motor burada en hızlı başlayan olur, çünkü başlatılması gereken ayrı bir tarayıcı olmadan süreç içinde çalışır, ancak yepyeni bir dağıtımdan sonra ilk işleme, daha sonraki süreç başlangıçlarının atlattığı tek seferlik motor başlatma maliyetini içerir. Eski ve özel ayrıştırıcı araçları (wkhtmltopdf, iText, PdfSharp), bir saniyeden kısa sürede başlar ve en az belleği kullanır, ancak bu avantaj test belgesi için anlamsızdır, çünkü Grid düzenini veyaJavaScriptgrafiğini doğru bir şekilde işleyemezler. wkhtmltopdf, yerel ikililer ilk sağlanmadıkça hiç çalışamazdı.

Çıktıda doğruluk farkı gösterir. Tarayıcı motoru, CSS Grid başlığını, stil verilmiş tabloyu veJavaScriptçubuk grafiği işler:

Chromium motoru tarafından işlenen test faturası, CSS Grid başlığı, stil verilmiş tablo ve hepsi mevcutJavaScriptçubuk grafiği

PdfSharp ile HtmlRenderer üzerinden aynı belge, grid başlığını, tablo başlığı stilini veJavaScriptgrafiğini düşürür:

PdfSharp ile HtmlRenderer tarafından işlenen aynı fatura, CSS Grid başlığı veJavaScriptgrafiği eksik

Hangisini kullanmalısınız?

Her ortak senaryo için kısa bir karar:

  • CSS çerçeveleri ve tek sayfa çıktısı: yalnızca tarayıcı düzeyinde bir işleyici yetişir.
  • Basit statik HTML veya metin fişleri: PdfSharp ve küçük ücretsiz bir yığın bunu kapsar.
  • Hiçbir işaretleme içermeyen programatik, veriye dayalı düzenler:QuestPDFen hızlı şekilde oraya ulaşır.
  • İşlem kapasitesine sahip ücretsiz tarayıcı işleme:PuppeteerSharpveya Playwright.
  • Sıfır altyapı: barındırılan bir HTML'den PDF'ye API.
  • Eski wkhtmltopdf göçü: Güvenlik ve CSS desteği için bir gömülü motoruna geçin.

Ağır CSS çerçevesi çıktısı düşük operasyonel ihtiyaçlarla buluştuğunda, IronPDF, ilk olarak ulaşılacak gömülü seçenektir, aynı zamanda ücretsiz tarayıcı araçları, bir başsız tarayıcı etrafındaki işlemleri sahiplenebilecek ekipler için doğru çağrı olmaya devam eder.

Dağıtım değerlendirmeleri

.NET belge üretimindeki en büyük sürtünme, bir Windows dizüstü bilgisayarda çalışan bir kütüphane ile Linux konteynerinde başarısız olan arasındaki farktır. Bir kütüphane seçmek, onun nereye gönderileceğini öngörmek anlamına gelir.

Docker'da, orkestralı tarayıcılar, örneğinPuppeteerSharpve Playwright, pek çok Chromium'un Linux bağımlılıklarını, libnss3, libatk-bridge2.0-0 ve libgbm1 dahil taşıyan bir temel görüntüye ihtiyaç duyarlar. Microsoft,Playwright.NET görüntülerini mcr.microsoft.com/playwright/dotnet (örneğin, bir v1.NN.0-noble etiketi için) yayınlar ve bu görüntüler yaklaşık bir gigabayta yakın çalışır. Gömülü motorlar, örneğin IronPdf.Linux gibi her bir mimari için NuGet paketleri göndererek fazlalığı aşarlar, bu paketteki yerel ikilileri ve standart aspnet temel görüntüsünü çalışır durumda tutar, elle apt-get adımları olmadan.

AWS Lambda, farklı bir duvar yükseltir. Açılmış dağıtım paketi üzerinde 250 MB'lik bir sert limit uygular, ancak başsız bir Chromium yapı tek başına 150 MB ila 300 MB çalışır. Bu,PuppeteerSharpveya Playwright'in standart bir zip dağıtımını imkansız kılar ve ekipleri, 10 GB'a kadar izin veren ancak daha kötü bir soğuk başlatma maliyeti getiren, konteyner tabanlı Lambda'ya yönlendirir.

Azure App Service, her iki işletim sisteminde kendi kısıtlamalarını ekler. Windows App Service kum havuzu, çoğu User32 ve GDI32 çağrısını engeller ve bu nedenle GDI bağımlı işleme yollarını kırar. Linux App Service üzerinde DinkToPdf dağıtmak, çıktıya yerel .so dosyalarını kopyalamak ve libfontconfig1 ve libxrender1 gibi bağımlılıkları yüklemek anlamına gelir; bir eksik olan, opak bir System.DllNotFoundException olarak ortaya çıkar. Bunlar, doğrulama çalışmasının tekrarladığı yerel-bağımlılık ve kum havuzu sorunlarıdır.

Sonuç ve öneri

C# HTML'den PDF'ye alanı, .NET 10'da aracı belge ile eşleştirmeyi ödüllendirir. Tam bir tarayıcı motoru, CSS çerçeveleri ve yanıtlı düzenler veJavaScriptgüdümlü sayfalar için temeldir ve orada ücretsiz ve ticari arasında bölünme, aslında operasyon çabası ve lisans maliyeti arasında bölünmedir. Programatik kütüphaneler, sabit, statik düzenler için verimli kalır ve QuestPDF, giriş işaretleme yerine yapılandırılmış veri olduğunda en hızlı yoldur. Wkhtmltopdf, sadece arşivlenmiş motoru ve yamanmamış SSRF hatası nedeniyle göç planlarına aittir. Doğru işleme yaparken operasyon yükünü çok fazla aşmadan isteyen ekipler için, URL'den PDF'ye, Razor görünüm işleme, PDF/A çıkışı ve dijital imzalar aynı API'den sunulurken, IronPDF, varsayılan gömülü seçenektir,PuppeteerSharpve Playwright, tarayıcı yaşam döngüsünü ekibin üstlenebildiği yerlerde güçlü ücretsiz seçenekler olmaya devam eder.

Kendi HTML'nizde deneyin

Hafif sevkiyat maliyeti ile doğruluğun projenize uyduğu bir durum varsa, ücretsiz bir IronPDFdenemesi başlatabilir ve taahhütte bulunmadan önce aynı test faturayı kendi şablonlarınıza karşı çalıştırabilirsiniz. IronPDF, Iron Software tarafından geliştirilmiştir, onların .NET kütüphaneleri ayrıca OCR, barkodlar, Word ve Excel'i de kapsar.

Okuduğunuz için teşekkür ederiz. Hangi kütüphaneye ulaşırsanız ulaşın, onu önünüzdeki belge ile eşleştirin.

Please note: IronPDF, Iron Software'in bir ürünüdür. PuppeteerSharp, Playwright, wkhtmltopdf, DinkToPdf, PdfSharp, HtmlRenderer,QuestPDFve iText, ilgili sahiplerinin projeleri veya ticari markalarıdır. Bu makale, bahsedilen projelerle ilişkili, onaylanmış veya sponsorlu değildir. Karşılaştırmalar yazıldığı zamandaki kamuya açık bilgileri ve uygulamalı testleri yansıtır; bunlara güvenmeden önce mevcut lisanslama ve sürüm detaylarını doğrulayın.
Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...
Read More

Related Articles

Key in blue circle

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

bullet_checkedKredi kartı veya hesap oluşturma gerektirmez
  • 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 related to IronPDF Product Demo

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