Altbilgi içeriğine atla
ÜRüN KARşıLAşTıRMALARı

iTextSharp HTML to PDF CSS Stilleri C# Örneği vs IronPDF

PDF işlevselliği gerektiren .NET uygulamaları oluştururken, geliştiriciler sıkça kritik bir kararla karşı karşıya kalır: hangi PDF kütüphanesi ihtiyaçlarına en iyi şekilde uyar? Tartışmalarda sıkça gündeme gelen iki popüler seçenek IronPDF ve Puppeteer Sharp'tır. Her iki kütüphane de HTML içeriğinden PDF oluşturabilse de, yöntemleri, özellikleri ve kullanım durumları bakımından önemli ölçüde farklılık gösterir.

IronPDF, özel olarak .NET geliştiricileri için tasarlanmış kapsamlı bir PDF kitaplığıdır ve basit üretimden öte geniş PDF manipülasyon yetenekleri sunar. Öte yandan Puppeteer Sharp, öncelikle tarayıcı otomasyonuna odaklanan ve PDF oluşturmayı özelliklerinden biri olarak gören Google'ın Puppeteer kütüphanesinin bir .NET sürümüdür. Her iki kütüphanenin de güçlü ve zayıf yönlerini anlamak, proje gereksinimlerinize uygun bilinçli bir karar alma açısından önemlidir.

Hızlı Karşılaştırma Tablosu

Kategori Özellikler/Aspekt IronPDF Puppeteer Sharp Temel Avantaj
Çekirdek Mimari Tasarım Felsefesi Krome motoru entegre edilmiş PDF odaklı kütüphane PDF dışa aktarma ile tarayıcı otomasyon aracı IronPDF: Özellikle PDF'ler için tasarlandı
API Karmaşıklığı Basit yöntemler, örneğin RenderHtmlAsPdf() IronPDF: Daha az kod satırı
Öğrenme Eğrisi 1-2 gün tipik 3-5 gün (tarayıcı kavramları) IronPDF: Daha hızlı benimseme
Platform Desteği Çapraz Platform Yerel destek, ek paket yok Chrome/Chromium indirmesi gerekli IronPDF: Daha basit dağıtım
.NET Sürümleri .NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ .NET 10, Standard 2.0, Framework 4.6.1+ IronPDF: En son .NET desteği
İşletim Sistemleri Windows, Linux, macOS, Docker yerel Windows, Linux (kısıtlamalarla), macOS IronPDF: Evrensel destek
HTML'den PDF'e Renderleme Motoru Gömülü Krome motoru Gözsüz Krome/Chromium kontrolü Her ikisi de: Krome tabanlı doğruluk
JavaScript Desteği Render gecikmeleri ile tam JS desteği Bekleme koşulları ile tam JS Puppeteer: Daha fazla JS kontrolü
PDF Özellikleri Güvenlik & Şifreleme AES-256, parolalar, izinler Desteklenmiyor IronPDF: Kurumsal güvenlik
Dijital İmzalar Sertifikalarla yerel destek Dış kütüphaneler gerektirir IronPDF: Dahili imzalama
PDF Düzenleme Birleştirme, ayırma, filigran, formlar Sadece oluştur IronPDF: Tam manipülasyon
Tarayıcı Otomasyonu Web Kazıma Birincil odak değil Tam tarayıcı kontrolü Puppeteer: Tarayıcı otomasyonu
Ekran Görüntüsü Alma Sadece PDF'den görüntüye Tam sayfa/öğe ekran görüntüleri Puppeteer: Çeşitli yakalama
Licensing & Pricing Lisans Modeli Ticari, süresiz lisanslar MIT Lisansı (ücretsiz) Puppeteer: Ücretsiz
Giriş Fiyatı $999 (Lite License) Ücretsiz Puppeteer: Sıfır engel
Destek Dokümantasyon Kapsamlı eğitimler, API referansı GitHub belgeleri, topluluk kaynakları IronPDF: Profesyonel belgeler
Teknik Destek 24/5 mühendis desteği Yalnızca topluluk IronPDF: Profesyonel destek
En İyi Kullanım Alanı Kullanım Durumları Enterprise PDF'ler, raporlar, faturalar Test, kazıma, temel PDF'ler Bağlam bağımlı

IronPDF ve Puppeteer Sharp Nedir?

IronPDF Nedir?

IronPDF, .NET ile PDF belgelerini oluşturmak, düzenlemek ve manipüle etmek için geliştirilmiş bir .NET PDF kütüphanesidir. Gömülü Chromium motoru, HTML'yi - tam CSS3 ve JavaScript dahil - harici bir tarayıcı süreci gerektirmeden PDF'ye dönüştürür. API, şifreleme, dijital imzalar, form doldurma, filigranlama ve belge birleştirmeyi kapsar ve hepsi tek bir NuGet paketi üzerinden erişilebilirdir.

IronPDF, .NET 9'u destekler ve .NET 10 uyumluluğu üzerinde çalışılmaktadır. Gelişmiş PDF manipülasyonu, içerik çıkarma ve sayfa damgalamayı da içerir.

Puppeteer Sharp Nedir?

Puppeteer Sharp, Google'ın popüler Node.js Puppeteer kütüphanesinin Darío Kondratiuk tarafından sürdürülen bir .NET portudur. DevTools Protokolü aracılığıyla programatik olarak Serifotsuz Chrome veya Chromium tarayıcıları kontrol etmek için yüksek düzeyde bir API sağlar. Puppeteer Sharp PDF'ler oluşturabilirken, asıl amacı tarayıcı otomasyon aracı olarak tasarlanmıştır ve web kazıma, otomatik test ve ekran görüntüsü alma konularında mükemmeldir.

Kütüphane, geliştiricilerin web sayfalarında gezinmesine, ögelerle etkileşimde bulunmasına ve içeriği PDF dahil çeşitli formatlarda dışa aktarmasına olanak tanıyan başsız bir tarayıcı örneği başlatarak ve kontrol ederek çalışır. Son benchmarklara göre, Puppeteer Sharp, basit HTML oluşturma için performans avantajları sunar ancak özel PDF kütüphanelerine göre daha karmaşık bir kurulum gerektirir. IronPDF değerlendiren takımlar, ücretsiz 30 günlük deneme süresine erişebilir.

Platformlar Arası Uyumluluk Nasıl Karşılaştırılır?

IronPDF Çapraz Platform Desteği

IronPDF, geniş çaplı platformlar arası uyumluluk sunar ve çok çeşitli ortamlar arasında dağıtımı destekler. Kütüphane, şunlarda çalışır:

  • .NET sürümleri:
  • .NET Standard 2.0+
  • .NET Framework 4.6.2+

    • C#, VB.NET ve F# için tam destek
  • İşletim Sistemleri ve Ortamlar:

  • Geliştirme Araçları:
    • Microsoft Visual Studio
    • JetBrains Rider & ReSharper
    • Visual Studio Code

IronPDF'nin doğal platformlar arası desteği, farklı ortamlar için ilave paketler veya yapılandırma gerektirmez. Kütüphane, uyumluluk dönüm noktası güncellemesinde belirtildiği gibi, hedef platformu otomatik olarak tanımlar ve optimize eder.

Puppeteer Sharp Platformlar Arası Destek

Puppeteer Sharp, bazı önemli hususlarla platformlar arası uyumluluk sunar:

  • .NET sürümleri:

    • .NET 10 ve .NET Standard 2.0 (Nisan 2026 itibariyle)
    • .NET Framework 4.6.1+
    • .NET Core 2.0 veya daha üstü
  • İşletim Sistemleri:

    • Windows (tam destek)
    • Linux (X-server gerektirir, muhtemelen sorun giderme gerektirir)
    • macOS (standart destek)
    • Docker (Chrome bağımlılıkları ile)
  • Tarayıcı Gereksinimleri:
    • Chromium ikili dosyalarının (~170MB) indirilmesi gerekir
    • Chrome, Chromium ve Firefox tarayıcılarını destekler
    • Başsız ve başlı modlar mevcuttur

Resmi belgelerde, Linux kullanıcılarının Chrome çalıştırırken sorun yaşayabileceği belirtilmekte ve çözüm kılavuzunu danışmaları gerektiği vurgulanmaktadır. Kütüphane, tarayıcı indirmelerini ve yaşam döngüsünü yönetmeyi gerektirir ve dağıtıma ek bir karmaşıklık katmaktadır.

Hangi Kütüphane Daha İyi PDF Özelliği Sunuyor?

PDF yeteneklerini değerlendirirken, IronPDF ile Puppeteer Sharp arasındaki farklılıklar özellikle belirgin hale gelir. Ana özelliklerini ayrıntılı olarak inceleyelim.

IronPDF Özellikleri

IronPDF geniş bir PDF manipülasyon araç takımı sunar:

Puppeteer Sharp Özellikleri

Puppeteer Sharp, tarayıcı otomasyonuna odaklanır ve PDF bir çıktı seçeneğidir:

  • PDF Oluşturma:

    • Tarayıcı yazdırma işlevselliği aracılığıyla HTML'den PDF'ye
    • Özel sayfa boyutları ve kenar boşlukları
    • Başlıklar ve alt bilgiler (sınırlı stillendirme)
    • Duyarlı düzenler için görünüm kontrolü
  • Tarayıcı Otomasyonu:

    • Serifotsuz Chrome/Chromium üzerinde tam kontrol
    • JavaScript yürütme ve bekleme
    • Form doldurma ve UI etkileşimi
    • Ağ isteği durdurma
  • Ekran Görüntüsü Yetenekleri:

    • Tam sayfa veya öğe özgü yakalamalar
    • Çoklu görüntü formatları (PNG, JPG)
    • Görünüm manipülasyonu
  • Tasarım Sınırları:
    • PDF düzenleme şu anda Puppeteer Sharp'ın kapsamı dışında
    • Şifreleme ve güvenlik seçenekleri dahil edilmemiştir
    • Dijital imza desteği özellik setinde yer almaz
    • Form oluşturma araçları sağlanmaz
    • PDF manipülasyonu gereksinimi olan takımlar genellikle ayrı kütüphaneler ekler

API şablonuna göre, "Puppeteer Sharp, popüler Puppeteer kütüphanesinin C# uyarlamasıdır, ve Serifotsuz Chrome otomasyonu için kullanılır." Bu makalede, Puppeteer Sharp kullanarak HTML şablonlarından PDF'ler nasıl oluşturulacağını göreceğiz.

Gerçek Dünya Kod Örnekleri: IronPDF vs Puppeteer Sharp

Her iki kütüphanenin kullanım desenlerini ve yeteneklerini anlamak için pratik uygulamalarını inceleyelim.

HTML'den PDF'ye Dönüştürme Karşılaştırması

IronPDF Örneği:

using IronPdf;

// Initialize the Chrome renderer
var renderer = new ChromePdfRenderer();

// Configure rendering options for professional output
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                h1 { color: #2e6da4; }
                .invoice-header { background-color: #f5f5f5; padding: 20px; }
            </style>
        </head>
        <body>
            <div class='invoice-header'>
                <h1>Invoice #12345</h1>
                <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
            </div>
        </body>
    </html>");

// Save the PDF
pdf.SaveAs("invoice.pdf");
using IronPdf;

// Initialize the Chrome renderer
var renderer = new ChromePdfRenderer();

// Configure rendering options for professional output
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                h1 { color: #2e6da4; }
                .invoice-header { background-color: #f5f5f5; padding: 20px; }
            </style>
        </head>
        <body>
            <div class='invoice-header'>
                <h1>Invoice #12345</h1>
                <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
            </div>
        </body>
    </html>");

// Save the PDF
pdf.SaveAs("invoice.pdf");
Imports IronPdf

' Initialize the Chrome renderer
Private renderer = New ChromePdfRenderer()

' Configure rendering options for professional output
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 40
renderer.RenderingOptions.MarginBottom = 40
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print

' Convert HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("
    <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                h1 { color: #2e6da4; }
                .invoice-header { background-color: #f5f5f5; padding: 20px; }
            </style>
        </head>
        <body>
            <div class='invoice-header'>
                <h1>Invoice #12345</h1>
                <p>Generated on: " & DateTime.Now.ToString("yyyy-MM-dd") & "</p>
            </div>
        </body>
    </html>")

' Save the PDF
pdf.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

Bu IronPDF örneği kütüphanenin doğrudan yaklaşımını gösterir. ChromePdfRenderer sınıfı tüm HTML render etme karmaşıklığını dahili olarak ele alır. Anahtar avantajlar şunları içerir:

  • Dönüşüm için tek bir metot çağrısı (RenderHtmlAsPdf)
  • CSS medya türleri için yerleşik destek
  • Tarayıcı yaşam döngüsü yönetimine ihtiyaç yok
  • Harici bağımlılıklar indirilmeksizin hemen kullanılabilirlik

Puppeteer Sharp Örneği:

using PuppeteerSharp;

// Download Chromium if not already present
await new BrowserFetcher().DownloadAsync();

// Launch browser instance
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" }
});

try
{
    // Create new page
    var page = await browser.NewPageAsync();

    // Set content
    await page.SetContentAsync(@"
        <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    h1 { color: #2e6da4; }
                    .invoice-header { background-color: #f5f5f5; padding: 20px; }
                </style>
            </head>
            <body>
                <div class='invoice-header'>
                    <h1>Invoice #12345</h1>
                    <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
                </div>
            </body>
        </html>");

    // Wait for content to load
    await page.WaitForSelectorAsync(".invoice-header");

    // Generate PDF
    await page.PdfAsync("invoice.pdf", new PdfOptions
    {
        Format = PaperFormat.A4,
        MarginOptions = new MarginOptions
        {
            Top = "40px",
            Bottom = "40px",
            Left = "40px",
            Right = "40px"
        }
    });
}
finally
{
    // Clean up browser instance
    await browser.CloseAsync();
}
using PuppeteerSharp;

// Download Chromium if not already present
await new BrowserFetcher().DownloadAsync();

// Launch browser instance
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" }
});

try
{
    // Create new page
    var page = await browser.NewPageAsync();

    // Set content
    await page.SetContentAsync(@"
        <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    h1 { color: #2e6da4; }
                    .invoice-header { background-color: #f5f5f5; padding: 20px; }
                </style>
            </head>
            <body>
                <div class='invoice-header'>
                    <h1>Invoice #12345</h1>
                    <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
                </div>
            </body>
        </html>");

    // Wait for content to load
    await page.WaitForSelectorAsync(".invoice-header");

    // Generate PDF
    await page.PdfAsync("invoice.pdf", new PdfOptions
    {
        Format = PaperFormat.A4,
        MarginOptions = new MarginOptions
        {
            Top = "40px",
            Bottom = "40px",
            Left = "40px",
            Right = "40px"
        }
    });
}
finally
{
    // Clean up browser instance
    await browser.CloseAsync();
}
Imports PuppeteerSharp

' Download Chromium if not already present
Await (New BrowserFetcher()).DownloadAsync()

' Launch browser instance
Dim browser = Await Puppeteer.LaunchAsync(New LaunchOptions With {
	.Headless = True,
	.Args = { "--no-sandbox", "--disable-setuid-sandbox" }
})

Try
	' Create new page
	Dim page = Await browser.NewPageAsync()

	' Set content
	Await page.SetContentAsync("
        <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    h1 { color: #2e6da4; }
                    .invoice-header { background-color: #f5f5f5; padding: 20px; }
                </style>
            </head>
            <body>
                <div class='invoice-header'>
                    <h1>Invoice #12345</h1>
                    <p>Generated on: " & DateTime.Now.ToString("yyyy-MM-dd") & "</p>
                </div>
            </body>
        </html>")

	' Wait for content to load
	Await page.WaitForSelectorAsync(".invoice-header")

	' Generate PDF
	Await page.PdfAsync("invoice.pdf", New PdfOptions With {
		.Format = PaperFormat.A4,
		.MarginOptions = New MarginOptions With {
			.Top = "40px",
			.Bottom = "40px",
			.Left = "40px",
			.Right = "40px"
		}
	})
Finally
	' Clean up browser instance
	Await browser.CloseAsync()
End Try
$vbLabelText   $csharpLabel

Puppeteer Sharp yaklaşımı daha fazla kurulum gerektirir:

  • Tarayıcı indirme ve yönetimi (~170 MB Chromium)
  • try/finally ile açık kaynak temizliği
  • Dinamik içerik için manuel bekleme koşulları
  • String tabanlı kenar boşlukları

Stack Overflow tartışmalarına göre, geliştiriciler Puppeteer Sharp'ta sık sık sayfa boyutlandırma ve oluşturma tutarlılığı konularında zorluklarla karşılaşır.

Dinamik İçerikle Çalışma

IronPDF ile JavaScript:

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure JavaScript execution
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 seconds for JS

// Render a page with dynamic charts
var pdf = renderer.RenderUrlAsPdf("https://example.com/dashboard");

// Apply security settings
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;

pdf.SaveAs("secure-dashboard.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure JavaScript execution
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 seconds for JS

// Render a page with dynamic charts
var pdf = renderer.RenderUrlAsPdf("https://example.com/dashboard");

// Apply security settings
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;

pdf.SaveAs("secure-dashboard.pdf");
Imports IronPdf

Private renderer = New ChromePdfRenderer()

' Configure JavaScript execution
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 2000 ' Wait 2 seconds for JS

' Render a page with dynamic charts
Dim pdf = renderer.RenderUrlAsPdf("https://example.com/dashboard")

' Apply security settings
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint

pdf.SaveAs("secure-dashboard.pdf")
$vbLabelText   $csharpLabel

IronPDF'nin dinamik içeriğe yaklaşımı basitlik ön planda tutularak tasarlanmıştır. RenderDelay seçeneği, JavaScript yürütme ve render için basit bir yol sağlar. Ek avantajlar:

  • Güvenlik özellikleri doğrudan entegredir
  • Tarayıcı durumlarını yönetmeye gerek yok
  • Ortamalar arası tutarlı oluşturma

Daha karmaşık JavaScript senaryoları için, IronPDF, kesin zamanlama kontrolü sağlayan WaitFor sınıfı sunmaktadır.

Puppeteer Sharp ile Dinamik İçerik:

using PuppeteerSharp;

var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();

// Navigate to page
await page.GoToAsync("https://example.com/dashboard", new NavigationOptions
{
    WaitUntil = new[] { WaitUntilNavigation.Networkidle0 }
});

// Execute custom JavaScript
await page.EvaluateExpressionAsync(@"
    // Trigger chart rendering
    document.dispatchEvent(new Event('load-charts'));
");

// Wait for specific element
await page.WaitForSelectorAsync(".chart-container", new WaitForSelectorOptions
{
    Visible = true,
    Timeout = 30000
});

// Generate PDF (no built-in security features)
await page.PdfAsync("dashboard.pdf");

await browser.CloseAsync();
using PuppeteerSharp;

var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();

// Navigate to page
await page.GoToAsync("https://example.com/dashboard", new NavigationOptions
{
    WaitUntil = new[] { WaitUntilNavigation.Networkidle0 }
});

// Execute custom JavaScript
await page.EvaluateExpressionAsync(@"
    // Trigger chart rendering
    document.dispatchEvent(new Event('load-charts'));
");

// Wait for specific element
await page.WaitForSelectorAsync(".chart-container", new WaitForSelectorOptions
{
    Visible = true,
    Timeout = 30000
});

// Generate PDF (no built-in security features)
await page.PdfAsync("dashboard.pdf");

await browser.CloseAsync();
Imports PuppeteerSharp

Private browser = await Puppeteer.LaunchAsync(New LaunchOptions With {.Headless = True})
Private page = await browser.NewPageAsync()

' Navigate to page
Await page.GoToAsync("https://example.com/dashboard", New NavigationOptions With {
	.WaitUntil = { WaitUntilNavigation.Networkidle0 }
})

' Execute custom JavaScript
Await page.EvaluateExpressionAsync("
    // Trigger chart rendering
    document.dispatchEvent(new Event('load-charts'));
")

' Wait for specific element
Await page.WaitForSelectorAsync(".chart-container", New WaitForSelectorOptions With {
	.Visible = True,
	.Timeout = 30000
})

' Generate PDF (no built-in security features)
Await page.PdfAsync("dashboard.pdf")

Await browser.CloseAsync()
$vbLabelText   $csharpLabel

Puppeteer Sharp karmaşık tarayıcı etkileşimlerinde başarılıdır:

  • Sayfa gezinimi üzerinde detaylı kontrol
  • Özel JavaScript yürütme
  • Esnek bekleme koşulları
  • Doğrudan DOM manipülasyonu

Şifreleme ve parola koruması gibi güvenlik özellikleri Puppeteer Sharp'ın kapsamı dışında olduğundan, bu yeteneklere ihtiyaç duyan takımlar ayrı bir PDF kütüphanesi entegre eder, bu, resmi belgelerde not edilmiştir.

Gelişmiş PDF İşlemleri

IronPDF - Tam Belge İş Akışı:

using IronPdf;
using IronPdf.Signing;

// Create initial PDF from HTML template
var renderer = new ChromePdfRenderer();
var invoice = renderer.RenderHtmlFileAsPdf("invoice-template.html");

// Add watermark
invoice.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
    30, IronPdf.Editing.VerticalAlignment.Middle, 
    IronPdf.Editing.HorizontalAlignment.Center);

// Merge with terms and conditions
var terms = PdfDocument.FromFile("terms.pdf");
var combined = PdfDocument.Merge(invoice, terms);

// Add digital signature
var signature = new PdfSignature("certificate.pfx", "password");
combined.Sign(signature);

// Set metadata
combined.MetaData.Author = "Accounting Department";
combined.MetaData.Title = "Invoice #12345";
combined.MetaData.CreationDate = DateTime.Now;

// Compress and save
combined.CompressImages(90);
combined.SaveAs("final-invoice.pdf");
using IronPdf;
using IronPdf.Signing;

// Create initial PDF from HTML template
var renderer = new ChromePdfRenderer();
var invoice = renderer.RenderHtmlFileAsPdf("invoice-template.html");

// Add watermark
invoice.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
    30, IronPdf.Editing.VerticalAlignment.Middle, 
    IronPdf.Editing.HorizontalAlignment.Center);

// Merge with terms and conditions
var terms = PdfDocument.FromFile("terms.pdf");
var combined = PdfDocument.Merge(invoice, terms);

// Add digital signature
var signature = new PdfSignature("certificate.pfx", "password");
combined.Sign(signature);

// Set metadata
combined.MetaData.Author = "Accounting Department";
combined.MetaData.Title = "Invoice #12345";
combined.MetaData.CreationDate = DateTime.Now;

// Compress and save
combined.CompressImages(90);
combined.SaveAs("final-invoice.pdf");
Imports IronPdf
Imports IronPdf.Signing

' Create initial PDF from HTML template
Private renderer = New ChromePdfRenderer()
Private invoice = renderer.RenderHtmlFileAsPdf("invoice-template.html")

' Add watermark
invoice.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)

' Merge with terms and conditions
Dim terms = PdfDocument.FromFile("terms.pdf")
Dim combined = PdfDocument.Merge(invoice, terms)

' Add digital signature
Dim signature = New PdfSignature("certificate.pfx", "password")
combined.Sign(signature)

' Set metadata
combined.MetaData.Author = "Accounting Department"
combined.MetaData.Title = "Invoice #12345"
combined.MetaData.CreationDate = DateTime.Now

' Compress and save
combined.CompressImages(90)
combined.SaveAs("final-invoice.pdf")
$vbLabelText   $csharpLabel

Bu örnek, IronPDF'nin kapsamlı PDF manipülasyon yeteneklerini sergiliyor:

  • HTML dosyalarından şablon tabanlı oluşturma
  • CSS stil kontrolü ile filigranlama
  • Çok parçalı PDF'ler için belge birleştirme
  • Kimlik doğrulama için dijital imzalar
  • Belge özellikleri için meta veri yönetimi
  • Dosya boyutunu azaltmak için görüntü sıkıştırma

Damgalama özellikleri ve dijital imza desteği, IronPDF'yi kurumsal belge iş akışları için uygun hale getirir.

Puppeteer Sharp - Tarayıcı Otomasyonuna Odaklanma:

using PuppeteerSharp;

var browser = await Puppeteer.LaunchAsync(new LaunchOptions 
{ 
    Headless = false, // Show browser for debugging
    SlowMo = 50 // Slow down actions
});

var page = await browser.NewPageAsync();

// Navigate to web application
await page.GoToAsync("https://app.example.com/login");

// Automate login
await page.TypeAsync("#username", "user@example.com");
await page.TypeAsync("#password", "password123");
await page.ClickAsync("#login-button");

// Wait for dashboard
await page.WaitForNavigationAsync();

// Take screenshot for documentation
await page.ScreenshotAsync("dashboard-screenshot.png", new ScreenshotOptions
{
    FullPage = true,
    Type = ScreenshotType.Png
});

// Generate report PDF
await page.ClickAsync("#generate-report");
await page.WaitForSelectorAsync(".report-ready");

// Save the generated report
await page.PdfAsync("automated-report.pdf", new PdfOptions
{
    DisplayHeaderFooter = true,
    HeaderTemplate = "<div style='font-size:10px;'>Report Header</div>",
    FooterTemplate = "<div style='font-size:10px;'>Page <span class='pageNumber'></span></div>",
    Format = PaperFormat.A4
});

await browser.CloseAsync();
using PuppeteerSharp;

var browser = await Puppeteer.LaunchAsync(new LaunchOptions 
{ 
    Headless = false, // Show browser for debugging
    SlowMo = 50 // Slow down actions
});

var page = await browser.NewPageAsync();

// Navigate to web application
await page.GoToAsync("https://app.example.com/login");

// Automate login
await page.TypeAsync("#username", "user@example.com");
await page.TypeAsync("#password", "password123");
await page.ClickAsync("#login-button");

// Wait for dashboard
await page.WaitForNavigationAsync();

// Take screenshot for documentation
await page.ScreenshotAsync("dashboard-screenshot.png", new ScreenshotOptions
{
    FullPage = true,
    Type = ScreenshotType.Png
});

// Generate report PDF
await page.ClickAsync("#generate-report");
await page.WaitForSelectorAsync(".report-ready");

// Save the generated report
await page.PdfAsync("automated-report.pdf", new PdfOptions
{
    DisplayHeaderFooter = true,
    HeaderTemplate = "<div style='font-size:10px;'>Report Header</div>",
    FooterTemplate = "<div style='font-size:10px;'>Page <span class='pageNumber'></span></div>",
    Format = PaperFormat.A4
});

await browser.CloseAsync();
Imports PuppeteerSharp

Private browser = await Puppeteer.LaunchAsync(New LaunchOptions With {
	.Headless = False,
	.SlowMo = 50
})

Private page = await browser.NewPageAsync()

' Navigate to web application
Await page.GoToAsync("https://app.example.com/login")

' Automate login
Await page.TypeAsync("#username", "user@example.com")
Await page.TypeAsync("#password", "password123")
Await page.ClickAsync("#login-button")

' Wait for dashboard
Await page.WaitForNavigationAsync()

' Take screenshot for documentation
Await page.ScreenshotAsync("dashboard-screenshot.png", New ScreenshotOptions With {
	.FullPage = True,
	.Type = ScreenshotType.Png
})

' Generate report PDF
Await page.ClickAsync("#generate-report")
Await page.WaitForSelectorAsync(".report-ready")

' Save the generated report
Await page.PdfAsync("automated-report.pdf", New PdfOptions With {
	.DisplayHeaderFooter = True,
	.HeaderTemplate = "<div style='font-size:10px;'>Report Header</div>",
	.FooterTemplate = "<div style='font-size:10px;'>Page <span class='pageNumber'></span></div>",
	.Format = PaperFormat.A4
})

Await browser.CloseAsync()
$vbLabelText   $csharpLabel

Puppeteer Sharp, tarayıcı otomasyon senaryolarında güç sahibidir:

  • Otomatik giriş ve gezinme
  • Herhangi bir noktada ekran resmi alma
  • Web uygulamaları ile etkileşim
  • Web uygulamalarından dinamik rapor oluşturma

ZenRows tarafından belirtildiği üzere, "Puppeteer Sharp, birçok otomatik kullanıcı etkileşimini simüle edebilir. Bunlar arasında fare hareketleri, beklemeler ve daha fazlası bulunur."

Performans Düşünceleri Neler?

IronPDF Performansı

IronPDF, çeşitli performans özellikleriyle PDF işlemleri için optimize edilmiştir:

  • Bellek Yönetimi:

    • .NET çöp toplayıcı aracılığıyla verimli bellek kullanımı
    • Toplu işleme optimizasyonu
    • Büyük belgeler için akış desteği
  • Çoklu İş Parçacığı:

    • Tam async/await desteği
    • Paralel PDF oluşturma yetenekleri
    • İş parçacığı güvenli operasyonlar
  • Oluşturma Hızı:

Performans optimizasyon kılavuzlarına göre, IronPDF'nin ilk oluşturması motor başlatılmasından dolayı yavaş olabilir, ancak sonraki işlemler son derece optimize edilmiştir.

Puppeteer Sharp Performansı

Puppeteer Sharp'ın performans özellikleri yapısından dolayı farklılık gösterir:

  • Tarayıcı Yükü:

    • ~170 MB Chromium indirmesi gerektirir
    • Her tarayıcı örneği önemli RAM tüketir
    • Tarayıcı başlatma süresi ölçülebilir başlangıç yükü ekler
  • Oluşturma Hızı:

    • Birden fazla eş zamanlı örnekte performans azalabilir
    • Eş zamanlı işlemler için kaynak yoğun
  • Optimizasyon Stratejileri:
    • Tarayıcı örneği geri kullanımı önerilir
    • Birden fazla PDF için bağlantı havuzu
    • Başlıyken mod yükü azaltır

Benchmark testleri, Puppeteer'ın basit HTML için daha hızlı olabileceğini ancak üretim kullanımı için dikkatli kaynak yönetimi gerektiğini gösterir.

Fiyatlandırma ve Lisanslama Nasıl Karşılaştırılır?

IronPDF Fiyatlandırma Yapısı

IronPDF, esnek ticari lisanslama seçenekleri sunar:

  • Lisans Kademeleri (Nisan 2026 itibarıyla fiyatlar):

    • Lite License: $999 - 1 geliştirici, 1 konum, 1 proje
    • Plus License: $1,499 - 3 geliştirici, 3 konum, 3 proje
    • Professional License: $2,999 - 10 geliştirici, 10 konum, 10 proje
    • Unlimited License: $5,999 - sınırsız geliştirici ve proje
  • Ek Seçenekler:

    • Telif ücretsiz yeniden dağıtım: +$2,999
    • SaaS/OEM lisansı mevcut
    • Iron Suite: $2,998 for 10 products
    • 30 günlük para iade garantisi
  • Destek ve Güncellemeler:
    • Bir yıllık destek ve güncellemeler dâhil
    • Uzatılmış destek: $999/yıl veya 5 yıl için $1,999
    • Tüm lisanslarla 24/5 mühendis desteği

Puppeteer Sharp Lisanslama

Puppeteer Sharp, MIT Lisansını kullanır:

  • Maliyet: Tamamen ücretsiz
  • Ticari Kullanım: Sınırsız olarak izin verilir
  • Destek: GitHub üzerinden topluluk tabanlı
  • Güncellemeler: Açık kaynak topluluğu tarafından yönlendirilir

Lisansın kendisi ücretsiz olmasına rağmen, ekipler toplam proje maliyetlerini dikkate almalıdır:

  • Destek, adanmış bir ekip yerine açık kaynak topluluğuna dayanır
  • Altyapı yönetimi, ekibinize aittir
  • Gelişmiş PDF özellikleri, ek kütüphanelerin entegrasyonunu gerektirir
  • Sorun giderme genellikle topluluk forumlarına ve kendi kendine teşhise dayanır

Seçim genellikle profesyonel destek ve gelişmiş özelliklerin verilen bir proje için yatırımı haklı çıkarıp çıkarmadığına bağlıdır.

Lisans maliyetinin ötesinde, toplam proje maliyeti, tarayıcı yaşam döngüsü kodunu yönetmek, şifreleme ve dijital imzalar için ayrı kütüphaneleri entegre etmek ve adanmış destek olmadan ortamlar arasındaki dağıtım sorunlarını gidermek için harcanan geliştirici saatlerini içerir. Çok yıllı bir proje ömrü boyunca maliyeti değerlendiren ekipler için, bu entegrasyon ve bakım giderleri sık sık açık kaynak ve ticari lisanslama arasındaki farkı geçer.

Belgeler ve Destek Nasıl Karşılaştırılır?

IronPDF Belgeleri ve Desteği

IronPDF, kapsamlı profesyonel kaynaklar sunar:

Puppeteer Sharp Belgeleri ve Desteği

Puppeteer Sharp, topluluk kaynaklarına dayanır:

  • Dokümantasyon:

    • API belgeleri
    • GitHub README ve wiki
    • Depoda kod örnekleri
    • Özgün Puppeteer belgelerine bağlantılar
  • Destek Seçenekleri:

    • Hata raporları için GitHub issues
    • Topluluk tartışmaları
    • Stack Overflow soruları
    • Resmi bir destek kanalı yok
  • Dikkat Edilmesi Gerekenler:
    • Belge güncellemeleri açık kaynak katkı döngüsünü takip eder
    • İçerik eklemelerin çoğu topluluk üyeleri tarafından yapılır
    • Sorun giderme rehberi, ticari kütüphanelerden daha dar bir yüzeye sahiptir
    • Bazı örnekler önceki API sürümlerini yansıtır

Geliştirici blogu yararlı teknik içgörüler sağlar, ancak gönderiler bakımcının programına göre yapılır, belirli bir düzene değil.

Hangi PDF Kütüphanesi Seçilmelidir?

IronPDF ve Puppeteer Sharp arasındaki karar, belirli gereksinimlerinize ve kullanım durumunuza bağlıdır.

IronPDF'i Tercih Edin Ne Zaman:

  • Güvenli, profesyonel PDF'ler gerektiren kurumsal uygulamaların oluşturulması
  • Temel oluşturmanın ötesinde kapsamlı PDF özelliklerine ihtiyaç duyma
  • Basit API'lerle minimal kod karmaşıklığı isteği
  • Profesyonel destek ve belgelere ihtiyaç duyma
  • Birden fazla PDF formatıyla çalışma (DOCX, görüntüler vb.)
  • Şifreleme ve imzalar gibi güvenlik özelliklerine ihtiyacınız var
  • Uyumluluk sorunları olmadan çeşitli platformlara dağıtım yapma
  • İlk maliyet yerine pazara sunma süresine değer verme

IronPDF aşağıdaki senaryolarda çok başarılıdır:

  • Fatura ve rapor oluşturma
  • Belge yönetim sistemleri
  • Uyum gerektiren belgeler
  • Çok formatlı belge işleme
  • Yüksek hacimli PDF işlemleri

Puppeteer Sharp'ı Seçin Ne Zaman:

  • Birincil odak tarayıcı otomasyonu ve PDF ikincil
  • Bütçe sınırlamaları ticari lisanslara engel
  • PDF oluşturmanın yanı sıra web kazıma yeteneklerine ihtiyaç
  • Tarayıcı altyapısını yönetmeye rahat
  • Gelişmiş özellikler olmadan basit PDF gereksinimleri
  • Node.js'den mevcut Puppeteer bilgisine sahip
  • Test çerçeveleri veya otomasyon araçları oluşturma

Puppeteer Sharp şu durumlarda çalışır:

  • PDF raporlarıyla otomatik test
  • PDF dışa aktarmayla web kazıma
  • Basit HTML'den PDF'ye dönüştürme
  • Ekran görüntüsü yakalama iş akışları
  • Tarayıcı tabanlı otomasyon görevleri

Gerçek Dünya Önerileri

Geniş kapsamlı karşılaştırmalı analizler ve geliştirici geri bildirimlerine dayanarak pratik öneriler:

  1. Üretim Uygulamaları İçin: IronPDF'nin güvenirliği, desteği ve özellikleri, yatırımı hak ediyor
  2. Prototipler İçin: Puppeteer Sharp'un ücretsiz lisansı hızlı test yapmanızı sağlar
  3. Karmaşık PDF'ler İçin: IronPDF'nin gelişmiş özellikleri geliştirme süresinden tasarruf sağlar
  4. Tarayıcı Testi İçin: Puppeteer Sharp'un otomasyon yetenekleri eşi benzeri yok

Modern CSS Çerçeve Desteği

Hem IronPDF hem de Puppeteer Sharp, modern CSS çerçevelerini düzgün bir şekilde ele alabileceklerini belirten Chromium işleme motorlarını kullanır. Ancak, uygulama karmaşıklığı ve geliştirici deneyimi önemli ölçüde farklılaşmaktadır.

IronPDF: Basitleştirilmiş Bootstrap İşleme

IronPDF'nin PDF odaklı API'si, Bootstrap düzenlerini minimum kodla işleme yapmayı kolaylaştırır:

  • Bir satırda dönüştürme: Tarayıcı yaşam döngüsü yönetimine gerek yok
  • Yerleşik optimizasyon: CSS/JavaScript yükleme işlemlerinin otomatik yönetimi
  • Bootstrap 5 hazır: Bootstrap ana sayfası ve şablonlar için tam destek
  • Üretime hazır: Güvenlik, sıkıştırma ve kurumsal özellikler içerir

Örnek Kod: IronPDF Bootstrap İşleme

using IronPdf;

// Simple, direct Bootstrap rendering
var renderer = new ChromePdfRenderer();

string bootstrapContent = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <div class='row'>
            <div class='col-md-4 mb-4'>
                <div class='card shadow'>
                    <div class='card-body'>
                        <h5 class='card-title'>Quick Start</h5>
                        <p class='card-text'>Render Bootstrap with one method call.</p>
                        <a href='#' class='btn btn-primary'>Learn More</a>
                    </div>
                </div>
            </div>

        </div>
    </div>
</body>
</html>";

// Single method call - no browser management
var pdf = renderer.RenderHtmlAsPdf(bootstrapContent);
pdf.SaveAs("bootstrap-layout.pdf");
using IronPdf;

// Simple, direct Bootstrap rendering
var renderer = new ChromePdfRenderer();

string bootstrapContent = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <div class='row'>
            <div class='col-md-4 mb-4'>
                <div class='card shadow'>
                    <div class='card-body'>
                        <h5 class='card-title'>Quick Start</h5>
                        <p class='card-text'>Render Bootstrap with one method call.</p>
                        <a href='#' class='btn btn-primary'>Learn More</a>
                    </div>
                </div>
            </div>

        </div>
    </div>
</body>
</html>";

// Single method call - no browser management
var pdf = renderer.RenderHtmlAsPdf(bootstrapContent);
pdf.SaveAs("bootstrap-layout.pdf");
Imports IronPdf

' Simple, direct Bootstrap rendering
Dim renderer As New ChromePdfRenderer()

Dim bootstrapContent As String = "
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <div class='row'>
            <div class='col-md-4 mb-4'>
                <div class='card shadow'>
                    <div class='card-body'>
                        <h5 class='card-title'>Quick Start</h5>
                        <p class='card-text'>Render Bootstrap with one method call.</p>
                        <a href='#' class='btn btn-primary'>Learn More</a>
                    </div>
                </div>
            </div>

        </div>
    </div>
</body>
</html>"

' Single method call - no browser management
Dim pdf = renderer.RenderHtmlAsPdf(bootstrapContent)
pdf.SaveAs("bootstrap-layout.pdf")
$vbLabelText   $csharpLabel

Puppeteer Sharp: Tarayıcı Tabanlı Bootstrap İşleme

Puppeteer Sharp, Bootstrap işleme için açık tarayıcı yönetimi ve yaşam döngüsü kontrolü gerektirir:

Örnek Kod: Puppeteer Sharp Bootstrap İşleme

using PuppeteerSharp;

// Download Chromium if needed (one-time ~170MB)
await new BrowserFetcher().DownloadAsync();

// Launch browser instance
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });

try
{
    var page = await browser.NewPageAsync();

    // Set Bootstrap content
    await page.SetContentAsync(@"
    <!DOCTYPE html>
    <html>
    <head>
        <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    </head>
    <body>
        <div class='container mt-5'>
            <div class='row'>
                <div class='col-md-4 mb-4'>
                    <div class='card shadow'>
                        <div class='card-body'>
                            <h5 class='card-title'>Quick Start</h5>
                            <p class='card-text'>Render Bootstrap with browser automation.</p>
                            <a href='#' class='btn btn-primary'>Learn More</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>");

    // Wait for Bootstrap CSS to load
    await page.WaitForNetworkIdleAsync();

    // Generate PDF
    await page.PdfAsync("bootstrap-layout.pdf");
}
finally
{
    // Required cleanup
    await browser.CloseAsync();
}
using PuppeteerSharp;

// Download Chromium if needed (one-time ~170MB)
await new BrowserFetcher().DownloadAsync();

// Launch browser instance
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });

try
{
    var page = await browser.NewPageAsync();

    // Set Bootstrap content
    await page.SetContentAsync(@"
    <!DOCTYPE html>
    <html>
    <head>
        <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    </head>
    <body>
        <div class='container mt-5'>
            <div class='row'>
                <div class='col-md-4 mb-4'>
                    <div class='card shadow'>
                        <div class='card-body'>
                            <h5 class='card-title'>Quick Start</h5>
                            <p class='card-text'>Render Bootstrap with browser automation.</p>
                            <a href='#' class='btn btn-primary'>Learn More</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>");

    // Wait for Bootstrap CSS to load
    await page.WaitForNetworkIdleAsync();

    // Generate PDF
    await page.PdfAsync("bootstrap-layout.pdf");
}
finally
{
    // Required cleanup
    await browser.CloseAsync();
}
Imports PuppeteerSharp

' Download Chromium if needed (one-time ~170MB)
Await (New BrowserFetcher()).DownloadAsync()

' Launch browser instance
Dim browser = Await Puppeteer.LaunchAsync(New LaunchOptions With {.Headless = True})

Try
    Dim page = Await browser.NewPageAsync()

    ' Set Bootstrap content
    Await page.SetContentAsync("
    <!DOCTYPE html>
    <html>
    <head>
        <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    </head>
    <body>
        <div class='container mt-5'>
            <div class='row'>
                <div class='col-md-4 mb-4'>
                    <div class='card shadow'>
                        <div class='card-body'>
                            <h5 class='card-title'>Quick Start</h5>
                            <p class='card-text'>Render Bootstrap with browser automation.</p>
                            <a href='#' class='btn btn-primary'>Learn More</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>")

    ' Wait for Bootstrap CSS to load
    Await page.WaitForNetworkIdleAsync()

    ' Generate PDF
    Await page.PdfAsync("bootstrap-layout.pdf")
Finally
    ' Required cleanup
    Await browser.CloseAsync()
End Try
$vbLabelText   $csharpLabel

Bootstrap Geliştirme İçin Temel Farklılıklar

Karmaşıklık:

  • IronPDF: 4 satır kod (başlangıç, işleme, kaydet)
  • Puppeteer Sharp: 15+ satır (indirme, başlatma, sayfa yönetimi, temizleme)

Özellikler:

  • IronPDF: Yerleşik güvenlik, sıkıştırma, filigran, imzalar
  • Puppeteer Sharp: PDF manipülasyonu ihtiyacı olan ekipler ayrı kütüphaneler ekler

Dağıtım:

  • IronPDF: Kendi başına, harici bağımlılık yok
  • Puppeteer Sharp: Yaklaşık 170MB Chromium ikilileri ve tarayıcı yönetimi gerektirir

Her iki kütüphane de Bootstrap'i doğru bir şekilde işler çünkü Chromium motorlarını kullanmaktadırlar. Seçim, basit bir PDF oluşturma iş akışına (IronPDF) mı, yoksa daha geniş tarayıcı otomasyon yeteneklerine (Puppeteer Sharp) mı ihtiyacınız olduğuna bağlıdır.

CSS çerçevesi uyumluluğu hakkında daha fazla bilgi için Bootstrap & Flexbox CSS Kılavuzu'ne bakın.

Sonuç

Hem IronPDF hem de Puppeteer Sharp, .NET ekosisteminde farklı ihtiyaçlara hitap eder. IronPDF, kapsamlı ve profesyonel bir PDF çözümü sunar, önemli özellik seti ve PDF işlemleri için tasarlanmış API'ler le profesyonellere hitap eder. 'Tüm kurumsal PDF iş akışları için - oluşturma, düzenleme, güvenlik ve imzalama - ihtiyacınız olan her şeyi tek, iyi belgelenmiş bir pakette sunar.

Puppeteer Sharp, PDF dışa aktarma özelliklerinden biri olmakla birlikte tarayıcı otomasyonu aracı olarak güçlüdür. Birincil işleri başsız tarayıcı kontrolü, web kazıma veya otomatik test olan ekipler için iyi bir mimari seçenektir. MIT lisansı ve güçlü topluluğu, PDF oluşturma gereksinimlerinin basit olduğu projeler için erişilebilir hale getirir.

Manipülasyon, güvenlik ve uyumluluk unsurlarını da içeren güvenilir PDF oluşturmayı gerektiren iş uygulamaları için IronPDF, daha pratik bir yoldur. Adanmış API'larla ve profesyonel destekle geliştirici zamanı tasarruf edilir, sıkça lisans maliyetini aşar. Bununla birlikte, tarayıcı otomasyonu temel gereksinim olduğunda ve PDF çıktısı ikinci planda olduğunda Puppeteer Sharp sağlam bir seçenek olarak kalır.

Farkı yaşamaya hazır mısınız? IronPDF'nın özelikleri keşfetmek ve PDF iş akışlarınızı nasıl kolaylaştırabileceğini görmek için 30 günlük ücretsiz deneme sürümü ile başlayın. Faturalar, raporlar veya karmaşık belge sistemleri oluştururken, IronPDF başarınız için gereken araçları ve desteği sağlar.

Bugün IronPDF ile projenizde ücretsiz bir deneme ile başlayın.

İlk Adım:
green arrow pointer

Lütfen dikkate alınPuppeteer Sharp kendi sahibinin tescilli markasıdır. Bu site, Puppeteer Sharp ile bağlantılı, onaylanmış veya desteklenmemiştir. 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.

Sıkça Sorulan Sorular

HTML'yi C# içerisinde PDF'ye nasıl dönüştürebilirim?

HTML dizgilerini PDF'lere dönüştürmek için IronPDF'ün RenderHtmlAsPdf yöntemini kullanabilirsiniz. Ayrıca, HTML dosyalarını RenderHtmlFileAsPdf kullanarak PDF'lere dönüştürebilirsiniz.

IronPDF ve Puppeteer Sharp arasındaki ana farklar nelerdir?

IronPDF, .NET geliştiricileri için özel olarak tasarlanmış kapsamlı bir PDF kütüphanesidir ve şifreleme, imzalama ve düzenleme gibi geniş PDF işleme özellikleri sunar. Puppeteer Sharp, esas olarak test ve web kazıma için başsız Chrome'u kontrol etmeye odaklanan ve PDF'leri özelliklerinden biri olarak üreten bir tarayıcı otomasyon aracıdır.

PDF'lere programatik olarak güvenlik özellikleri ekleyebilir miyim?

IronPDF, AES-256 şifreleme, parola koruması ve ayrıntılı izinler kontrolü de dahil olmak üzere kapsamlı güvenlik özellikleri sağlar. Kullanıcı ve sahip parolalarını ayarlayabilir, baskı, kopyalama ve düzenlemeyi SecuritySettings özelliği aracılığıyla sınırlayabilirsiniz. Dijital imzalar da yerel olarak desteklenir.

Hangi kütüphane daha iyi platformlar arası uyumluluk sunar?

IronPDF, Windows, Linux, macOS, Docker, Azure ve AWS için yerel destek ile üstün platformlar arası uyumluluk sunar. .NET 10, 9, 8, 7, 6, Core, Standard ve Framework'ü farklı ortamlar için ek yapılandırma veya paket gerektirmeden destekler.

Bu kütüphaneler JavaScript işleme ile nasıl başa çıkar?

Her iki kütüphane de Chrome tabanlı işleme kullandıkları için JavaScript çalıştırma desteği sunar. IronPDF basit işleme gecikme seçenekleri ve zamanlama kontrolü için WaitFor sınıfı sunar. Puppeteer Sharp bekleme koşulları ve doğrudan JavaScript çalıştırma yetenekleri ile daha ayrıntılı bir kontrol sunar.

Bu kütüphanelerin lisanslama maliyetleri nedir?

IronPDF, Lite lisansı için (1 geliştirici, 1 proje) 749 dolardan başlayan ticari lisanslama kullanır. Kurumsal sınırsız lisanslamaya kadar çeşitli seviyeler mevcuttur. Puppeteer Sharp, profesyonel destek ve gelişmiş özellikler olmadan MIT lisansı altında tamamen ücretsizdir.

Bu kütüphaneleri kullanarak mevcut PDF belgelerini düzenleyebilir miyim?

IronPDF, birleştirme, ayırma, filigran ekleme, başlık/altlık ekleme, form doldurma ve sayfa manipülasyonu dahil olmak üzere kapsamlı PDF düzenleme özellikleri sunar. Puppeteer Sharp yalnızca PDF oluşturur ve düzenleme işlemleri için ek kütüphaneler gerektirir.

Her iki kütüphane ile tarayıcı otomasyonu mümkün mü?

Puppeteer Sharp, başsız Chrome üzerinde gezinme, form doldurma ve ekran görüntüsü alma dahil tam kontrol sağlayan tarayıcı otomasyonunda başarılıdır. IronPDF, PDF işlemlerine odaklanır ve web içeriğini PDF'ye dönüştürmenin ötesinde tarayıcı otomasyon özellikleri sunmaz.

Mevcut geliştirici desteği nedir?

IronPDF, 24/5 profesyonel mühendis desteği, kapsamlı belgeler, öğreticiler ve API referansları sağlar. Destek, lisans seviyesine bağlı olarak e-posta, telefon ve ekran paylaşımı seçeneklerini içerir. Puppeteer Sharp, GitHub ve Stack Overflow üzerinden topluluk desteğine güvenir.

PDF'lerde dinamik içerik ve AJAX yüklü öğeleri nasıl ele alırım?

IronPDF, işlem gecikmeleri ve JavaScript çalıştırma ayarlarıyla dinamik içeriği ele alır. Belirli bir zamanlama için bir RenderDelay veya WaitFor sınıfını ayarlayabilirsiniz. Puppeteer Sharp, karmaşık dinamik içerik senaryoları için bekleme koşulları, gezinme seçenekleri ve doğrudan JavaScript çalıştırma sağlar.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

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