IRONSOFTWAREHOME
PDF ARAÇLARI

Mac'te PDF'ler Nasıl Düzenlenir

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 28 Haziran 2026

Modern .NET uygulamaları geliştirirken, PDF oluşturma ve manipülasyon yeteneklerine ihtiyaç duyuyorsanız, doğru kütüphaneyi seçmek projenizin başarısını önemli ölçüde etkileyebilir. .NET ekosisteminde öne çıkan iki seçenek IronPDF ve PDFSharpCore olup, her biri PDF işleme konusunda farklı yaklaşımlar sunmaktadır. Bu kapsamlı karşılaştırma, belirli gereksinimlerinize, bütçenize ve teknik ihtiyaçlarınıza göre bilinçli bir karar vermenize yardımcı olacaktır.

Hızlı Karşılaştırma Genel Bakış

Teknik detaylara girmeden önce,IronPDF vePDFSharpCorearasındaki başlıca farkları özetleyen kapsamlı bir karşılaştırma tablosu:

Ürün Karşılaştırması Genel Bakış
IronPDF vePDFSharpCoreiçin .NET PDF İşleme Karşılaştırması
KategoriÖzellik/AspectIronPDFPDFSharpCoreAna Avantaj
Çekirdek MimariTasarım FelsefesiChrome tabanlı render, sezgisel API'lerHafif, manuel PDF oluşturmaIronPDF: Daha hızlı geliştirme
API KarmaşıklığıRenderHtmlAsPdf() gibi basit yöntemlerXGraphics ile manuel çizimIronPDF: Daha basit API
Öğrenme Eğrisi1-2 gün tipik3-5 gün tipikIronPDF: Daha hızlı benimseme
Platform DesteğiÇapraz PlatformYerel destek, ek paket yokTam çapraz platform desteğiHer ikisi: Modern dağıtım
.NET Sürümleri.NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+.NET 6+, .NET Standard 2.0IronPDF: Daha geniş uyumluluk
İşletim SistemleriWindows, Linux, macOS, Docker, Azure, AWSWindows, Linux, macOSIronPDF: Bulut optimizasyonu
HTML'den PDF'eRenderleme MotoruTam Chrome V8 motoruYerel HTML desteği yokIronPDF: HTML yeteneği
CSS3/HTML5 DesteğiTam destekÜçüncü taraf kütüphaneler gerektirirIronPDF: Modern web standartları
JavaScript YürütmeTam JavaScript desteğiUygulanamazIronPDF: Dinamik içerik
Temel ÖzelliklerMetin ÇıkarmaDahili ExtractAllText()Sınırlı destekIronPDF: Üstün çıkarım
FiligranlamaHTML/CSS tabanlı, tam stilManuel çizim gereklidirIronPDF: Zengin filigranlar
Dijital İmzalarEntegre, görsel imzalarNot supportedIronPDF: Kurumsal güvenlik
ŞifrelemeAES-256, özel işlemcilerTemel şifreleme desteğiIronPDF: Gelişmiş güvenlik
Başlıklar/altbilgilerHTML tabanlı, dinamik içerikManuel konumlandırmaIronPDF: Dinamik başlıklar
PerformansHTML İşleme Hızı0.8-2s tipik (Chrome motoru)UygulanamazIronPDF: HTML render
Büyük Doküman İşlemeÖlçek için optimize edilmiştirBellek verimliPDFSharpCore: Daha düşük bellek
İş parçacığı desteğiYerel async/await, paralel işlemeİş parçacığı güvenli operasyonlarIronPDF: Daha iyi ölçeklenebilirlik
Geliştirici DeneyimiDokümantasyonKapsamlı eğitimler, API belgeleri, videolarTemel dokümantasyonIronPDF: Daha iyi kaynaklar
Kod Örnekleri100+ çalışmaya hazır örnekTopluluk örnekleriIronPDF: Kapsamlı örnekler
IntelliSense DesteğiTam IntelliSense, XML belgeleriStandart IntelliSenseHer İkisi: IDE entegrasyonu
Licensing & PricingLisans TürüTicari, süresizMIT Lisansı (Ücretsiz)PDFSharpCore: Ücretsiz
Giriş FiyatıLite: $999 (1 geliştirici, 1 proje)ÜcretsizPDFSharpCore: Ücretsiz
Destek24/5 mühendislik desteği dahildirSadece topluluk desteğiIronPDF: Profesyonel destek
En İyi Kullanım AlanıKullanım DurumlarıWeb uygulamaları, raporlar, kurumsalBasit PDF'ler, bütçe projelerBağlama bağlı

Not. PDFSharpCore, temel PDF oluşturma işlemleri için uygun bir açık kaynak kütüphanedir,IronPDF ise HTML render ve kurumsal destek dahil olmak üzere kapsamlı özellikler sunar. Tercih, projenin karmaşıklığı ve bütçe kısıtlamalarına bağlıdır.

IronPDF ve PDFSharpCore'a Giriş

IronPDF Nedir?

IronPDF, geliştiricilerin PDF oluşturma, düzenleme ve yönetme işlemlerini zahmetsiz hale getirmek için tasarlanmış kapsamlı bir ticari .NET kütüphanesidir. Chrome tabanlı render motoru ile HTML, CSS ve JavaScript içeriğini piksel mükemmelinde PDF'lere dönüştürmede mükemmeldir. Kütüphane HTML'den PDF'e dönüştürme, dijital imzalar, filigranlama, PDF şifreleme ve form yönetimi gibi kapsamlı bir özelliğe sahiptir.

IronPDF, yeni ve eski uygulamalar için hem .NET 10, 9, 8, 7, 6, 5, Core 3.1+ hem de Framework 4.6.2+ gibi modern .NET sürümlerini destekler. Bulut optimizasyonlu mimarisi, Azure, AWS ve Docker ortamlarında sorunsuz dağıtım sağlar.

PDFSharpCore Nedir?

PDFSharpCore, orijinal PDFSharp kütüphanesinin .NET Core portu olarak hizmet veren bir açık kaynaklı kütüphanedir. MIT lisansı altında yayınlanan kütüphane, programatik PDF oluşturma ve temel manipülasyonu Windows'a özgü kütüphanelere bağımlı olmadan odaklar. Bu, Linux, macOS ve Windows'ta çalışan çapraz platform projeleri için mükemmel bir seçenek yapar.

PDFSharpCore yerel HTML'den PDF'e dönüştürmeyi sunmazken, çizim API'si aracılığıyla PDF belge oluşturma üzerinde hassas kontrol sağlar. Geliştiriciler, koordinat tabanlı çizim komutları kullanarak metin, görseller ve grafikleri konumlandırarak PDF belgeler oluşturabilir.

Kurulum ve Kurulum

Installing IronPDF

Projenizde IronPDF kullanmaya başlamak için, NuGet Paket Yöneticisi aracılığıyla kolayca yükleyebilirsiniz. Bu adımları takip edin:

  1. Projenizi Visual Studio'da açın.
  2. Araçlar > NuGet Paket Yöneticisi > Çözüm için NuGet Paketlerini Yönet yolunu takip edin. NuGet Yöneticisinde IronPDF arayın.
  3. Projenizi seçin, ardından IronPDF'i projenize eklemek için Yükle ye tıklayın.

IronPDF vePDFSharpCoreArasında Karşılaştırma: Şekil 1 - IronPDF'yi NuGet Paket Yöneticisi ile Yükleme Visual Studio'nun NuGet Paket Yöneticisi ara yüzü kullanarak IronPDF kurulumu

Alternatif olarak, IronPDF'yi aşağıdaki komut ile Paket Yöneticisi Konsolu'nu kullanarak yükleyebilirsiniz:

PM > Install-Package IronPdf

PDFSharpCore Yükleme

PDFSharpCore'yi NuGet kullanarak yüklemek için bu talimatları izleyin:

  1. Visual Studio projenizin açık olduğundan emin olun.
  2. Araçlar > NuGet Paket Yöneticisi > Çözüm için NuGet Paketlerini Yönet kısmına gidin.
  3. NuGet Paket Yöneticisinde PDFSharpCore için arayın.
  4. Projenizi seçin ve PDFSharpCore'yi eklemek için Yükle yı tıklayın.

IronPDF vePDFSharpCoreArasında Karşılaştırma: Şekil 2 - PDFSharpCore'u NuGet ile Yükleme PDFSharpCore'yi NuGet Paket Yöneticisi aracılığıyla yükleme

Paket Yöneticisi Konsolu'nu tercih eden geliştiriciler içinPDFSharpCorebu komut ile yüklenebilir:

PM > Install-Package PdfSharpCore

PDF Dosyaları Oluşturma: IronPDF vs PDFSharpCore

IronPDF: Modern HTML Tabanlı Yaklaşım

IronPDF, geliştiricilerin zaten bildikleri web teknolojilerinden yararlanarak PDF oluşturmayı devrim niteliğinde değiştiriyor. Chrome tabanlı render motoru, HTML, CSS ve JavaScript'in modern bir tarayıcıda olduğu gibi tam olarak render edilmesini sağlar.

Gelişmiş Özelliklerle HTML Metni PDF'e Dönüştürme

IronPDF'nin HTML'den PDF'e dönüştürme yetenekleri, basit metin render'ın ötesine geçer. İşte gücünü gösteren geliştirilmiş bir örnek:

using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main(string[] args)
    {
        // Apply your license key (required for production)
        License.LicenseKey = "Your-License-Key";

        // Create renderer with optimized settings
        var renderer = new ChromePdfRenderer()
        {
            RenderingOptions = new ChromePdfRenderOptions()
            {
                // Set margins for professional appearance
                MarginTop = 25,
                MarginBottom = 25,
                MarginLeft = 20,
                MarginRight = 20,
                
                // Enable JavaScript execution for dynamic content
                EnableJavaScript = true,
                
                // Wait for AJAX/animations to complete
                RenderDelay = 500,
                
                // Set paper orientation and size
                PaperOrientation = PdfPaperOrientation.Portrait,
                PaperSize = PdfPaperSize.A4,
                
                // Enable printing of background colors and images
                PrintHtmlBackgrounds = true
            }
        };

        // HTML with Bootstrap styling and charts
        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css' rel='stylesheet'>
                <script src='https://cdn.jsdelivr.net/npm/chart.js'></script>
                <style>
                    body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
                    .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; }
                    .chart-container { width: 100%; height: 300px; margin: 20px 0; }
                </style>
            </head>
            <body>
                <div class='header text-center'>
                    <h1>2024 Sales Performance Report</h1>
                    <p class='lead'>Comprehensive Analysis & Insights</p>
                </div>
                
                <div class='container mt-4'>
                    <div class='row'>
                        <div class='col-md-6'>
                            <div class='card'>
                                <div class='card-body'>
                                    <h5 class='card-title'>Q1 Performance Metrics</h5>
                                    <table class='table table-striped'>
                                        <thead>
                                            <tr>
                                                <th>Month</th>
                                                <th>Revenue</th>
                                                <th>Growth</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr>
                                                <td>January</td>
                                                <td>$50,000</td>
                                                <td><span class='badge bg-success'>+12%</span></td>
                                            </tr>
                                            <tr>
                                                <td>February</td>
                                                <td>$55,000</td>
                                                <td><span class='badge bg-success'>+10%</span></td>
                                            </tr>
                                            <tr>
                                                <td>March</td>
                                                <td>$60,000</td>
                                                <td><span class='badge bg-success'>+9%</span></td>
                                            </tr>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>
                        <div class='col-md-6'>
                            <div class='card'>
                                <div class='card-body'>
                                    <h5 class='card-title'>Revenue Trend</h5>
                                    <canvas id='revenueChart'></canvas>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <div class='alert alert-info mt-4'>
                        <strong>Key Insight:</strong> Q1 showed consistent growth across all months, 
                        with total revenue reaching $165,000, representing a 31% increase YoY.
                    </div>
                </div>
                
                <script>
                    // Create an interactive chart
                    const ctx = document.getElementById('revenueChart').getContext('2d');
                    new Chart(ctx, {
                        type: 'line',
                        data: {
                            labels: ['January', 'February', 'March'],
                            datasets: [{
                                label: 'Revenue',
                                data: [50000, 55000, 60000],
                                borderColor: '#667eea',
                                backgroundColor: 'rgba(102, 126, 234, 0.1)',
                                tension: 0.4
                            }]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: false
                        }
                    });
                </script>
            </body>
            </html>";

        // Render the HTML to PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Add metadata for better document management
        pdf.MetaData.Author = "Sales Department";
        pdf.MetaData.Title = "Q1 2024 Sales Report";
        pdf.MetaData.Subject = "Quarterly Performance Analysis";
        pdf.MetaData.Keywords = "sales, performance, Q1, 2024";
        pdf.MetaData.CreationDate = DateTime.Now;

        // Save the PDF
        pdf.SaveAs("sales-report-q1-2024.pdf");
        Console.WriteLine("Professional sales report generated successfully!");
    }
}

Bu örnek, IronPDF'nin çeşitli gelişmiş özelliklerini göstermektedir:

  • Bootstrap Entegrasyonu: Profesyonel stil için popüler CSS çerçevelerinden yararlanır
  • JavaScript Grafikler: PDF'de dinamik Chart.js görselleştirmeleri sunar
  • Duyarlı Tasarım: Duyarlı düzenleri zekice işler
  • Metadata Yönetimi: Doküman yönetim sistemleri için aranabilir metadata ekler
  • Render Gecikmeleri: JavaScript içeriğinin tam olarak yüklenmesini sağlar

ChromePdfRenderer sınıfı, işleme süreci üzerinde geniş kontrol sağlar. Belli başlı seçenekler şunlardır:

  • EnableJavaScript: İşlemeden önce JavaScript kodunu çalıştırır
  • RenderDelay: Asenkron içeriğin yüklenmesini bekler
  • PrintHtmlBackgrounds: Arka plan renklerini ve görüntüleri korur
  • PaperOrientation ve PaperSize: Sayfa düzenini kontrol eder
  • Profesyonel doküman görünümü için margin ayarları

HTML Dosyalarını ve URL'lerini Dönüştürme

IronPDF, mevcut HTML dosyalarını ve canlı web sayfalarını dönüştürmede de mükemmeldir:

using IronPdf;

class Program
{
    static async Task Main(string[] args)
    {
        License.LicenseKey = "Your-License-Key";
        
        var renderer = new ChromePdfRenderer();
        
        // Convert a local HTML file with external resources
        var filePdf = renderer.RenderHtmlFileAsPdf(@"C:\Reports\template.html");
        filePdf.SaveAs("from-file.pdf");
        
        // Convert a URL with authentication
        renderer.LoginCredentials = new ChromeHttpLoginCredentials()
        {
            Username = "user@example.com",
            Password = "secure-password"
        };
        
        // Render a password-protected page
        var urlPdf = await renderer.RenderUrlAsPdfAsync("https://secure.example.com/reports");
        urlPdf.SaveAs("secure-report.pdf");
    }
}

PDFSharpCore: Manuel Belge Oluşturma

PDFSharpCore, geliştiricilerin çizim komutlarını kullanarak PDF belgelerini manuel olarak oluşturmak zorunda kaldığı temelde farklı bir yaklaşım gerektirir. Bu, hassas kontrol sağlarken, karmaşık düzenler için önemli ölçüde daha fazla kod gerektirir.

using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using System;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        var document = new PdfDocument();
        document.Info.Title = "Sales Report Q1 2024";
        document.Info.Author = "Sales Department";
        
        // Add a page
        var page = document.AddPage();
        page.Size = PdfSharpCore.PageSize.A4;
        
        // Create graphics object for drawing
        var gfx = XGraphics.FromPdfPage(page);
        
        // Define fonts
        var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
        var headingFont = new XFont("Arial", 14, XFontStyle.Bold);
        var normalFont = new XFont("Arial", 11, XFontStyle.Regular);
        
        // Draw title with gradient-like effect (manual implementation)
        var titleBrush = new XLinearGradientBrush(
            new XPoint(0, 0), 
            new XPoint(page.Width, 0),
            XColors.DarkBlue, 
            XColors.Purple
        );
        gfx.DrawRectangle(titleBrush, 0, 0, page.Width, 80);
        gfx.DrawString("2024 Sales Performance Report", 
            titleFont, XBrushes.White,
            new XRect(0, 20, page.Width, 40),
            XStringFormats.TopCenter);
        
        // Draw table manually
        double yPosition = 120;
        double margin = 50;
        double columnWidth = (page.Width - 2 * margin) / 3;
        
        // Table header
        gfx.DrawRectangle(XBrushes.LightGray, margin, yPosition, page.Width - 2 * margin, 25);
        gfx.DrawString("Month", headingFont, XBrushes.Black, 
            new XRect(margin, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        gfx.DrawString("Revenue", headingFont, XBrushes.Black, 
            new XRect(margin + columnWidth, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        gfx.DrawString("Growth", headingFont, XBrushes.Black, 
            new XRect(margin + 2 * columnWidth, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        
        // Table data
        string[,] data = {
            { "January", "$50,000", "+12%" },
            { "February", "$55,000", "+10%" },
            { "March", "$60,000", "+9%" }
        };
        
        yPosition += 25;
        for (int i = 0; i < 3; i++)
        {
            // Alternate row colors
            if (i % 2 == 0)
            {
                gfx.DrawRectangle(XBrushes.WhiteSmoke, margin, yPosition, page.Width - 2 * margin, 20);
            }
            
            for (int j = 0; j < 3; j++)
            {
                gfx.DrawString(data[i, j], normalFont, XBrushes.Black,
                    new XRect(margin + j * columnWidth, yPosition, columnWidth, 20),
                    XStringFormats.Center);
            }
            yPosition += 20;
        }
        
        // Draw a simple line chart (very basic implementation)
        yPosition += 40;
        gfx.DrawString("Revenue Trend", headingFont, XBrushes.Black,
            new XRect(margin, yPosition, page.Width - 2 * margin, 25),
            XStringFormats.TopLeft);
        
        // Chart area
        yPosition += 30;
        double chartHeight = 150;
        double chartWidth = page.Width - 2 * margin;
        
        // Draw axes
        gfx.DrawLine(XPens.Black, margin, yPosition + chartHeight, margin + chartWidth, yPosition + chartHeight);
        gfx.DrawLine(XPens.Black, margin, yPosition, margin, yPosition + chartHeight);
        
        // Plot points (simplified)
        double[] revenues = { 50000, 55000, 60000 };
        double maxRevenue = 65000;
        double xStep = chartWidth / 3;
        
        for (int i = 0; i < revenues.Length; i++)
        {
            double x = margin + (i + 0.5) * xStep;
            double y = yPosition + chartHeight - (revenues[i] / maxRevenue * chartHeight);
            
            // Draw point
            gfx.DrawEllipse(XBrushes.Blue, x - 3, y - 3, 6, 6);
            
            // Draw connecting lines
            if (i > 0)
            {
                double prevX = margin + (i - 0.5) * xStep;
                double prevY = yPosition + chartHeight - (revenues[i - 1] / maxRevenue * chartHeight);
                gfx.DrawLine(new XPen(XColors.Blue, 2), prevX, prevY, x, y);
            }
            
            // Labels
            gfx.DrawString($"${revenues[i]:N0}", normalFont, XBrushes.Black,
                new XRect(x - 30, y - 20, 60, 15),
                XStringFormats.TopCenter);
        }
        
        // Save the document
        document.Save("pdfsharp-sales-report.pdf");
        Console.WriteLine("PDF created with PDFSharpCore");
    }
}

Gördüğünüz gibi,PDFSharpCoreile orta derecede karmaşık bir belge oluşturmak bile gerektirir:

  • Her öğenin manuel konumlandırılması
  • Düzenler için karmaşık hesaplamalar
  • HTML veya CSS için yerleşik destek yok
  • Grafikler ve grafiklerin manuel uygulanması
  • Aynı sonuç için önemli ölçüde daha fazla kod

HTML'den PDF'e PDFSharpCore ile

PDFSharpCore HTML'den PDF'e dönüştürmeyi yerel olarak desteklemediği için, geliştiriciler üçüncü taraf kütüphaneler kullanmalıdır. Popüler bir seçim,PDFSharpCoreile HtmlRenderer'ın birleştirilmesidir:

using PdfSharpCore.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

var document = new PdfDocument();
string htmlContent = File.ReadAllText("template.html");

// Note: HtmlRenderer has limited CSS support
PdfGenerator.AddPdfPages(document, htmlContent, PdfSharpCore.PageSize.A4);
document.Save("from-html.pdf");

Ancak, bu yaklaşım önemli sınırlamalara sahiptir:

  • Sınırlı CSS3 desteği (flexbox yok, CSS Grid yok, modern çerçeve desteği yok)
  • JavaScript çalıştırması yok
  • Modern web özelliklerini zayıf ele alma
  • Tarayıcılara kıyasla tutarsız render

Modern CSS Çerçeve Desteği: Bootstrap ve Ötesi

Web içeriğinden PDF oluşturma gerektiren uygulama geliştirirken, Bootstrap ve modern CSS çerçeve desteği kritik önem taşır. Çoğu web uygulaması bu çerçeveleri tutarlı bir tasarım için kullanır ve bu arayüzleri PDF'ye dönüştürme yeteneği geliştirme süresini önemli ölçüde azaltır.

IronPDF: Tam Bootstrap ve CSS Framework Desteği

  • Bootstrap 5: Tam esnek kutu düzen motoru, CSS Grid, yardımcı sınıflar ve tüm bileşen sistemleri
  • Bootstrap 4: Tam kart bileşenleri, navigasyon, esnek yardımcılar ve duyarlı sınıflar
  • Tailwind CSS: Tüm yardımcı sınıflarla doğru render
  • Foundation: Tam bir grid sistemi ve bileşen kütüphanesi
  • Modern CSS3: Flexbox, CSS Grid, özel özellikler, animasyonlar, geçişler ve dönüşümler

Gerçek dünya kanıtı:IronPDFBootstrap ana sayfasını ve tüm resmi şablonları piksel mükemmel doğrulukla render eder.

Kod Örneği: Proje İlerleme Panosu

using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapProgress = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .project-card {
            transition: all 0.3s ease;
            border-left: 4px solid transparent;
        }
        .project-card.active { border-left-color: #0d6efd; }
        .progress-label { font-size: 0.75rem; font-weight: 600; }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Project Portfolio Status</h1>
                <p class='text-muted mb-0'>Q1 2025 Development Pipeline</p>
            </div>
            <div>
                <span class='badge bg-success fs-6'>8 Active Projects</span>
            </div>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-primary mb-2'>72%</div>
                        <h6 class='text-muted text-uppercase mb-0'>Overall Progress</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-success mb-2'>5</div>
                        <h6 class='text-muted text-uppercase mb-0'>On Track</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-warning mb-2'>2</div>
                        <h6 class='text-muted text-uppercase mb-0'>At Risk</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-danger mb-2'>1</div>
                        <h6 class='text-muted text-uppercase mb-0'>Delayed</h6>
                    </div>
                </div>
            </div>
        </div>

        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Active Projects</h5>
            </div>
            <div class='card-body p-0'>
                <div class='list-group list-group-flush'>
                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>E-Commerce Platform Redesign</h6>
                                <small class='text-muted'>Lead: Sarah Chen | Due: Apr 15, 2025</small>
                            </div>
                            <span class='badge bg-success'>On Track</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-primary'>85%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-primary' role='progressbar' style='width: 85%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Frontend: 90%</span>
                            <span class='badge bg-light text-dark'>Backend: 80%</span>
                            <span class='badge bg-light text-dark'>Testing: 85%</span>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Mobile App Integration</h6>
                                <small class='text-muted'>Lead: Marcus Johnson | Due: Mar 30, 2025</small>
                            </div>
                            <span class='badge bg-success'>On Track</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-success'>92%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-success' role='progressbar' style='width: 92%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>iOS: 95%</span>
                            <span class='badge bg-light text-dark'>Android: 90%</span>
                            <span class='badge bg-light text-dark'>API: 100%</span>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Customer Analytics Dashboard</h6>
                                <small class='text-muted'>Lead: Emily Rodriguez | Due: Apr 22, 2025</small>
                            </div>
                            <span class='badge bg-warning text-dark'>At Risk</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-warning'>58%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-warning' role='progressbar' style='width: 58%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Data Pipeline: 65%</span>
                            <span class='badge bg-light text-dark'>UI: 50%</span>
                            <span class='badge bg-light text-dark'>Reports: 45%</span>
                        </div>
                        <div class='alert alert-warning mt-2 mb-0 py-2'>
                            <small><strong>Issue:</strong> Resource constraints affecting timeline. Review scheduled for next week.</small>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Security Infrastructure Upgrade</h6>
                                <small class='text-muted'>Lead: David Kim | Due: Mar 25, 2025</small>
                            </div>
                            <span class='badge bg-danger'>Delayed</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-danger'>42%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-danger' role='progressbar' style='width: 42%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Authentication: 60%</span>
                            <span class='badge bg-light text-dark'>Şifreleme: 40%</span>
                            <span class='badge bg-light text-dark'>Audit Logs: 25%</span>
                        </div>
                        <div class='alert alert-danger mt-2 mb-0 py-2'>
                            <small><strong>Critical:</strong> 7 days behind schedule. Additional resources allocated. Daily standup required.</small>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-6'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-white'>
                        <h5 class='mb-0'>Sprint Velocity</h5>
                    </div>
                    <div class='card-body'>
                        <div class='mb-3'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Current Sprint</span>
                                <strong>42 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-success' style='width: 84%'>84% Complete</div>
                            </div>
                        </div>
                        <div class='mb-3'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Previous Sprint</span>
                                <strong>38 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-info' style='width: 100%'>Completed</div>
                            </div>
                        </div>
                        <div class='mb-0'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Average Velocity</span>
                                <strong>40 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-primary' style='width: 100%'>Baseline</div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-white'>
                        <h5 class='mb-0'>Team Capacity</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>Frontend Team</h6>
                                <small class='text-muted'>6 developers</small>
                            </div>
                            <span class='badge bg-success'>92% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>Backend Team</h6>
                                <small class='text-muted'>5 developers</small>
                            </div>
                            <span class='badge bg-success'>88% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>QA Team</h6>
                                <small class='text-muted'>3 testers</small>
                            </div>
                            <span class='badge bg-warning text-dark'>105% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-0'>
                            <div>
                                <h6 class='mb-0'>DevOps Team</h6>
                                <small class='text-muted'>2 engineers</small>
                            </div>
                            <span class='badge bg-danger'>110% Utilized</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapProgress);
pdf.SaveAs("project-progress.pdf");
C#

Çıktı: Bootstrap 5'in flexbox tabanlı düzenleri, ilerleme çubukları bileşenleri, rozet yardımcıları, duyarlı kart sistemleri ve uyarı bileşenleri ile profesyonel proje yönetim PDF'si — tümü mükemmel hizalama, boşluk ve renk doğruluğuyla render edilir.

PDFSharpCore: Yerel HTML Desteği Yok

PDFSharpCore'nın yerel HTML render motoru yoktur. Kütüphane, yalnızca düşük seviyede PDF manipülasyonu ve çizim işlemleri için tasarlanmıştır:

  • Bootstrap desteği yok: HTML/CSS çerçeveleri hiç işleyemez
  • Flexbox veya CSS Grid yok: Hiçbir CSS render yeteneği yoktur
  • Yalnızca manuel oluşturma: Koordinat tabanlı API'leri kullanarak metin, şekil ve resim çizilmesi gerektirir
  • Dış araçlar gerek: Üçüncü taraf HTML renderları veya dönüştürme hizmetleri kullanılmalıdır

HtmlRenderer entegrasyonu (üçüncü taraf), ciddi sınırlamalarla yalnızca temel HTML desteği sağlar—flexbox yok, CSS Grid yok, modern çerçeve desteği yok.

Geliştirme etkisi: Ekipler ya HTML tabanlı iş akışlarından tamamen vazgeçmeli ya da birden çok aracı (PDFSharpCore + harici HTML renderı) entegre etmelidir, bu da karmaşıklık, bakım yükü ve kütüphane sürümleri arasında potansiyel uyumluluk sorunları ekler.

Ayrıntılı Bootstrap çerçeve uyumluluğu ve CSS3 render yetenekleri için Bootstrap & Flexbox CSS Kılavuzuna bakın.

Gelişmiş Özellikler Karşılaştırması

Metin Çıkarma

En yaygın PDF işlemlerinden biri, dizinleme, analiz veya dönüştürme için metin çıkarmaktır. Her iki kütüphanenin bu görevi nasıl ele aldığını işte şöyle görebilirsiniz:

IronPDF Metin Çıkartma

IronPDF, basit bir API ile sağlam metin çıkarma yetenekleri sunar.

using IronPdf;

// Extract all text from a PDF
var pdf = PdfDocument.FromFile("report.pdf");
string allText = pdf.ExtractAllText();

// Extract text from specific pages
for (int i = 0; i < pdf.PageCount; i++)
{
    string pageText = pdf.ExtractTextFromPage(i);
    Console.WriteLine($"Page {i + 1}: {pageText.Substring(0, Math.Min(100, pageText.Length))}...");
}

// Extract text from a specific region
var pageIndex = 0;
var region = new Rectangle(50, 50, 200, 100); // x, y, width, height
string regionText = pdf.ExtractTextFromPage(pageIndex, region);

PDFSharpCore Metin Çıkartma

PDFSharpCore'nin sınırlı yerel metin çıkarma özellikleri vardır. karşılaştırma makalelerinde belirtildiği gibi, bu sıklıkla parçalanmış veya eksik sonuçlar üretir.

//PDFSharpCoredoesn't have reliable text extraction
// This is a significant limitation for many use cases

Filigranlama

PDF'lere filigran eklemek markalama ve belge güvenliği için gereklidir.

IronPDF Filigranlama

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// HTML-based watermark with full CSS support
string watermarkHtml = @"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
        text-align: center;
        font-weight: bold;
    '>
        CONFIDENTIAL
    </div>";

pdf.ApplyWatermark(watermarkHtml, 50, VerticalAlignment.Middle, HorizontalAlignment.Center);

// Image watermark
pdf.ApplyWatermark("logo.png", 30, VerticalAlignment.Bottom, HorizontalAlignment.Right);

pdf.SaveAs("watermarked.pdf");

PDFSharpCore Filigranlama

using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using PdfSharpCore.Pdf.IO;

var document = PdfReader.Open("document.pdf", PdfDocumentOpenMode.Modify);

foreach (var page in document.Pages)
{
    var gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append);
    
    // Create watermark font
    var font = new XFont("Arial", 48);
    
    // Calculate rotation
    gfx.TranslateTransform(page.Width / 2, page.Height / 2);
    gfx.RotateTransform(-45);
    
    // Draw watermark
    var size = gfx.MeasureString("CONFIDENTIAL", font);
    gfx.DrawString("CONFIDENTIAL", font, 
        new XSolidBrush(XColor.FromArgb(128, 255, 0, 0)),
        new XRect(-size.Width / 2, -size.Height / 2, size.Width, size.Height),
        XStringFormats.Center);
}

document.Save("watermarked-pdfsharp.pdf");

Dijital İmzalar

Dijital imzalar, belgelerin orijinalliğini ve bütünlüğünü sağlar.

IronPDF Dijital İmzalar

using IronPdf;
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("contract.pdf");

// Create a signature with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "legal@company.com",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};

// Add visual signature
var signatureImage = new PdfSignature("certificate.pfx", "password")
{
    SignatureImage = new PdfSignatureImage("signature.png", 0, 0, 200, 100)
};

// Apply signature to the last page
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");

PDFSharpCore Dijital İmzalar

PDFSharpCore, yerel dijital imzaları desteklemez, bu iş zekası uygulamaları için belge güvenliği gerektiren önemli bir sınırlamadır.

Form İşleme

PDF formları ile çalışmak, etkileşimli belgeler için önemlidir.

IronPDF Form İşleme

using IronPdf;

// Create a form from HTML
var html = @"
    <form>
        <label>Name: <input type='text' name='fullName' required></label><br>
        <label>Email: <input type='email' name='email' required></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe' value='yes'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option value='basic'>Basic</option>
                <option value='pro'>Professional</option>
                <option value='enterprise'>Enterprise</option>
            </select>
        </label>
    </form>";

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

// Fill existing form
var filledPdf = PdfDocument.FromFile("application-form.pdf");
filledPdf.Form.FindFormField("fullName").Value = "John Doe";
filledPdf.Form.FindFormField("email").Value = "john@example.com";
filledPdf.Form.FindFormField("subscribe").Value = "yes";

filledPdf.SaveAs("completed-application.pdf");

Performans Kıyaslamaları

İşte tipik kullanım modellerine dayalı performans karşılaştırmaları:

HTML'den PDF'e Render

Test VakasıIronPDFPDFSharpCore (HtmlRenderer ile)
Basit HTML (1 sayfa)Hızlı (Chrome motor yükü)Basit çıktı için daha hızlı
CSS3 ile karmaşık HTMLTam işleme, doğru çıktıSıklıkla başarısız veya yanlış render
JavaScript grafiklerTam JavaScript yürütmeDesteklenmiyor
Büyük belge partisiOptimize edilmiş asenkron/paralel işlemeDaha düşük bellek kullanımı
Bellek kullanımıDaha yüksek (Chrome motoru)Daha düşük (hafif kütüphane)

Anahtar Performans İçgörüleri

  1. IronPDF şu konularda mükemmeldir:
  • Tam tarayıcı uyumluluğu ile karmaşık HTML render
  • Toplu işlemler için paralel işleme
  • Farklı içerik türlerinde tutarlı performans
  • Daha iyi ölçeklenebilirlik için Asenkron işlemler
  1. PDFSharpCore şu konularda daha iyi performans gösterir:
  • Basit programatik PDF oluşturma
  • Daha düşük bellek ayak izi
  • Temel belge değişiklikleri

Gerçek Dünya Performans Örneği

//IronPDF- Batch processing with parallel execution
using IronPdf;
using System.Threading.Tasks;

class BatchProcessor
{
    public static async Task ProcessInvoicesAsync(List<string> htmlInvoices)
    {
        var renderer = new ChromePdfRenderer();
        
        // Process multiple PDFs in parallel
        var tasks = htmlInvoices.Select(async (html, index) =>
        {
            var pdf = await renderer.RenderHtmlAsPdfAsync(html);
            await pdf.SaveAsAsync($"invoice-{index}.pdf");
        });
        
        await Task.WhenAll(tasks);
    }
}
C#

Gerçek Dünyada Kullanım Durumları

IronPDF Seçmek Ne Zaman Uygundur

IronPDF idealdir:

  1. Web Uygulama Entegrasyonu
  • Dinamik web içeriğini PDF'ye dönüştürme
  • Web panolarından raporlar oluşturma
  • HTML şablonlarından fatura oluşturma
  1. Kurumsal Belge Yönetimi
  • Dijital imzalarla belge iş akışları uygulama
  • Hassas veri için güvenli, şifrelenmiş PDF'ler oluşturma
  • Büyük hacimli belgelerin toplu işlenmesi
  1. SaaS Uygulamaları
  • Çok kiracılı PDF oluşturma
  • Azure/AWS üzerinde bulut yerlisi dağıtımlar
  • Yüksek performanslı asenkron işleme
  1. Karmaşık Raporlama
  • Grafik ve tablolarla finansal raporlar
  • Zengin medya ile pazarlama materyalleri
  • Kod vurgulaması ile teknik dokümantasyon

PDFSharpCore'u Ne Zaman Seçmelisiniz

PDFSharpCore şunlar için uygundur:

  1. Bütçe Duyarlı Projeler
  • Lisans bütçesi olmayan açık kaynak projeler
  • Basit PDF oluşturma ihtiyaçları
  • Akademik veya kişisel projeler
  1. Temel PDF İşlemleri
  • Basit metin tabanlı PDF'ler oluşturma
  • Temel belge birleştirme işlemleri
  • Basit grafik veya şekiller ekleme
  1. Hafif Uygulamalar
  • Bellek kısıtlı gömülü sistemler
  • Basit komut satırı araçları
  • Minimal bağımlılıklı mikro hizmetler

Lisanslama ve Fiyatlandırma

IronPDF Lisanslama

IronPDF, esnek lisanslama seçenekleri sunar (Nisan 2026 itibarıyla fiyatlandırma):

  • Lite Lisans: $999 (1 geliştirici, 1 konum, 1 proje)
  • Plus Lisans: $1,499 (3 geliştirici, 3 konum, 3 proje)
  • Professional Lisans: $2,399 (10 geliştirici, 10 konum, 10 proje)
  • Ücretsiz Deneme: 30 günlük tam işlevselli deneme

Ek avantajlar:

  • Süresiz lisanslama (tek seferlik satın alma)
  • Telif ücretsiz yeniden dağıtım mevcut
  • 24/5 mühendislik desteği dahil
  • Bir yıl boyunca ücretsiz güncellemeler
  • Ek tasarruflar için Iron Suite paketi mevcut

PDFSharpCore Lisanslama

PDFSharpCore MIT lisansı altında tamamen ücretsizdir:

  • Lisans maliyeti yok
  • Ticari kullanımda kısıtlama yok
  • Sadece topluluk desteği
  • Güncellemeler veya hata düzeltmeleri garantisi yok

Geliştirici Deneyimi

Dokümantasyon ve Kaynaklar

IronPDF şunları sağlar:

PDFSharpCore şunları sunar:

  • Temel GitHub dokümantasyonu
  • Topluluk örnekleri
  • Sınırlı resmi eğitimler

Destek Karşılaştırması

Destek TürüIronPDFPDFSharpCore
Profesyonel Destek24/5 dahilNone
Yanıt Süresi24-48 saatTopluluğa bağlı
Doğrudan Mühendislik ErişimiEvetHayır
Hata Düzeltilmesi GarantisiEvetHayır

Sonuç

Hem IronPDF hem de PDFSharpCore, .NET PDF ekosisteminde önemli roller oynar, ancak farklı ihtiyaçları ve kullanım durumlarını hedef alırlar.

IronPDF'i seçin, eğer:

  • Tam CSS3 ve JavaScript desteği ile sağlam HTML'den PDF'ye dönüştürmeye ihtiyacınız var
  • Projeniz dijital imzalar, şifreleme veya form işleme gibi ileri düzey özellikler gerektiriyor
  • Kurumsal veya ticari uygulamalar geliştiriyorsunuz
  • Kapsamlı dokümantasyon ve profesyonel desteğe değer veriyorsunuz
  • Performans ve güvenilirlik kritik öneme sahip
  • buluta hazır dağıtım seçeneklerine ihtiyacınız var

PDFSharpCore'u seçin:

  • Bütçe kısıtlamalı veya açık kaynak bir proje üzerinde çalışıyorsunuz
  • PDF ihtiyaçlarınız basit ve HTML işleme gerektirmiyor
  • PDF yapımı üzerinde elle kontrol tercihiniz var
  • Bellek ayak izi kritik bir endişe
  • Topluluk desteğiyle rahatınız

IronPDF'ün modern PDF oluşturma yaklaşımı, kapsamlı özellik seti ve mükemmel desteği ile profesyonel uygulamaların çoğu için üstün bir seçimdir. Bir lisans yatırımını gerektirse de, geliştirme sırasında kazanılan zaman ve sağlanan güvenilirlik, ticari projelerde genellikle maliyeti haklı çıkarır.

Farkı yaşamaya hazır mısınız? IronPDF'ün 30 günlük ücretsiz denemesine başlayın ve PDF oluşturma iş akışınızı nasıl dönüştürebileceğini görün. Kapsamlı dokümantasyonu, duyarlı desteği ve özellik zengini API'si ile IronPDF, geliştiricilere minimum çabayla profesyonel PDF'ler oluşturma gücü verir.

İlk Adım:
arrow pointer
Lütfen dikkate alın: PDFSharpCore, ilgili sahibinin tescilli markasıdır. Bu site,PDFSharpCoreile bağlantılı, onaylanmış veya sponsorlu değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.
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 ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

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

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez