PDF ARAÇLARI

IronPDF vs EvoPdf: 2026'te Hangi .NET PDF Kütüphanesi Daha İyi Değer Sunar?

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 27 Eylül 2026

Modern .NET uygulamaları geliştirirken PDF işlevselliğine ihtiyaç duyuyorsanız, doğru kütüphaneyi seçmek geliştirme hızınızı, uygulama performansınızı ve uzun vadeli bakım maliyetlerinizi önemli ölçüde etkileyebilir. IronPDF ve EvoPdf, .NET ekosisteminde PDF oluşturma ve düzenleme konusunda iki farklı yaklaşımı temsil eder ve her biri farklı geliştirme senaryolarına hitap eden kendine özgü güçlü yönlere sahiptir.

Bu karşılaştırma, her iki kütüphaneyi de işleme doğruluğu, API tasarımı, performans, platform uyumluluğu ve toplam sahip olma maliyeti gibi kritik boyutlarda inceler. Yüksek hacimli belge işleme sistemi geliştiriyor, belgeleri imzalıyor veya sadece HTML raporlarını PDF'e dönüştürüyorsanız, bu farklılıkları anlamak teknik gereksinimleriniz ve bütçe kısıtlarınız doğrultusunda bilinçli bir karar vermenize yardımcı olacaktır.

IronPDF ve EvoPdf Genel Bakışta Nasıl Karşılaştırılır?

Detaylı karşılaştırmalara geçmeden önce, bu kütüphanelerin .NET geliştiricileri için en önemli kategorilerde nasıl karşılaştırıldığına dair bir genel bakış:

Ürün Karşılaştırma Genel Bakış
.NET PDF Oluşturma için IronPDF ve EvoPdf Karşılaştırması
KategoriÖzellik/AspektIronPDFEvoPdfAna Avantaj
Çekirdek MimarisiTasarım FelsefesiÖncelik sadelik, sezgisel API'lerDönüştürme ayarları üzerinde ayrıntılı kontrolTakım tercihlerine bağlı
API KarmaşıklığıRenderHtmlAsPdf() gibi basit metotlarConvertHtml() gibi metotlara sahip Converter sınıfıHer ikisi: Tek çağrıda dönüşüm
Platform DesteğiÇapraz PlatformWindows, Linux, macOS platforma özel NuGet paketleriyleEvoPdf Next: Windows, Linux, macOS platform başına NuGet paketleriyle; EvoPdf Classic: Windows, ayrıca ayrı kurulan EVO PDF Server'a çağrı yapan çapraz platform istemciHer ikisi: Çapraz platform yerel işleme (EvoPdf Next)
.NET Sürümleri.NET 10, 9, 8, 7, 6, 5, Core 3.1+, Standard 2.0, Framework 4.6.2+Next: .NET 10, 9, 8, 7, 6, Standard 2.0, Framework 4.6.2+; Classic: Framework 2.0+Her ikisi: Modern framework desteği
İşletim SistemleriWindows, Linux, macOS, Docker, Azure, AWSWindows, Linux, macOS, Docker, Azure (EvoPdf Next)Her ikisi: Docker ve bulut desteği
HTML'den PDF'eİşleme MotoruChromium (standart pakette CEF 109; IronPdf.UpdatedChrome'da CEF 131)Chromium 142 (EvoPdf Next); EVO'nun kendi motoru (EvoPdf Classic)Her ikisi: Chromium tabanlı
CSS3/HTML5 DesteğiPaketlenen Chromium sürümüne bağlı: Windows'ta standart pakette 109 ve IronPdf.UpdatedChrome'da 131 (ör. Tailwind CSS v4 için Chrome 111 veya üstü gerekir)Next: flexbox, grid, ES2015+, web fontlarıHer ikisi: Motor sürümüne bağlı
JavaScript ÇalıştırmaRender gecikmesiyle JavaScript desteğiDönüşüm gecikmesiyle JavaScript desteğiHer ikisi: Dinamik içerik
Güvenlik & ŞifrelemeŞifreleme SeviyeleriRC4-128, AES-128, AES-256RC4-40, RC4-128, AES-128, AES-256Her ikisi: AES-256 mevcut
İzin SeçenekleriAyrıntılı izin kontrolleriAyrıntılı izinler (yazdırma, kopyalama, düzenleme, açıklama, form doldurma, birleştirme)Her ikisi: Ayrıntılı kontrol
Dijital İmzalarEntegre, görsel imzalarGörsel imzalar, resim ve zaman damgası desteğiyleHer ikisi: Görsel imza
İçerik ManipülasyonuRedaksiyon YöntemiGerçek içerik kaldırma, tek satırlık APIRedaksiyon özelliği belgelenmemişIronPDF: Dahili redaksiyon
Filigran EklemeHTML/CSS tabanlı, tam stil desteğiFiligran ve damga için HTML şablonlarıHer ikisi: HTML tabanlı
DamgalamaBirleşik damgalama sınıflarıŞablonlar üzerinden HTML damgalarIronPDF: Özel damgalama sınıfları
Dosya DönüşümleriDOCX'ten PDF'eDahili DocxToPdfRendererEVO PDF Toolkit'te dahil ( $650 ), HTML'den PDF'e lisansında yokIronPDF: Temel lisansa dahil
Geliştirici DeneyimiKod Örnekleri100+ çalışmaya hazır örnekGitHub'da kod örnekleri, çevrimiçi demoIronPDF: Kapsamlı kaynaklar
DokümantasyonEğitimler, nasıl yapılır, videolar, API referansıDokümantasyon, API referansı, destek SSSIronPDF: Çoklu öğrenme yolları
PerformansEşzamanlılıkAsync işleme metotlarıAsync metotlar (EvoPdf Next); paralel dönüşümler için kalıcı işleyiciHer ikisi: Eşzamanlı iş yükleri
Lisanslama & FiyatlandırmaGiriş SeviyesiLite: $999 (1 geliştirici, 1 proje)Deployment: $450 (1 uygulama, 1 sunucu, sınırsız geliştirici, yeniden dağıtım yok)EvoPdf: Daha düşük başlangıç maliyeti
Takım LisansıPlus: $1,499 (3 geliştirici, 3 proje)Hiçbir seviye geliştirici saymaz; Company: $1,200 (sınırsız uygulama ve sunucu)EvoPdf: Fiyat takım büyüklüğüne bağlı değil
Yeniden Dağıtım+$1,999 telifsiz (OEM/SaaS); IronPDF'i açığa çıkaran bir genel API için SDK lisansı gerekirSadece Company License; bağımsız dönüşüm servisi veya SDK olarak değilEvoPdf: Company License'a dahil
Paket SeçeneğiIron Suite Lite: $2,998 (10 ürün; 1 geliştirici, 1 lokasyon, 1 proje)EVO PDF Toolkit Company: $1,400Farklı kapsam: Iron Suite OCR, barkod ve Office araçları ekler
DestekDahil DestekEvet: 24/5 canlı sohbet; Premium Destek ile 24/7 destek (deneme süresince dahil)Evet, ilk yıl (standart veya öncelikli, lisansa göre)Her ikisi: Destek dahil
En UygunKullanım SenaryolarıModern web uygulamaları, karmaşık PDF'ler, redaksiyonHTML, Word ve Excel'den PDF'e, şirket çapında lisanslamaBağlama bağlı

Not. EvoPdf, büyük takımlar için rekabetçi fiyatlar sunar. IronPDF, temel lisansında dahili redaksiyon ve DOCX'ten PDF'e dönüşüm içerir.

IronPDF ve EvoPdf'i Anlamak: Temel Güçlü Yönler ve Felsefe

IronPDF'i .NET PDF Kütüphanesi Pazarında Öne Çıkaran Nedir?

IronPDF, geliştirici verimliliğini merkeze alan bir .NET PDF kütüphanesidir. Sadelikten ödün vermeden güçlü bir temel üzerine inşa edilen IronPDF, .NET geliştiricilerinin tanıdık web geliştirme kalıplarını yansıtan sezgisel API'lerle PDF belgeleri oluşturmasına, düzenlemesine ve işlemesine olanak tanır. Kütüphanenin öne çıkan özelliği, JavaScript çalıştıran ve web fontlarını yükleyen Chromium tabanlı işleme motorudur; ne kadar modern CSS desteklediği, dağıttığınız Chromium sürümüne bağlıdır. Standart IronPdf paketi, eski Windows Server'larla uyumluluk için Chromium 109'u içerir; yalnızca Windows'ta çalışan IronPdf.UpdatedChrome paketi ise Chromium 131'i içerir ve subgrid gibi yeni CSS özelliklerini doğru işler, ancak 32-bit işlemleri, Windows Server 2012'yi veya SingleProcess modunu desteklemez, bu nedenle iki paket her hedefte birbirinin yerine kullanılamaz.

Kütüphane, HTML belgeleri işleyen, mevcut PDF'leri düzenleyen ve belgeleri şifreleme, imza ve redaksiyon ile koruyan uygulamaları hedefler. Geniş özellik seti yalnızca temel PDF oluşturma değil, dijital imzalar, form doldurma, IronOCR ile OCR entegrasyonu ve DOCX'ten PDF'e gibi belge formatı dönüşümleri gibi gelişmiş yetenekler de sunar. IronPDF'in çapraz platform uyumluluğu, yalnızca framework desteğinin ötesine geçer; Windows, Linux, macOS, Docker konteynerleri ve Azure ile AWS gibi bulut platformlarında çalışır.

EvoPdf PDF Oluşturma Konusunda Nasıl Farklı Yaklaşıyor?

EvoPdf, özelleştirme ve kontrol vurgusuyla HTML'den PDF'e dönüşüme odaklanır. Kütüphane, geliştiricilere işleme parametreleri, sayfa düzenleri ve dönüşüm ayarları üzerinde ayrıntılı kontrol imkanı sunar. EvoPdf iki sürümde gelir: EvoPdf Next, Chromium tabanlı bir işleme motoru kullanır (EVO PDF'e göre Chromium 142) ve Windows, Linux ve macOS'ta çalışır; EvoPdf Classic ise EVO'nun kendi işleme motorunu kullanır ve Windows'ta çalışır. EVO PDF Toolkit, Word, Excel, RTF ve Markdown'dan PDF'e dönüşüm ile PDF işleme bileşenleri ekler.

EvoPdf'in dikkat çeken bir avantajı lisanslamasıdır: hiçbir lisans seviyesi geliştirici sayısını dikkate almaz ve Company lisansı sınırsız uygulama ve sunucuyu kapsar, ayrıca kendi uygulamalarınız içinde yeniden dağıtımı içerir. Yüksek hacimli sunucu iş yükleri için EvoPdf Next, işleme motorunu dönüşümler arasında çalışır durumda tutan kalıcı işleyici modunu belgeler. Kütüphane ayrıca kimlik doğrulama çerezleri gerektiren sayfaların dönüştürülmesi gibi ASP.NET senaryolarını da destekler.

Kütüphanelerin Çapraz Platform Yetenekleri Nasıl Karşılaştırılır?

IronPDF'in Modern Çapraz Platform Mimarisi

IronPDF, çeşitli .NET sürümleri, işletim sistemleri ve bulut platformlarında çalışır:

  • .NET Sürüm Desteği:
    • .NET 10, 9, 8, 7, 6, 5 ve Core 3.1+
    • .NET Standard 2.0+
    • .NET Framework 4.6.2+
    • C#, VB.NET ve F# için tam destek
  • İşletim Sistemi Uyumluluğu:
    • Windows (x64; yalnızca standart paketle x86, çünkü IronPdf.UpdatedChrome 32-bit işlemleri desteklemez)
    • Linux (Ubuntu, Debian, CentOS; Alpine için IronPdfEngine konteyneriyle)
    • macOS (Intel ve Apple Silicon)
    • Önceden yapılandırılmış imajlarla Docker konteynerleri
  • Bulut Platformu Entegrasyonu:
    • Azure App Service, Functions ve VM'ler
    • AWS Lambda ve EC2
    • Kubernetes dağıtımları

IronPDF, Chromium ikili dosyalarını platforma özel NuGet paketlerinde dağıtır (IronPdf Windows için, IronPdf.Linux, IronPdf.MacOs ve IronPdf.MacOs.ARM). Linux'ta IronPDF, eksik sistem bağımlılıklarını varsayılan olarak otomatik yüklemeye çalışır; bu, sudo yetkisi gerektirir, aksi halde bağımlılıklar manuel yüklenir. Bu, çoğu ortam için dağıtım adımlarını kısaltır.

EvoPdf'in Platform Desteği

EvoPdf, benzer bir .NET sürüm aralığını destekler, ancak platform desteği sürüme bağlıdır:

  • .NET Framework Desteği:
    • EvoPdf Next: .NET 10, 9, 8, 7 ve 6, .NET Standard 2.0, .NET Framework 4.6.2 - 4.8.1
    • EvoPdf Classic: .NET 10 - 6, .NET Standard 2.0, .NET Framework 2.0 ve sonrası
  • Platform Dikkatleri:
    • EvoPdf Next: Windows (x64, ARM64), Linux (x64, ARM64) ve macOS (ARM64), her platform için ayrı NuGet paketi
    • EvoPdf Next, Azure App Service, Azure Functions ve Docker'da çalışır; işleme motoru uygulama sürecinde barındırılır, ayrıca bir tarayıcı kurulmaz
    • EvoPdf Classic: yalnızca Windows'ta yerel işleme yapar
    • EvoPdf Classic istemci: Windows, Linux ve macOS'ta çalışır ve dönüşümleri ayrı kurulan EVO PDF Server'a gönderir (Azure bulut servisi, IIS uygulaması veya Windows servisi olarak kurulur)

EvoPdf Next, Windows, Linux ve macOS'ta yerel işleme sunar. EvoPdf Classic üzerine kurulu ve Linux veya macOS'ta çalışması gereken bir uygulama, EVO PDF'in Classic to Next geçiş rehberine göre EvoPdf Next'e geçebilir veya Classic işleme işlemini ayrı bir EVO PDF Server'da tutup istemci kütüphanesiyle çağırabilir.

Hangi Kütüphane Yaygın Görevler İçin Daha İyi PDF İşlevselliği Sunar?

Bu makaledeki her kod örneği, tam bir .NET 8 konsol programıdır: dotnet new console ile bir proje oluşturun, örneğin ilk satırında belirtilen NuGet paketini ekleyin ve Program.cs dosyasını örnekle değiştirin. Örnekler kendi using yönergelerini bildirir, bu nedenle örtük usings ile veya olmadan derlenir. Kodlar IronPdf 2026.9.2, EvoPdf.HtmlToPdf 14.0.2 ve EvoPdf.PdfSecurity 14.0.2 ile derlenip çalıştırılmıştır. IronPDF bir lisans anahtarı gerektirir; örneğin ücretsiz deneme anahtarı, IronPdf.License.LicenseKey veya appsettings.json'da IronPdf.LicenseKey ile ayarlanır. EvoPdf anahtarsız çalışır ve çıktıya değerlendirme filigranı ekler.

HTML'den PDF'e Dönüşüm: İşleme Kalitesi ve Performans

Her iki kütüphanenin de en temel özelliği HTML'den PDF'e dönüşümdür ve API'leri farklı yaklaşımlar sunar.

IronPDF HTML'den PDF'e Örneği

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        EnableJavaScript = true,

        // Page margins in millimetres
        MarginTop = 20,
        MarginBottom = 20,
        MarginLeft = 15,
        MarginRight = 15,

        CssMediaType = PdfCssMediaType.Print,
        ViewPortWidth = 1920,
        FitToPaperMode = FitToPaperModes.Automatic
    }
};

// Render only after the page calls window.ironpdf.notifyRender(), or after 10 seconds at most
renderer.RenderingOptions.WaitFor.JavaScript(10000);

// The page loads Chart.js and a Google Font from their CDNs, so the renderer needs network access
var htmlContent = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap' rel='stylesheet'>
    <style>
        body { font-family: 'Roboto', sans-serif; }
        .chart-container { width: 100%; height: 400px; }
        @media print {
            .no-print { display: none; }
        }
    </style>
    <script src='https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js'></script>
</head>
<body>
    <h1>Dynamic Sales Report</h1>
    <div class='chart-container'>
        <canvas id='salesChart'></canvas>
    </div>
    <script>
        new Chart(document.getElementById('salesChart'), {
            type: 'line',
            data: {
                labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
                datasets: [{
                    label: 'Sales 2025',
                    data: [65, 78, 90, 81, 96],
                    borderColor: 'rgb(75, 192, 192)',
                    tension: 0.4
                }]
            },
            // No animation, so the chart is fully drawn when the constructor returns
            options: { animation: false }
        });
        window.ironpdf.notifyRender();
    </script>
</body>
</html>";

using var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("sales-report.pdf");

Bu IronPDF örneği şunları gösterir:

  • JavaScript Çalıştırma: Sayfanın JavaScript'i (burada Chart.js) işleme öncesi çalışır
  • Açık İşleme Sinyali: WaitFor.JavaScript(), sayfanın window.ironpdf.notifyRender() çağırmasını bekler, sabit bir gecikme yerine
  • Web Fontları: Sayfa tarafından referans verilen fontlar yüklenir ve gömülür
  • Yazdırma Medya Sorguları: CssMediaType.Print, sayfanın @media print kurallarını uygular

EvoPdf HTML'den PDF'e Örneği

// NuGet: Install-Package EvoPdf.HtmlToPdf  (EvoPdf Classic, Windows)
using System.IO;
using EvoPdf;

HtmlToPdfConverter converter = new HtmlToPdfConverter();

// Production use needs a license key. Leave this line out to evaluate:
// the output then carries an evaluation watermark. An invalid key makes the conversion throw.
// converter.LicenseKey = "<your EvoPdf license key>";

converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

// EvoPdf margins are in points (1/72 inch): 57 pt is about 20 mm, 43 pt about 15 mm,
// matching the IronPDF example above, whose margins are in millimetres
converter.PdfDocumentOptions.TopMargin = 57;
converter.PdfDocumentOptions.BottomMargin = 57;
converter.PdfDocumentOptions.LeftMargin = 43;
converter.PdfDocumentOptions.RightMargin = 43;

converter.JavaScriptEnabled = true;
converter.ConversionDelay = 2; // seconds

// For pages behind HTTP authentication, also set
// converter.AuthenticationOptions.Username and .Password

// Convert HTML string
string htmlString = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; }
        table { border-collapse: collapse; width: 100%; }
        th, td { border: 1px solid #ddd; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice</h1>
    <table>
        <tr>
            <th>Item</th>
            <th>Quantity</th>
            <th>Price</th>
        </tr>
        <tr>
            <td>Product A</td>
            <td>5</td>
            <td>$50.00</td>
        </tr>
    </table>
</body>
</html>";

// Perform conversion
byte[] pdfBytes = converter.ConvertHtml(htmlString, "");

// Save to file
File.WriteAllBytes("invoice.pdf", pdfBytes);

EvoPdf'in dönüştürücüsü, önce PdfDocumentOptions ayarlanıp ardından ConvertHtml() veya ConvertUrl() çağrılan bir yapılandır-sonra-dönüştür desenini izler. Bu makaledeki tüm EvoPdf örnekleri, Windows'ta işleme yapan EvoPdf Classic API'sini (EvoPdf.HtmlToPdf paketi) kullanır. Chromium tabanlı EvoPdf Next ise kendi API'sine sahip ayrı bir NuGet paketidir: örneğin lisans anahtarı, süreç başına statik Licensing.LicenseKey özelliğiyle ayarlanır. EVO, Next'te flexbox, grid, ES2015+ JavaScript ve web fontları desteğini belgeler.

PDF Güvenliği ve Şifreleme: Hassas Belgeleri Korumak

Güvenlik, hassas belgelerle çalışırken çok önemlidir. Her iki kütüphane de parola koruması, izin kontrolleri ve şifreleme sunar.

IronPDF Gelişmiş Güvenlik Uygulaması

// NuGet: Install-Package IronPdf
using System;
using IronPdf;
using IronPdf.Editing;
using IronPdf.Security;
using IronPdf.Signing;
using IronSoftware.Drawing;

using var pdf = PdfDocument.FromFile("confidential-report.pdf");

// Finish every content change before signing
pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5;'>CONFIDENTIAL</h2>",
    45, VerticalAlignment.Middle, HorizontalAlignment.Center);

// Descriptive document properties (these do not restrict access)
pdf.MetaData.Author = "Finance Team";
pdf.MetaData.Title = "Quarterly Report (Internal)";
pdf.MetaData.ModifiedDate = DateTime.UtcNow;

// Owner password: required to change the permissions below
pdf.SecuritySettings.OwnerPassword = "owner-password";

// User password: required to open the document
pdf.SecuritySettings.UserPassword = "user-password";

pdf.SecuritySettings.AllowUserCopyPasteContentForAccessibility = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = true;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality;
pdf.SecuritySettings.EncryptionType = PdfEncryptionType.Aes_256;

// Visible digital signature: image file, page index, and position/size on the page
var signature = new PdfSignature("certificate.pfx", "cert-password")
{
    SigningReason = "Document Approval",
    SigningLocation = "Head Office",
    SigningContact = "security@example.com",
    SignatureImage = new PdfSignatureImage("signature.png", 0, new Rectangle(100, 100, 200, 50))
};
pdf.Sign(signature);

// The signature is applied when the file is saved
pdf.SaveAs("secured-document.pdf");

IronPDF'in burada gösterilen güvenlik özellikleri:

  • Ayrıntılı İzinler: Yazdırma kalitesi, kopyalama, açıklama, form doldurma ve düzenleme kontrolü
  • Görsel Dijital İmzalar: Sebep, konum ve imza resmiyle imza
  • Belge Özellikleri: Yazar, başlık ve tarihler ayarlanabilir (yalnızca açıklama amaçlı)
  • Katmanlı Koruma: Bir belgede filigran, şifreleme ve imzayı birleştirin

EvoPdf Güvenlik Yapılandırması

// NuGet: Install-Package EvoPdf.PdfSecurity
// (licensed with the EVO PDF Toolkit; not included in the standalone HTML to PDF license)
using EvoPdf.PdfSecurity;

PdfSecurityOptions securityOptions = new PdfSecurityOptions();

// Set basic security parameters
securityOptions.UserPassword = "user123";
securityOptions.OwnerPassword = "owner456";
securityOptions.EncryptionAlgorithm = EncryptionAlgorithm.AES;
securityOptions.KeySize = EncryptionKeySize.EncryptKey256Bit;

// Configure permissions
securityOptions.CanPrint = true;
securityOptions.CanCopyContent = false;
securityOptions.CanEditContent = false;
securityOptions.CanEditAnnotations = false;
securityOptions.CanFillFormFields = true;
securityOptions.CanAssembleDocument = false;

// Apply security to existing PDF
PdfSecurityManager securityManager = new PdfSecurityManager(securityOptions);
securityManager.SaveSecuredPdfToFile("input.pdf", "secured-output.pdf");

EvoPdf, aynı temel kontrolleri kapsar: kullanıcı ve sahip parolaları, şifreleme ve yazdırma, kopyalama, düzenleme, açıklama, form doldurma ve belge birleştirme izinleri. EVO, algoritmayı (RC4 veya AES) ve anahtar boyutunu (40, 128 veya 256 bit) ayrı ayarlar olarak belgeler; 14.0.2 sürümüyle yapılan testlerimizde RC4 ile 40 veya 128 bit anahtarlar ve AES ile 128 veya 256 bit anahtarlar beklenen şifrelemeyi üretti, bu nedenle AES-128 veya AES-256 kullanın; RC4 eski bir algoritmadır. Bağımsız HTML'den PDF'e lisansında, dönüştürücünün kendi PdfSecurityOptions'ı, ayrı PDF Security bileşeni olmadan aynı korumayı uygular.

İçerik Redaksiyonu: Hassas Bilgileri Kaldırmak

Kişisel veri işleyen uygulamalarda, bir belge paylaşılmadan önce hassas metnin kalıcı olarak kaldırılması yaygın bir gereksinimdir. Redaksiyon bunun için bir yapı taşıdır; tek başına bir uygulamayı GDPR, HIPAA veya CCPA gibi düzenlemelere uyumlu yapmaz.

IronPDF Redaksiyon Örneği

// NuGet: Install-Package IronPdf
using IronPdf;
using IronSoftware.Drawing;

// This example expects a PDF with at least three pages
using var pdf = PdfDocument.FromFile("customer-records.pdf");

// 1. Redact a specific value on every page
pdf.RedactTextOnAllPages("123-45-6789");

// 2. Redact a word on specific pages (zero-based page indexes)
pdf.RedactTextOnPages(new[] { 0, 1, 2 }, "Confidential", CaseSensitive: false);

// 3. Redact a rectangular region on the first page
pdf.RedactRegionOnPage(0, new RectangleF(100, 200, 300, 50));

// 4. Replace a complete sensitive value with a label instead of drawing a black box
pdf.RedactTextOnAllPages("ACCT-0042-7781", DrawRectangles: false, ReplacementText: "[REDACTED]");

pdf.SaveAs("redacted-records.pdf");

IronPDF'in redaksiyon yetenekleri şunları içerir:

  • İçerik Kaldırma: Eşleşen metin sayfa içeriğinden kaldırılır, böylece artık çıkarılamaz, sadece üzeri kapatılmaz
  • Eşleşme Seçenekleri: Büyük/küçük harf duyarlı ve tam kelime eşleşmesi
  • Redaksiyon Görünümü: Siyah kutular çizilebilir veya yerine metin eklenebilir
  • Seçici Redaksiyon: Belirli sayfalar veya bölgeler hedeflenebilir

Metin redaksiyonu, sayfa içeriğindeki metni eşleştirir. Görüntü içindeki metin (ör. taranmış sayfa) eşleşmez; bölge redaksiyonu, içeriğe bakılmaksızın sabit bir alanı kaplar. EvoPdf bir redaksiyon özelliği belgelemez.

Form İşleme: Etkileşimli PDF'ler Oluşturmak

Her iki kütüphane de PDF formlarını destekler, ancak oluşturma ve düzenleme yaklaşımları farklıdır.

IronPDF Formlar Örneği

// NuGet: Install-Package IronPdf
using System;
using IronPdf;

// Create a new PDF with an HTML form
var html = @"
<html>
<body>
    <h2>Employee Information Form</h2>
    <form>
        <label>Full Name:</label>
        <input type='text' name='fullName' required />
        
        <label>Email:</label>
        <input type='email' name='email' required />
        
        <label>Department:</label>
        <select name='department'>
            <option value=''>Select Department</option>
            <option value='IT'>Information Technology</option>
            <option value='HR'>Human Resources</option>
            <option value='Sales'>Sales</option>
        </select>
        
        <label>Start Date:</label>
        <input type='text' name='startDate' placeholder='YYYY-MM-DD' />
        
        <label>
            <input type='checkbox' name='agreement' />
            I agree to the terms and conditions
        </label>
        
        <button type='submit'>Submit</button>
    </form>
</body>
</html>";

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        CreatePdfFormsFromHtml = true // Enable form field creation
    }
};

using var pdf = renderer.RenderHtmlAsPdf(html);

// Programmatically fill form fields
pdf.Form.FindFormField("fullName").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john.doe@example.com";
// A dropdown takes one of its displayed choices, not the HTML option value ("IT")
pdf.Form.FindFormField("department").Value = "Information Technology";
pdf.Form.FindFormField("startDate").Value = DateTime.Now.ToString("yyyy-MM-dd");
// "Yes" is the checkbox's checked state
pdf.Form.FindFormField("agreement").Value = "Yes";

// Make specific fields read-only
pdf.Form.FindFormField("email").ReadOnly = true;

// Save as fillable form
pdf.SaveAs("fillable-form.pdf");

// Or flatten the form (convert to static content)
pdf.Flatten();
pdf.SaveAs("completed-form.pdf");

IronPDF'in form işleme özellikleri:

  • Otomatik Form Oluşturma: HTML formlarını PDF formlarına dönüştürür
  • Programatik Manipülasyon: Form alanlarını API ile doldur, oku ve değiştir
  • Alan Türleri: Metin girişleri (e-posta, sayı ve telefon dahil) ve metin alanları metin alanına dönüşür; onay kutuları, radyo butonları ve açılır menüler tipini korur. HTML tarih girişleri form alanına dönüştürülmez, bu nedenle yukarıdaki başlangıç tarihi bir metin girişi olarak kullanılır.
  • Alan Özellikleri: Değerleri ve salt okunur bayrakları ayarla
  • Form Düzleştirme: Doldurulmuş formları statik PDF'e dönüştür

Performans Dikkatleri

Performans özellikleri, belge karmaşıklığına ve kullanım senaryosuna göre önemli ölçüde değişir:

Bir Belge Topluluğunu Zamanlamak

// NuGet: Install-Package IronPdf
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using IronPdf;

// Timing harness for a batch of documents. Replace the generated HTML with your own templates.
const int documentCount = 100;
const int maxConcurrency = 4;

var htmlDocuments = Enumerable.Range(1, documentCount)
    .Select(i => $"<html><body><h1>Invoice {i}</h1><p>Amount due: {i * 10} USD</p></body></html>")
    .ToList();

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        EnableJavaScript = false // static content only
    }
};

// Cap how many renders run at once instead of starting every render immediately
using var gate = new SemaphoreSlim(maxConcurrency);
var stopwatch = Stopwatch.StartNew();

var tasks = htmlDocuments.Select(async (html, index) =>
{
    await gate.WaitAsync();
    try
    {
        using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
        pdf.SaveAs($"invoice-{index + 1}.pdf");
    }
    finally
    {
        gate.Release();
    }
});
await Task.WhenAll(tasks);

stopwatch.Stop();
Console.WriteLine($"Documents: {documentCount}, at most {maxConcurrency} at a time");
Console.WriteLine($"Total elapsed: {stopwatch.ElapsedMilliseconds} ms");
// Elapsed time divided by the document count: an amortized figure, not the latency of one request
Console.WriteLine($"Amortized time per document: {stopwatch.ElapsedMilliseconds / (double)documentCount:F1} ms");
// Resident memory of this process only, sampled once at the end; the Chromium helper
// processes are not included, and this is not the peak
Console.WriteLine($"Working set of this process at end: {Process.GetCurrentProcess().WorkingSet64 / 1024 / 1024} MB");

Bu makalede karşılaştırmalı bir kıyaslama yoktur: sonuçlar şablonlara, donanıma ve dağıtıma bağlıdır, bu nedenle kendi ortamınızda ölçüm yapın. Her kütüphane için belgelenmiş ayarlar:

  • IronPDF motor sürümü: Modern, JavaScript ağırlıklı veya derin iç içe geçmiş sayfalarda yavaş işleme için, Bootstrap veya Tailwind ile oluşturulanlar dahil, IronPDF IronPdf.UpdatedChrome paketini önerir; bu paket standart paketin Chromium 109'u yerine Chromium 131'i içerir
  • IronPDF eşzamanlılık: RenderHtmlAsPdfAsync gibi async işleme metotları, aynı anda kaç işleme yapılacağını kendiniz sınırlandırabilirsiniz
  • EvoPdf Next işleme modları: GlobalSettings.HtmlRendererMode'u PersistentProcess (varsayılan) olarak ayarlamak, dönüşümler arasında bir işleme motoru sürecini çalışır durumda tutar; ProcessPerConversion ise her dönüşüm için bir tane başlatır; dönüşümler paralel çalışabilir, her biri kendi dönüştürücüsüyle ve GlobalSettings.MaxParallelConversions ile aynı anda kaç tane çalışacağını sınırlandırabilirsiniz
  • EvoPdf Next async metotları: Async/await kodu için ConvertHtmlAsync ve ConvertUrlAsync

Farklı Takım Büyüklükleri İçin Fiyatlandırma Modelleri Nasıl Karşılaştırılır?

IronPDF Lisans Yapısı

IronPDF, Lite, Plus ve Professional lisansları dahil olmak üzere çeşitli fiyatlandırma seçenekleri sunar ve telifsiz yeniden dağıtım seçeneği vardır. Lisans modeli, takımınızın ve projenizin ihtiyaçlarına göre ölçeklenmek üzere tasarlanmıştır (Eylül 2026 fiyatları):

  • Lite Lisans: $999
    • 1 geliştirici
    • 1 lokasyon
    • 1 proje
    • E-posta desteği
    • Uygun: Bireysel geliştiriciler, küçük projeler
  • Plus Lisans: $1,499
    • 3 geliştirici
    • 3 lokasyon
    • 3 proje
    • E-posta (48 saat SLA) ve canlı sohbet desteği
    • Uygun: Küçük takımlar, birden fazla proje
  • Professional Lisans: $2,999
    • 10 geliştirici
    • 10 lokasyon
    • 10 proje
    • E-posta (24 saat SLA), canlı sohbet, telefon ve ekran paylaşımı desteği
    • Uygun: Orta ve büyük takımlar
  • Ek Seçenekler:
    • Telifsiz yeniden dağıtım (OEM/SaaS): +$1,999, son kullanıcıların IronPDF API'lerini doğrudan çağırmadığı ticari yazılım ve SaaS için
    • SDK lisansı: Bir ürün, IronPDF işlevselliğini genel bir API ile diğer geliştiricilere açıyorsa gereklidir
    • Destek ve güncelleme uzatmaları: 1, 3 veya 5 yıl, lisans seviyesine göre fiyatlandırılır
    • Iron Suite: Tüm 10 Iron Software ürünü, aynı seviyelerde lisanslanır; Iron Suite Lite (1 geliştirici, 1 lokasyon, 1 proje) $2,998

EvoPdf Lisanslama Seçenekleri

EVO PDF Toolkit ve bağımsız HTML'den PDF'e dönüştürücü, Deployment ve Company olmak üzere iki lisans seviyesi sunar (Eylül 2026 fiyatları; güncel fiyat için evopdf.com/buy adresini kontrol edin). HTML'den PDF'e lisansı hem Next hem de Classic dönüştürücüyü kapsar; diğer bileşenler, örneğin PDF Security, yalnızca Toolkit'e dahildir.

  • Deployment Lisansı:
    • EVO HTML to PDF: $450
    • EVO PDF Toolkit: $650
    • Bir uygulama, bir sunucuda, kendi şirketiniz tarafından kullanılır
    • O uygulama üzerinde çalışan sınırsız geliştirici
    • Yük dengeleyici, konteynerli veya otomatik ölçeklenen dağıtımlar için Company License gerekir
    • Yeniden dağıtım yok
    • İlk yıl standart destek
  • Company Lisansı:
    • EVO HTML to PDF: $1,200
    • EVO PDF Toolkit: $1,400
    • Sınırsız geliştirici, uygulama ve sunucu
    • Kendi müşterilerinize uygulamalarınız içinde yeniden dağıtım; lisans sözleşmesi, EVO'nun yazılı izni olmadan dönüşüm işlevini bağımsız bir servis, barındırılan API veya SDK olarak sunmaya izin vermez
    • İlk yıl öncelikli destek

Toplam Sahip Olma Maliyeti Analizi

Aşağıdaki her senaryo, dağıtım varsayımlarını belirtir; çünkü her iki tedarikçi de kapsam ve takım büyüklüğüne göre fiyatlandırır:

Senaryo 1: İki Geliştirici, Bir İç Uygulama, Bir Sunucu

  • IronPDF Plus: $1,499 (Lite 1 geliştiriciyi kapsar, bu nedenle 2 kişilik takım için Plus gerekir, 3'e kadar kapsar)
  • EvoPdf Deployment: $450 (bir uygulama, bir sunucu; geliştirici sayısı önemli değil)
  • Uygulama birden fazla sunucuda, yük dengeleyici arkasında veya otomatik ölçeklenen konteynerlerde çalışıyorsa, EvoPdf için Company License ($1,200) gerekir
  • Daha düşük lisans maliyeti: EvoPdf

Senaryo 2: Beş Geliştirici, Birkaç İç Uygulama

  • IronPDF Professional: $2,999 (10 geliştirici, 10 lokasyon, 10 proje; Plus yalnızca 3 geliştiriciyi kapsar)
  • EvoPdf Company: $1,200 (birden fazla uygulama için Company License gerekir)
  • Daha düşük lisans maliyeti: EvoPdf

Senaryo 3: PDF ve Diğer Belge Araçlarına İhtiyacı Olan On Geliştirici

  • Iron Suite Professional: 10 geliştirici, 10 lokasyon, 10 proje, tüm 10 Iron Software ürünü (güncel fiyat için Iron Suite lisanslama sayfasına bakın)
  • EVO PDF Toolkit Company: $1,400 (sınırsız geliştirici, uygulama ve sunucu; yalnızca PDF odaklı, OCR veya barkod araçları yok)
  • Farklı kapsam: Sadece PDF araçlarına ihtiyacınız varsa EVO PDF Toolkit daha az maliyetlidir. Iron Suite, Toolkit'in yerine geçmeyen OCR, barkod, Excel, Word ve diğer kütüphaneleri ekler. İki ürünü yalnızca geliştirici ve dağıtım kapsamı eşleşiyorsa karşılaştırın.

Senaryo 4: Müşterileri İçin PDF Oluşturan Ticari SaaS Ürünü

  • IronPDF Professional + OEM yeniden dağıtım: $2,999 + $1,999 (son kullanıcıların IronPDF'nin API'lerini doğrudan çağırmadığı SaaS için geçerlidir)
  • EvoPdf Company: $1,200 (yeniden dağıtımı içerir; PDF oluşturma, ürününüzün bir özelliği olmalı, genel amaçlı bir dönüştürme hizmeti olmamalıdır)
  • Daha düşük lisans maliyeti: EvoPdf, ürün dönüştürme işlevini bir hizmet veya genel API olarak sunmadığı sürece; her iki satıcı da bu durumu ayrı olarak lisanslar

Modern CSS Framework'leri Seçiminizi Nasıl Etkiler?

PDF kütüphanesi seçiminde çoğu zaman göz ardı edilen bir faktör, modern CSS framework'lerine verilen destektir. Bootstrap, Tailwind CSS ve Foundation web geliştirmede yaygın olarak kullanıldığından, kütüphanenizin bu framework'leri işleyebilme yeteneği geliştirme verimliliğini ve çıktı kalitesini doğrudan etkiler.

IronPDF: Framework Desteği Chromium Sürümüne Bağlıdır

IronPDF'nin Chromium motoru, paketle birlikte gelen Chromium sürümünün CSS framework'lerini işlediği gibi işler; bu nedenle kullandığınız framework'ün tarayıcı gereksinimlerini dağıttığınız paketle karşılaştırın:

  • Bootstrap 5: Flexbox ve CSS Grid düzenleri desteklenir
  • Tailwind CSS: Tailwind CSS v4, Chrome 111 veya daha yenisini gerektirir; bu, standart Windows paketinin Chromium 109 sürümünden daha yenidir, bu nedenle Windows'ta v4 düzenleri için IronPdf.UpdatedChrome paketi (Chromium 131) gerekir. Tailwind, eski tarayıcıların desteklenmesi gereken durumlarda v3.4'te kalınmasını önerir. Kendi şablonlarınızı dağıttığınız paketle test edin.
  • Modern CSS3: Dönüşümler ve özel özellikler desteklenir
  • Motor sürümü önemlidir: subgrid, overflow: hidden kenar durumları ve özel satır yükseklikleri gibi bazı yeni CSS özellikleri yalnızca IronPdf.UpdatedChrome ile doğru şekilde işlenir; IronPDF ayrıca Bootstrap veya Tailwind sayfaları yavaş işleniyorsa bu paketi önerir. IronPdf.UpdatedChrome, 32-bit işlemleri, Windows Server 2012'yi veya SingleProcess modunu desteklemez, bu nedenle geçiş yapmadan önce dağıtım hedeflerinizi doğrulayın.

Kod Örneği: Bootstrap Timeline Bileşeni

// NuGet: Install-Package IronPdf
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapTimeline = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .timeline { position: relative; padding: 20px 0; }
        .timeline::before {
            content: '';
            position: absolute;
            left: 50%;
            width: 2px;
            height: 100%;
            background: #dee2e6;
        }
        .timeline-item { position: relative; margin: 20px 0; }
    </style>
</head>
<body>
    <div class='container py-5'>
        <h2 class='text-center mb-5'>Project Timeline</h2>
        <div class='timeline'>
            <div class='timeline-item'>
                <div class='row'>
                    <div class='col-md-6'>
                        <div class='card shadow-sm'>
                            <div class='card-body'>
                                <h5 class='card-title'>Phase 1: Planning</h5>
                                <p class='text-muted'>Q1 2025</p>
                                <p class='card-text'>Initial project scope and requirements gathering completed.</p>
                                <span class='badge bg-success'>Completed</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!-- Additional timeline items... -->
        </div>
    </div>
</body>
</html>";

// The page loads Bootstrap from a CDN, so the renderer needs network access
using var pdf = renderer.RenderHtmlAsPdf(bootstrapTimeline);
pdf.SaveAs("project-timeline.pdf");

EvoPdf: Next'te Chromium, Classic'te EVO'nun Kendi Motoru

EvoPdf'nin iki sürümü modern CSS'i farklı şekilde işler:

  • EvoPdf Next: Chromium tabanlı motor (EVO PDF'ye göre Chromium 142) ile flexbox, grid, ES2015+ JavaScript ve web fontları için belgelenmiş destek
  • EvoPdf Classic: EVO'nun kendi işleme motoru; EVO, CSS3, SVG, web fontları ve JavaScript desteği olduğunu belirtir; Yeni Sürüm ECMAScript 6, WOFF 2, HTTP/2 ve TLS 1.3 ekler

Geliştirme Etkisi: Uygulamanızda Bootstrap veya Tailwind yoğun olarak kullanılıyorsa ve PDF'lerin web arayüzünüzle birebir uyumlu olması gerekiyorsa, gerçek şablonlarınızı her iki kütüphanenin deneme sürümüyle test edin. Her iki tarafta da Chromium tabanlı motorlar (IronPDF ve EvoPdf Next) olduğunda, farklılıklar framework desteğinden çok motor sürümü ve yapılandırmasından kaynaklanır.

CSS framework uyumluluğu hakkında daha fazla bilgi için Bootstrap & Flexbox CSS Rehberi sayfasına bakın.

Hangi Dokümantasyon ve Destek Seçenekleri Geliştiricilere Daha İyi Hizmet Veriyor?

IronPDF'nin Geliştirici Kaynakları

IronPDF, dokümantasyon, 24/5 canlı sohbet, Premium Destek ile 7/24 mühendislik desteği, video eğitimleri ve düzenli güncellemeler sunar. Destek ekosistemi şunları içerir:

  • Dokümantasyon Kalitesi:
  • Destek Kanalları:
    • Ücretli lisanslara sahip olanlar için Premium Destek ile 7/24 mühendislik desteği; deneme kullanıcıları deneme süresince Premium Destek alır
    • E-posta yanıt SLA'sı: 48 saat (Plus), 24 saat (Professional), 12 saat (Unlimited)
    • Tüm lisans seviyelerinde 24/5 canlı sohbet
    • Professional ve Unlimited lisanslar için telefon desteği
    • Professional ve Unlimited lisanslar için ekran paylaşımı
  • Öğrenme Kaynakları:
    • Başlangıç rehberleri
    • Performans optimizasyon rehberleri
    • Güvenlik en iyi uygulamaları
    • Bulut dağıtım rehberleri

EvoPdf'nin Destek Yapısı

EvoPdf, dokümantasyon ve desteği şu yollarla sağlar:

  • Dokümantasyon:
    • API referans dokümantasyonu
    • Yaygın senaryolar için kod örnekleri ve GitHub'da kod örnekleri
    • Çevrimiçi demo uygulaması
    • Lisanslama, dağıtım ve dönüştürme konularını kapsayan destek SSS'si
  • Destek Seçenekleri:
    • İlk yıl için teknik destek ve değerlendirme süresince ücretsiz destek
    • Standart destek (Deployment lisansı) veya öncelikli destek (Company lisansı)
    • İlk yıldan sonra bakım yenilemeleri mevcut

Ana fark, IronPDF'nin eğitim içeriğinin (eğitimler, nasıl yapılır rehberleri ve videolar) kapsamı ile birlikte 24/5 canlı sohbet ve Premium Destek ile 7/24 destek sunmasıdır.

Her Kütüphane İçin En İyi Kullanım Senaryoları Nelerdir?

IronPDF'yi Ne Zaman Seçmelisiniz?

IronPDF aşağıdaki senaryolarda öne çıkar:

1. Modern Web Uygulaması Entegrasyonu

  • Dinamik raporlar üreten SaaS platformları
  • Grafiklerle fatura oluşturan e-ticaret siteleri
  • PDF olarak dışa aktarılan iş zekası panoları
  • React, Angular veya Vue.js kullanan uygulamalar

2. Hassas İçerikli Belgeler

  • Belgeler paylaşılmadan önce kişisel verilerin çıkarılması
  • Oluşturulan raporların şifrelenmesi ve parola ile korunması
  • Belgelerin imzalanması, böylece sonraki değişikliklerin tespit edilebilmesi
  • Redaksiyon ile yasal belge yönetimi

3. Karmaşık Belge İşleme

  • Çok formatlı belge dönüştürme (DOCX, HTML, Görseller)
  • IronOCR ile taranmış belgeler için OCR
  • Paralel yürütme ile toplu işleme
  • Dijital imzalı belgeler

4. Platformlar Arası Dağıtım

  • Docker ile konteynerleştirilmiş uygulamalar
  • Linux tabanlı bulut dağıtımları
  • Mikroservis mimarileri
  • Sunucusuz fonksiyonlar (AWS Lambda, Azure Functions)

Örnek: Oluşturulan Bir Raporun Korunması

// NuGet: Install-Package IronPdf
using System.Net;
using IronPdf;
using IronPdf.Security;
using IronPdf.Signing;

var patient = new PatientRecord("P-10442", "Jane <Q.> Doe & Family", "123-45-6789", "open-sesame");

// HTML-encode text values, so characters such as & and < print as text instead of changing the markup
var html = $@"
<html>
<body>
    <h1>Patient Summary</h1>
    <p>Patient ID: {WebUtility.HtmlEncode(patient.PatientId)}</p>
    <p>Name: {WebUtility.HtmlEncode(patient.Name)}</p>
    <p>SSN: {WebUtility.HtmlEncode(patient.Ssn)}</p>
</body>
</html>";

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

// Remove the SSN from the page content wherever it appears
pdf.RedactTextOnAllPages(patient.Ssn);

// Descriptive document properties
pdf.MetaData.Author = "Records System";
pdf.MetaData.Title = $"Patient Summary {patient.PatientId}";

// Require a password to open the file, restrict copying, and encrypt with AES-256
pdf.SecuritySettings.UserPassword = patient.AccessCode;
pdf.SecuritySettings.OwnerPassword = "records-owner-password";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.EncryptionType = PdfEncryptionType.Aes_256;

// Sign last, so changes made to the file after signing can be detected
pdf.Sign(new PdfSignature("records-cert.pfx", "password")
{
    SigningReason = "Record export",
    SigningLocation = "Records Department"
});

pdf.SaveAs("patient-summary.pdf");

record PatientRecord(string PatientId, string Name, string Ssn, string AccessCode);

Bunlar belge işleme için yapı taşlarıdır. Bir uygulamanın HIPAA gibi bir düzenlemeye uyup uymadığı, verinin nasıl saklandığı, iletildiği ve erişimin nasıl kontrol edildiğine de bağlıdır; bu, tek başına bir PDF ayarıyla sağlanamaz.

EvoPdf'yi Ne Zaman Seçmelisiniz?

EvoPdf şu durumlar için uygundur:

1. HTML'den PDF'ye Dönüştürme

  • HTML şablonlarından oluşturulan raporlar
  • Chromium tabanlı EvoPdf Next ile modern HTML, CSS ve JavaScript
  • Faturalar ve makbuzlar
  • Tutarlı şablonlarla toplu belge üretimi

2. Bütçe Odaklı Ekipler

  • Tek bir lisansla sınırsız geliştirici
  • Daha düşük giriş maliyeti ($450 Deployment lisansı)
  • Dahili redaksiyon gerektirmeyen projeler

3. Belirli Sunucu Ortamları

  • Eski .NET Framework uygulamaları (EvoPdf Classic, .NET Framework 2.0 ve sonrasını destekler)
  • Tek bir uygulama için sunucu başına lisanslama
  • Eski sistem entegrasyonu

4. Yüksek Hacimli Dönüştürmeler

  • Statik rapor üretimi
  • Dokümantasyon sistemleri
  • Baskıya hazır belge oluşturma

Gerçek Dünya Örneği: Fatura Oluşturma Sistemi

// NuGet: Install-Package EvoPdf.HtmlToPdf  (EvoPdf Classic, Windows)
using System;
using System.Globalization;
using System.IO;
using System.Net;
using EvoPdf;

var invoice = new InvoiceData("INV-2026-0042", new DateTime(2026, 9, 1), "Smith & Sons <Ltd>", 1250.00m);

var converter = new HtmlToPdfConverter
{
    // LicenseKey = "<your EvoPdf license key>",
    JavaScriptEnabled = false, // not needed for static invoices
    ConversionDelay = 0
};
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.PdfDocumentOptions.TopMargin = 30;    // points
converter.PdfDocumentOptions.BottomMargin = 30; // points

string template =
    "<html><body><h1>Invoice {{InvoiceNumber}}</h1>" +
    "<p>Date: {{Date}}</p><p>Customer: {{CustomerName}}</p><p>Total: {{Total}}</p></body></html>";

// HTML-encode text values, so characters such as & and < print as text instead of changing the markup
string html = template
    .Replace("{{InvoiceNumber}}", WebUtility.HtmlEncode(invoice.InvoiceNumber))
    .Replace("{{Date}}", invoice.Date.ToString("yyyy-MM-dd"))
    .Replace("{{CustomerName}}", WebUtility.HtmlEncode(invoice.CustomerName))
    .Replace("{{Total}}", invoice.Total.ToString("C", CultureInfo.GetCultureInfo("en-US")));

File.WriteAllBytes($"invoice-{invoice.InvoiceNumber}.pdf", converter.ConvertHtml(html, ""));

record InvoiceData(string InvoiceNumber, DateTime Date, string CustomerName, decimal Total);

Gelişmiş Uygulama Kalıpları ve En İyi Uygulamalar

Üretimde Performansı Optimize Etme

Her iki kütüphane de doğru yapılandırma ve kullanım kalıplarından fayda sağlar:

IronPDF Performans Optimizasyonu

// NuGet: Install-Package IronPdf
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using IronPdf;
using IronPdf.Engines.Chrome;
using IronPdf.Rendering;

// Global engine settings: set once at startup, before the first render
Installation.ChromeGpuMode = ChromeGpuModes.Disabled; // servers usually have no GPU
// Set to false only if the Linux dependencies are already installed in your image
Installation.LinuxAndDockerDependenciesAutoConfig = false;

var service = new PdfService(maxConcurrency: 4);
var pages = Enumerable.Range(1, 8).Select(i => $"<h1>Report {i}</h1>");
byte[][] results = await Task.WhenAll(pages.Select(service.GeneratePdfAsync));

for (int i = 0; i < results.Length; i++)
    File.WriteAllBytes($"report-{i + 1}.pdf", results[i]);
Console.WriteLine($"Generated {results.Length} PDFs");

public class PdfService
{
    private readonly ChromePdfRenderer _renderer;
    private readonly SemaphoreSlim _gate;

    public PdfService(int maxConcurrency)
    {
        // Caps how many renders run at once
        _gate = new SemaphoreSlim(maxConcurrency);

        _renderer = new ChromePdfRenderer
        {
            RenderingOptions = new ChromePdfRenderOptions
            {
                EnableJavaScript = false, // only if the pages need no JavaScript
                CssMediaType = PdfCssMediaType.Screen,
                Timeout = 30 // seconds
            }
        };
    }

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        await _gate.WaitAsync();
        try
        {
            using var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
            return pdf.BinaryData;
        }
        finally
        {
            _gate.Release();
        }
    }
}

EvoPdf Performans Kalıpları

// NuGet: Install-Package EvoPdf.HtmlToPdf  (EvoPdf Classic, Windows)
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using EvoPdf;

var service = new EvoPdfService(maxConcurrency: 4);
var pages = Enumerable.Range(1, 8).Select(i => $"<h1>Report {i}</h1>");
byte[][] results = await Task.WhenAll(pages.Select(service.GeneratePdfAsync));

for (int i = 0; i < results.Length; i++)
    File.WriteAllBytes($"evopdf-report-{i + 1}.pdf", results[i]);
Console.WriteLine($"Generated {results.Length} PDFs");

public class EvoPdfService
{
    private readonly SemaphoreSlim _gate;

    // Caps how many conversions run at once
    public EvoPdfService(int maxConcurrency) => _gate = new SemaphoreSlim(maxConcurrency);

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        await _gate.WaitAsync();
        try
        {
            // A new converter for each conversion, as EVO documents for parallel conversions
            var converter = new HtmlToPdfConverter
            {
                // LicenseKey = "<your EvoPdf license key>",
                JavaScriptEnabled = false,
                ConversionDelay = 0
            };

            // The Classic API is synchronous, so run it on a thread-pool thread
            return await Task.Run(() => converter.ConvertHtml(html, ""));
        }
        finally
        {
            _gate.Release();
        }
    }
}

Her iki örnekte de eşzamanlılığı sınırlayan şey semafordur. EvoPdf Next'te, GlobalSettings.MaxParallelConversions kütüphane içinde aynı türden bir sınır belirler ve kalıcı işleyici, dönüştürmeler arasında işleme motoru sürecini çalışır durumda tutar.

Hata Yönetimi ve Hata Ayıklama

Üretim kodu, bir sayfanın yüklenememesi gibi işleme hatalarını yönetebilmelidir:

IronPDF Hata Yönetimi

// NuGet: Install-Package IronPdf
using System;
using System.IO;
using System.Threading.Tasks;
using IronPdf;
using IronPdf.Exceptions;

// Write IronPDF's own diagnostics to a log file
IronPdf.Logging.Logger.LogFilePath = "ironpdf.log";
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60; // seconds

byte[] page = await TryRenderUrlAsync(renderer, "https://example.com/");
if (page != null)
{
    File.WriteAllBytes("example.pdf", page);
    Console.WriteLine($"Rendered {page.Length} bytes");
}

// A host that does not resolve makes the render throw, which exercises the error path
byte[] missing = await TryRenderUrlAsync(renderer, "https://nonexistent.invalid/");
Console.WriteLine(missing == null ? "Second render failed and was handled" : "Second render succeeded");

// Returns the PDF bytes, or null if the page could not be rendered
static async Task<byte[]> TryRenderUrlAsync(ChromePdfRenderer renderer, string url)
{
    try
    {
        using var pdf = await renderer.RenderUrlAsPdfAsync(url);
        if (pdf.PageCount == 0)
        {
            Console.Error.WriteLine($"No pages rendered for {url}");
            return null;
        }
        return pdf.BinaryData;
    }
    catch (IronPdfNativeException ex)
    {
        // Raised by the rendering engine, for example when the page cannot be loaded
        Console.Error.WriteLine($"Rendering failed for {url}: {ex.Message}");
        return null;
    }
}

Sektöre Özel Uygulama Örnekleri

Finansal Raporlar: İmzalı, Salt Okunur Ekstreler

Onaylandıktan sonra değişmemesi gereken bir ekstre, filigran, kısıtlı izinler ve imza ile birleştirilebilir:

// NuGet: Install-Package IronPdf
using System;
using IronPdf;
using IronPdf.Editing;
using IronPdf.Security;
using IronPdf.Signing;
using IronSoftware.Drawing;

var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(
    "<h1>Quarterly Statement: Q3 2026</h1>" +
    "<table><tr><td>Revenue</td><td>1,250,000</td></tr><tr><td>Expenses</td><td>980,000</td></tr></table>");

// Mark the document as a draft
pdf.ApplyWatermark(@"
    <div style='color: rgba(0,0,0,0.1); font-size: 120px; transform: rotate(-45deg); font-family: Arial;'>
        DRAFT
    </div>", 30, VerticalAlignment.Middle, HorizontalAlignment.Center);

// Descriptive document properties: useful for search and filing, not a record of who changed what
pdf.MetaData.Author = "Financial Reporting System";
pdf.MetaData.Keywords = "Quarterly Statement, Q3 2026";
pdf.MetaData.CustomProperties.Add("ReportPeriod", "2026-Q3");
pdf.MetaData.CustomProperties.Add("GeneratedAt", DateTime.UtcNow.ToString("O"));

// Restrict editing; the owner password is needed to change these permissions
pdf.SecuritySettings.OwnerPassword = "finance-owner-password";
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SecuritySettings.AllowUserCopyPasteContent = true;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.EncryptionType = PdfEncryptionType.Aes_256;

// Sign last: readers can then detect changes made after signing
pdf.Sign(new PdfSignature("financial-cert.pfx", "password")
{
    SigningReason = "Statement approval",
    SigningLocation = "Finance Department",
    // Visible signature image on the first page
    SignatureImage = new PdfSignatureImage("cfo-signature.png", 0, new Rectangle(50, 50, 200, 60))
});

pdf.SaveAs("quarterly-statement.pdf");

İmza, sonraki değişiklikleri tespit edilebilir kılar ve izinler düzenlemeyi caydırır; hiçbiri tek başına bir uyumluluk kontrolü veya kim ne yaptı bilgisinin tutulduğu bir denetim izi değildir.

E-Ticaret: Dinamik Fatura Oluşturma

E-ticaret platformlarının hızlı ve güvenilir fatura üretimine ihtiyacı vardır:

// NuGet: Install-Package IronPdf
using System;
using System.Globalization;
using System.Linq;
using System.Net;
using IronPdf;
using IronPdf.Rendering;

var order = new Order("INV-1001", new DateTime(2026, 9, 1), new[]
{
    new OrderItem("Widget <Deluxe> & Co. edition", 2, 19.99m),
    new OrderItem("Gift wrap", 1, 4.50m)
});

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        MarginTop = 10,    // millimetres
        MarginBottom = 10,
        PaperSize = PdfPaperSize.A4
    }
};

var usd = CultureInfo.GetCultureInfo("en-US");

// HTML-encode text values, so characters such as & and < print as text instead of changing the markup
string rows = string.Concat(order.Items.Select(item => $@"
        <tr>
            <td>{WebUtility.HtmlEncode(item.Name)}</td>
            <td>{item.Quantity}</td>
            <td>{item.Price.ToString("C", usd)}</td>
            <td>{item.Total.ToString("C", usd)}</td>
        </tr>"));

var html = $@"
<html>
<head>
    <style>
        body {{ font-family: Arial, sans-serif; }}
        .invoice-header {{ background: #f0f0f0; padding: 20px; }}
        table {{ width: 100%; border-collapse: collapse; }}
        th, td {{ padding: 10px; border-bottom: 1px solid #ddd; text-align: left; }}
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #{WebUtility.HtmlEncode(order.InvoiceNumber)}</h1>
        <p>Date: {order.Date:yyyy-MM-dd}</p>
    </div>
    <table>
        <tr><th>Item</th><th>Quantity</th><th>Price</th><th>Total</th></tr>
        {rows}
        <tr><td colspan='3'><strong>Total</strong></td><td><strong>{order.Total.ToString("C", usd)}</strong></td></tr>
    </table>
    <p>Thank you for your business!</p>
</body>
</html>";

using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
pdf.SaveAs($"invoice-{order.InvoiceNumber}.pdf");

record OrderItem(string Name, int Quantity, decimal Price)
{
    public decimal Total => Price * Quantity;
}

record Order(string InvoiceNumber, DateTime Date, OrderItem[] Items)
{
    public decimal Total => Items.Sum(item => item.Total);
}

Geçiş Stratejileri: Kütüphaneler Arasında Geçiş

Kütüphaneler arasında geçiş yapmayı düşünüyorsanız, işte bir geçiş yaklaşımı:

EvoPdf'den IronPDF'ye Geçiş

// NuGet: Install-Package EvoPdf.HtmlToPdf  (EvoPdf Classic, Windows)
// NuGet: Install-Package IronPdf
using System.IO;
using EvoPdf;
using IronPdf;
using IronPdf.Rendering;

string url = "https://example.com/";

// EvoPdf pattern
HtmlToPdfConverter evoPdfConverter = new HtmlToPdfConverter();
evoPdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
File.WriteAllBytes("evopdf.pdf", evoPdfConverter.ConvertUrl(url));

// Equivalent IronPDF pattern
var ironPdfRenderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        PaperSize = PdfPaperSize.A4
    }
};
using (var pdf = ironPdfRenderer.RenderUrlAsPdf(url))
{
    File.WriteAllBytes("ironpdf.pdf", pdf.BinaryData);
}

// During a gradual migration, both libraries can sit behind one interface
IPdfConverter converter = new IronPdfAdapter();
File.WriteAllBytes("adapter.pdf", converter.ConvertUrlToPdf(url));

public interface IPdfConverter
{
    byte[] ConvertHtmlToPdf(string html);
    byte[] ConvertUrlToPdf(string url);
}

public class IronPdfAdapter : IPdfConverter
{
    private readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] ConvertHtmlToPdf(string html)
    {
        using var pdf = _renderer.RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }

    public byte[] ConvertUrlToPdf(string url)
    {
        using var pdf = _renderer.RenderUrlAsPdf(url);
        return pdf.BinaryData;
    }
}

public class EvoPdfAdapter : IPdfConverter
{
    private readonly HtmlToPdfConverter _converter = new HtmlToPdfConverter();
    
    public byte[] ConvertHtmlToPdf(string html)
    {
        return _converter.ConvertHtml(html, "");
    }
    
    public byte[] ConvertUrlToPdf(string url)
    {
        return _converter.ConvertUrl(url);
    }
}

Sonuç: Projeniz İçin Doğru Seçimi Yapmak

Hem IronPDF hem de EvoPdf, .NET PDF kütüphanesi ekosisteminde önemli roller üstlenir, ancak farklı kullanım senaryolarını ve geliştirme felsefelerini hedeflerler.

Şu durumlarda IronPDF'yi seçin:

  • Modern web standart desteği (CSS3, JavaScript framework'leri)
  • Oluşturmanın ötesinde PDF işleme (birleştirme, formlar, redaksiyon ve imzalama gibi)
  • Şifreleme, imza ve redaksiyon gibi güvenlik özellikleri
  • Platformlar arası dağıtım esnekliği
  • Kapsamlı dokümantasyon ve doğrudan mühendislik desteği
  • Diğer belge işleme araçlarıyla entegrasyon

Şu durumlarda EvoPdf'yi seçin:

  • Daha düşük lisans maliyetiyle HTML'den PDF'ye dönüştürme
  • Uygulama başına lisanslama (Deployment) veya şirket genelinde lisanslama (Company), Company lisansında kendi uygulamalarınızda yeniden dağıtım dahil
  • Geliştirici sayısı sayılmayan lisanslar
  • Chromium tabanlı bir motor (EvoPdf Next) ile .NET Framework 2.0 ve sonrasını destekleyen bir Windows motoru (EvoPdf Classic) arasında seçim

Kararınız nihayetinde özel gereksinimlerinize, bütçe kısıtlarınıza ve uzun vadeli ölçeklenebilirlik ihtiyaçlarınıza bağlıdır. Oluşturmanın ötesinde PDF işleme (dahili redaksiyon ve DOCX dönüştürme gibi) gerektiren modern uygulamalar için IronPDF'nin özellik seti ve dokümantasyonu güçlü bir yatırım sunar. EvoPdf ise özellikle şirket genelinde lisanslama ve dahil edilen yeniden dağıtımı değerli bulan ekipler için uygun bir seçenektir.

IronPDF'nin 30 günlük ücretsiz deneme sürümü ile kendi kullanım senaryonuzda yeteneklerini değerlendirmeye başlayabilirsiniz. Deneme sürümü, IronPDF özelliklerine erişim sağlar ve kendi ortamınızda gerçek performansa dayalı bilinçli bir karar vermenize olanak tanır.

Bir PDF kütüphanesinin gerçek maliyetinin lisans fiyatının ötesine geçtiğini unutmayın - geliştirme süresi, bakım yükü ve uygulamanız büyüdükçe ek özelliklere duyulan potansiyel ihtiyacı da hesaba katın. Sadece mevcut ihtiyaçlarınızı karşılayan değil, gelecekteki gereksinimlerinizle de ölçeklenebilecek bir kütüphane seçin.

Lütfen dikkate alın: EvoPdf, ilgili sahibinin ticari markasıdır. Bu site EvoPdf ile bağlantılı, onaylanmış veya sponsorlu değildir. Tüm ürün adları, logoları ve markalar ilgili sahiplerinin mülkiyetindedir. Karşılaştırmalar yalnızca bilgilendirme amaçlıdır ve yazım sırasında kamuya açık bilgileri yansıtmaktadı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 ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

Daha Fazla Oku

İlgili Makaleler