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

IronPDF vs PDFTron (Apryse): 2025 İçin Tam C# PDF Kütüphanesi Karşılaştırması

.NET uygulamalarını PDF oluşturma ve manipülasyon gerektiren geliştirirken, doğru C# PDF kütüphanesini seçmek projenizin başarısı üzerinde önemli etkiler yaratabilir. Bu kapsamlı karşılaştırma, geliştiricilerin, özellikler, performans, fiyatlandırma ve gerçek dünya kullanım örneklerine dayalı bilinçli bir karar vermelerine yardımcı olmak için .NET PDF kütüphaneleri arasında etkileyici iki kütüphane olan .NET ve GemBox.Pdf'yi inceler.

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

Ürün Karşılaştırması Genel Bakış
.NET ve GemBox.Pdf'un .NET Geliştirme için Özellik Karşılaştırması
Kategori Özellik/Aspect IronPDF GemBox.Pdf Ana Avantaj
Çekirdek Mimari Tasarım Felsefesi HTML-öncelikli, Chrome renderleme PDF-yerel manipülasyon Bağlama bağlı
API Karmaşıklığı RenderHtmlAsPdf() gibi basit yöntemler Düşük seviye PDF objeleri IronPDF: Daha hızlı geliştirme
Öğrenme Eğrisi 1-2 gün tipik 3-5 gün tipik IronPDF: Daha hızlı benimseme
Platform Desteği Çapraz Platform Windows, Linux, macOS, Docker Windows, Linux, macOS, Android, iOS GemBox: Mobil destek
.NET Sürümleri .NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ .NET 6, Standard 2.0, Framework 3.5+ .NET: En son .NET desteği
Bulut Platformları Azure/AWS optimize edilmiş Standart bulut desteği IronPDF: Bulut hazır
HTML'den PDF'e Renderleme Motoru Tam Chrome V8 motoru Chromium tabanlı motor Her ikisi de: Chromium render
CSS3/HTML5 Desteği Tam destek HTML5/CSS3 desteği Her ikisi de: Modern web standartları
JavaScript Yürütme Tam JavaScript desteği JavaScript yürütme desteklenir Her ikisi de: Dinamik içerik
İşleme Hızı ~125ms tipik Chromium tabanlı render IronPDF: Belgelenmiş render süresi
Geliştirici Deneyimi Kod Örnekleri 100+ çalışmaya hazır örnek 100+ örnek mevcut Her ikisi: Kapsamlı kaynaklar
Dokümantasyon Eğitimler, nasıl yapılır, videolar API dokümantasyonu odaklı IronPDF: Birden fazla öğrenme yolu
İçerik Manipülasyonu PDF'leri Birleştir/Böl Yerleşik yöntemler Yerleşik yöntemler Her ikisi: Standart özellikler
Metin Çıkarma Unicode desteği, OCR entegrasyonu Unicode desteği, yerleşik OCR GemBox: Yerleşik OCR
Form Desteği HTML formlarından PDF formlarına Formlar oluşturma, doldurma, düzleştirme Bağlama bağlı
Performans Ölçütleri Bellek Kullanımı 10MB altında tipik Düşük bellek ihtiyacı Her ikisi: Etkin
İş parçacığı desteği Yerel async/await optimizasyonu İş parçacığı güvenli operasyonlar IronPDF: Daha iyi asenkron destek
Security & Encryption Şifreleme Seviyeleri AES-256, özel işlemciler AES-256 standart Her ikisi de: Endüstri standardı
Dijital İmzalar Entegre, görsel imzalar Dijital imza desteği Her ikisi: İmza desteği
Licensing & Pricing Giriş Seviyesi Lite: $999 (1 geliştirici, 1 proje) Tek Geliştirici: `$890` (1 geliştirici, sınırsız proje) IronPDF: Daha düşük giriş maliyeti
Yeniden Dağıtım +$1,999 telif ücretsiz Dahil, sınırsız dağıtımlar GemBox: Daha iyi dağıtım koşulları
Süit Seçeneği Iron Suite: $2,998 (9 ürün) GemBox Paketi: `$2,200` (6 ürün, 1 geliştirici) IronPDF: Daha iyi suite değeri
Destek Destek Dahil Evet, 24/5 mühendislik desteği Evet, 1 yıl profesyonel destek Her ikisi: İyi destek
Yanıt Süresi 24-48 saat tipik 1 iş günü içinde Her ikisi: Hızlı yanıt
En İyi Kullanım Alanı Kullanım Durumları HTML'den PDF'ye, web uygulamaları, raporlar PDF manipülasyonu, formlar, OCR Bağlama bağlı
Not. GemBox.Pdf, Chromium tabanlı HTML'den PDF'e dönüşüm içerir. IronPDF, HTML'den PDF'e dönüşüm için geniş yapılandırma seçenekleri olan derin bir entegre Chrome render motoru sağlar.

Lütfen dikkate alınGemBox.Pdf, yerleşik Chromium tabanlı HTML'den PDF'e dönüşüm içerir. GemBox.Document, belge işleme görevleri için ayrı bir üründür.

IronPDF Kütüphanesi Nedir?

.NET, geliştiriciler için HTML'den PDF'ye dönüşümü sorunsuz hale getirmeye özel olarak tasarlanmış kapsamlı bir .NET PDF kütüphanesi olarak öne çıkıyor. Chromium render motoru ile oluşturulmuştur ve C#, F# ve VB.NET uygulamalarında PDF üretimine yaklaşımı yeniden şekillendirir.

Kütüphanenin felsefesi mevcut web geliştirme becerilerini kullanmaya dayanır. Karmaşık PDF API'lerini öğrenmek yerine, geliştiriciler CSS ve JavaScript ile tanıdık HTML kullanarak gelişmiş PDF belgeleri oluşturabilir. Bu yaklaşım, geliştirme süresini önemli ölçüde azaltırken modern web standartlarıyla uyumlu piksel mükemmelliğinde render sağlar.

IronPDF'nin Temel Özellikleri

IronPDF, geliştiricilerin karşılaşabileceği hemen hemen her PDF görevi için kapsamlı bir özellik seti sunar:

HTML'den PDF'ye Dönüşüm Mükemmelliği

  • Chrome V8 Motoru: Google Chrome ile aynı motoru kullanarak HTML renderi yapar, %98+ tarayıcı uyumluluğu sağlar
  • Tam CSS3/HTML5 Desteği: Flexbox, grid ve animasyonlar dahil olmak üzere modern web standartlarına tam destek
  • JavaScript Çalıştırma: Dinamik içeriği mükemmel bir şekilde yakalayarak renderlemeden önce JavaScript'i işler
  • Duyarlı Tasarım: Özelleştirilebilir görünüm ayarlarıyla duyarlı düzenleri ele alır
  • Web Font Desteği: Google Fonts, özel fontlar ve ikon fontları doğru bir şekilde renderlar

Gelişmiş PDF Manipülasyonu

Güvenlik ve Uyumluluk

  • Şifreleme: Özel izin ayarları ile AES-256 şifreleme
  • PDF/A Uyumluluğu: Uzun süreli saklama için arşiv kalitesinde PDF'ler oluşturun
  • Kapatma: Hassas içeriği kalıcı olarak kaldırın
  • Şifre Koruması: Kullanıcı ve sahibi şifre desteği ile detaylı izinler

IronPDF Kod Örneği: Gelişmiş Özelliklerle HTML'den PDF'ye

using IronPdf;
using IronPdf.Rendering;

// Configure the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        // Set paper orientation and size
        PaperOrientation = PdfPaperOrientation.Portrait,
        PaperSize = PdfPaperSize.A4,

        // Configure margins (in millimeters)
        MarginTop = 25,
        MarginBottom = 25,
        MarginLeft = 20,
        MarginRight = 20,

        // Enable JavaScript execution
        EnableJavaScript = true,
        RenderDelay = 1000, // Wait 1 second for JS to complete

        // Print background colors and images
        PrintHtmlBackgrounds = true,

        // Create PDF forms from HTML form elements
        CreatePdfFormsFromHtml = true,

        // Custom header and footer
        HtmlHeader = new HtmlHeaderFooter
        {
            Height = 20,
            HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
            DrawDividerLine = true
        },

        HtmlFooter = new HtmlHeaderFooter
        {
            Height = 15,
            HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
        }
    }
};

// Convert complex HTML with CSS and JavaScript
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
        .invoice-header { 
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px;
            margin-bottom: 30px;
        }
        .data-table { 
            width: 100%; 
            border-collapse: collapse; 
            margin-top: 20px;
        }
        .data-table th { 
            background-color: #f8f9fa; 
            padding: 12px; 
            text-align: left;
            border-bottom: 2px solid #dee2e6;
        }
        .data-table td { 
            padding: 10px; 
            border-bottom: 1px solid #dee2e6;
        }
        .total-section {
            margin-top: 30px;
            text-align: right;
            font-size: 18px;
            font-weight: bold;
        }
        @media print {
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #INV-2025-001</h1>
        <p>Date: <span id='current-date'></span></p>
    </div>

    <table class='data-table'>
        <thead>
            <tr>
                <th>Item Description</th>
                <th>Quantity</th>
                <th>Unit Price</th>
                <th>Total</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Professional PDF Library License</td>
                <td>1</td>
                <td>$999.00</td>
                <td>$999.00</td>
            </tr>
            <tr>
                <td>Priority Support (1 Year)</td>
                <td>1</td>
                <td>$299.00</td>
                <td>$299.00</td>
            </tr>
        </tbody>
    </table>

    <div class='total-section'>
        <p>Subtotal: $1,048.00</p>
        <p>Tax (8%): $83.84</p>
        <p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
    </div>

    <script>
        // Dynamic date insertion
        document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
            year: 'numeric',
            month: 'long',
            day: 'numeric'
        });
    </script>
</body>
</html>";

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

// Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;

// Add metadata
pdf.MetaData.Author = "Invoice System";
pdf.MetaData.Title = "Invoice INV-2025-001";
pdf.MetaData.Subject = "Customer Invoice";
pdf.MetaData.Keywords = "invoice, payment, 2025";
pdf.MetaData.CreationDate = DateTime.Now;

// Save the PDF
pdf.SaveAs("invoice-2025-001.pdf");

// Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3);
using IronPdf;
using IronPdf.Rendering;

// Configure the Chrome renderer with advanced options
var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        // Set paper orientation and size
        PaperOrientation = PdfPaperOrientation.Portrait,
        PaperSize = PdfPaperSize.A4,

        // Configure margins (in millimeters)
        MarginTop = 25,
        MarginBottom = 25,
        MarginLeft = 20,
        MarginRight = 20,

        // Enable JavaScript execution
        EnableJavaScript = true,
        RenderDelay = 1000, // Wait 1 second for JS to complete

        // Print background colors and images
        PrintHtmlBackgrounds = true,

        // Create PDF forms from HTML form elements
        CreatePdfFormsFromHtml = true,

        // Custom header and footer
        HtmlHeader = new HtmlHeaderFooter
        {
            Height = 20,
            HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
            DrawDividerLine = true
        },

        HtmlFooter = new HtmlHeaderFooter
        {
            Height = 15,
            HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
        }
    }
};

// Convert complex HTML with CSS and JavaScript
string htmlContent = @"
<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
        .invoice-header { 
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px;
            margin-bottom: 30px;
        }
        .data-table { 
            width: 100%; 
            border-collapse: collapse; 
            margin-top: 20px;
        }
        .data-table th { 
            background-color: #f8f9fa; 
            padding: 12px; 
            text-align: left;
            border-bottom: 2px solid #dee2e6;
        }
        .data-table td { 
            padding: 10px; 
            border-bottom: 1px solid #dee2e6;
        }
        .total-section {
            margin-top: 30px;
            text-align: right;
            font-size: 18px;
            font-weight: bold;
        }
        @media print {
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #INV-2025-001</h1>
        <p>Date: <span id='current-date'></span></p>
    </div>

    <table class='data-table'>
        <thead>
            <tr>
                <th>Item Description</th>
                <th>Quantity</th>
                <th>Unit Price</th>
                <th>Total</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Professional PDF Library License</td>
                <td>1</td>
                <td>$999.00</td>
                <td>$999.00</td>
            </tr>
            <tr>
                <td>Priority Support (1 Year)</td>
                <td>1</td>
                <td>$299.00</td>
                <td>$299.00</td>
            </tr>
        </tbody>
    </table>

    <div class='total-section'>
        <p>Subtotal: $1,048.00</p>
        <p>Tax (8%): $83.84</p>
        <p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
    </div>

    <script>
        // Dynamic date insertion
        document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
            year: 'numeric',
            month: 'long',
            day: 'numeric'
        });
    </script>
</body>
</html>";

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

// Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserFormData = true;

// Add metadata
pdf.MetaData.Author = "Invoice System";
pdf.MetaData.Title = "Invoice INV-2025-001";
pdf.MetaData.Subject = "Customer Invoice";
pdf.MetaData.Keywords = "invoice, payment, 2025";
pdf.MetaData.CreationDate = DateTime.Now;

// Save the PDF
pdf.SaveAs("invoice-2025-001.pdf");

// Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3);
Imports IronPdf
Imports IronPdf.Rendering

' Configure the Chrome renderer with advanced options
Dim renderer As New ChromePdfRenderer With {
    .RenderingOptions = New ChromePdfRenderOptions With {
        ' Set paper orientation and size
        .PaperOrientation = PdfPaperOrientation.Portrait,
        .PaperSize = PdfPaperSize.A4,

        ' Configure margins (in millimeters)
        .MarginTop = 25,
        .MarginBottom = 25,
        .MarginLeft = 20,
        .MarginRight = 20,

        ' Enable JavaScript execution
        .EnableJavaScript = True,
        .RenderDelay = 1000, ' Wait 1 second for JS to complete

        ' Print background colors and images
        .PrintHtmlBackgrounds = True,

        ' Create PDF forms from HTML form elements
        .CreatePdfFormsFromHtml = True,

        ' Custom header and footer
        .HtmlHeader = New HtmlHeaderFooter With {
            .Height = 20,
            .HtmlFragment = "<div style='text-align: center; font-size: 12px;'>Company Report - {page} of {total-pages}</div>",
            .DrawDividerLine = True
        },

        .HtmlFooter = New HtmlHeaderFooter With {
            .Height = 15,
            .HtmlFragment = "<div style='text-align: center; font-size: 10px;'>© 2025 Company Name. Confidential.</div>"
        }
    }
}

' Convert complex HTML with CSS and JavaScript
Dim htmlContent As String = "
<!DOCTYPE html>
<html>
<head>
    <style>
        body { font-family: 'Segoe UI', Arial, sans-serif; line-height: 1.6; }
        .invoice-header { 
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 30px;
            border-radius: 10px;
            margin-bottom: 30px;
        }
        .data-table { 
            width: 100%; 
            border-collapse: collapse; 
            margin-top: 20px;
        }
        .data-table th { 
            background-color: #f8f9fa; 
            padding: 12px; 
            text-align: left;
            border-bottom: 2px solid #dee2e6;
        }
        .data-table td { 
            padding: 10px; 
            border-bottom: 1px solid #dee2e6;
        }
        .total-section {
            margin-top: 30px;
            text-align: right;
            font-size: 18px;
            font-weight: bold;
        }
        @media print {
            .no-print { display: none; }
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #INV-2025-001</h1>
        <p>Date: <span id='current-date'></span></p>
    </div>

    <table class='data-table'>
        <thead>
            <tr>
                <th>Item Description</th>
                <th>Quantity</th>
                <th>Unit Price</th>
                <th>Total</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Professional PDF Library License</td>
                <td>1</td>
                <td>$999.00</td>
                <td>$999.00</td>
            </tr>
            <tr>
                <td>Priority Support (1 Year)</td>
                <td>1</td>
                <td>$299.00</td>
                <td>$299.00</td>
            </tr>
        </tbody>
    </table>

    <div class='total-section'>
        <p>Subtotal: $1,048.00</p>
        <p>Tax (8%): $83.84</p>
        <p style='color: #667eea; font-size: 24px;'>Total: $1,131.84</p>
    </div>

    <script>
        // Dynamic date insertion
        document.getElementById('current-date').textContent = new Date().toLocaleDateString('en-US', {
            year: 'numeric',
            month: 'long',
            day: 'numeric'
        });
    </script>
</body>
</html>"

' Render the HTML to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)

' Apply additional security settings
pdf.SecuritySettings.OwnerPassword = "admin123"
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserFormData = True

' Add metadata
pdf.MetaData.Author = "Invoice System"
pdf.MetaData.Title = "Invoice INV-2025-001"
pdf.MetaData.Subject = "Customer Invoice"
pdf.MetaData.Keywords = "invoice, payment, 2025"
pdf.MetaData.CreationDate = DateTime.Now

' Save the PDF
pdf.SaveAs("invoice-2025-001.pdf")

' Optional: Save as PDF/A for archival
pdf.SaveAsPdfA("invoice-2025-001-archive.pdf", PdfAVersions.PdfA3)
$vbLabelText   $csharpLabel

Bu örnek, IronPDF'nin gradyanlar, tablolar, dinamik JavaScript içeriği ve güvenlik ayarları ve meta veriler gibi gelişmiş PDF özellikleri ile karmaşık HTML düzenlerini nasıl ele aldığını göstermektedir. Kütüphane her şeyi sorunsuz bir şekilde işler ve HTML tasarımıyla tam olarak eşleşen profesyonel bir PDF üretir.

GemBox.Pdf Kütüphanesi Nedir?

GemBox.Pdf, .NET'te PDF manipülasyonu için farklı bir yaklaşıma sahiptir. HTML'den PDF'ye dönüşüme odaklanmak yerine, GemBox.Pdf düşük seviye PDF işlemleri ve doğrudan PDF manipülasyonu üzerine uzmanlaşmıştır. Bu, geliştiricilerin PDF yapısı ve içeriği üzerinde hassas kontrol gerektiği senaryolar için özellikle uygundur.

Kütüphane, mevcut PDF belgeleriyle çalışmakta mükemmeldir ve PDF dosyalarını okuyup, düzenleyip, genel düzeyde manipüle etmek için sağlam özellikler sunar. GemBox.Pdf, Adobe Acrobat bağımlılıkları olmadan çalışır ve dağıtımı çeşitli ortamlarda kolaylaştırır.

GemBox.Pdf'nin Temel Özellikleri

GemBox.Pdf kapsamlı PDF manipülasyon yetenekleri sunar:

PDF Belge İşlemleri

  • PDF Okuma ve Yazma: PDF yapısına ve içeriğine doğrudan erişim
  • Birleştirme ve Bölme: Birden fazla PDF'yi birleştirin veya belirli sayfaları çıkarın
  • Sayfa Klonlama: Farklı PDF belgeleri arasında sayfa ithal edin
  • Sayfa Yönetimi: Sayfaları programlı olarak ekleyin, kaldırın veya yeniden sıralayın

İçerik Çıkarma ve Manipülasyon

  • Metin Çıkarma: Konum bilgileriyle Unicode metni çıkarın
  • Görüntü Çıkarma: PDF belgelerinden gömülü görüntüleri geri alın
  • OCR Desteği: Taratılmış belgeler için yerleşik optik karakter tanıma
  • İçerik Kapatma: Hassas bilgileri kalıcı olarak kaldırın

Formlar ve Etkileşimlilik

  • Etkileşimli Formlar: PDF formlarını oluşturun, doldurun, düzleştirin ve dışa aktarın
  • Form Alanı Yönetimi: Tüm form alanı türlerine programlı erişim
  • Anotasyonlar: Bağlantılar ve diğer PDF anotasyonları ekleyin

Grafikler ve Görsel Öğeler

  • Çizim İşlemleri: Metin, resim ve vektör grafikler ekleyin
  • Şekil ve Yollar: Karmaşık vektör çizimleri oluşturun
  • Filigranlar: Metin ve görüntü filigranları uygulayın
  • İçerik Grupları: İçeriği mantıksal gruplara organize edin

GemBox.Pdf Kod Örneği: PDF Manipülasyonu ve Formlar

using GemBox.Pdf;
using GemBox.Pdf.Content;
using GemBox.Pdf.Forms;
using GemBox.Pdf.Security;

// Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY");

// Create a new PDF document from scratch
using (var document = new PdfDocument())
{
    // Add a page with custom size
    var page = document.Pages.Add();

    // Create formatted text with multiple styles
    using (var formattedText = new PdfFormattedText())
    {
        formattedText.FontSize = 24;
        formattedText.FontFamily = new PdfFontFamily("Arial");
        formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6);
        formattedText.AppendLine("GemBox.Pdf Document Example");

        formattedText.FontSize = 12;
        formattedText.Color = PdfColor.FromRgb(0, 0, 0);
        formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.");

        // Draw text to the page
        page.Content.DrawText(formattedText, new PdfPoint(50, 700));
    }

    // Add a form to the document
    var form = document.Form;

    // Create text field
    var textField = form.Fields.AddText(page, 50, 600, 200, 30);
    textField.Name = "CustomerName";
    textField.Value = "Enter your name";
    textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95);

    // Create checkbox
    var checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20);
    checkBox.Name = "Agreement";
    checkBox.Checked = false;

    // Add descriptive text next to checkbox
    using (var checkboxLabel = new PdfFormattedText())
    {
        checkboxLabel.Append("I agree to the terms and conditions");
        page.Content.DrawText(checkboxLabel, new PdfPoint(80, 555));
    }

    // Create submit button
    var submitButton = form.Fields.AddButton(page, 50, 500, 100, 30);
    submitButton.Name = "Submit";
    submitButton.Actions.Activate = PdfActionType.Named;

    // Add button appearance
    using (var buttonText = new PdfFormattedText())
    {
        buttonText.Append("Submit Form");
        buttonText.FontSize = 14;
        buttonText.Color = PdfColor.FromRgb(1, 1, 1);

        // Create button appearance stream
        var appearance = submitButton.Appearance.Normal;
        appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8);
        appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4);
        appearance.Stroke.Width = 1;

        // Draw button background
        appearance.DrawRectangle(new PdfPoint(0, 0), new PdfSize(100, 30), true, true);

        // Draw button text
        appearance.DrawText(buttonText, new PdfPoint(20, 10));
    }

    // Add a table using low-level graphics
    var tableTop = 400;
    var tableLeft = 50;
    var cellWidth = 150;
    var cellHeight = 30;

    // Draw table headers
    page.Content.DrawRectangle(new PdfPoint(tableLeft, tableTop), 
        new PdfSize(cellWidth * 3, cellHeight), true, true);

    using (var headerText = new PdfFormattedText())
    {
        headerText.FontSize = 12;
        headerText.Color = PdfColor.FromRgb(1, 1, 1);
        headerText.Append("Product");
        page.Content.DrawText(headerText, new PdfPoint(tableLeft + 10, tableTop + 10));

        headerText.Clear();
        headerText.Append("Quantity");
        page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth + 10, tableTop + 10));

        headerText.Clear();
        headerText.Append("Price");
        page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10));
    }

    // Draw table data rows
    var rowData = new[]
    {
        new { Product = "PDF Library", Quantity = "1", Price = "$890" },
        new { Product = "Support Plan", Quantity = "1", Price = "$299" },
        new { Product = "Training", Quantity = "2", Price = "$500" }
    };

    var currentY = tableTop - cellHeight;
    foreach (var row in rowData)
    {
        // Draw cell borders
        page.Content.DrawRectangle(new PdfPoint(tableLeft, currentY), 
            new PdfSize(cellWidth, cellHeight), false, true);
        page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth, currentY), 
            new PdfSize(cellWidth, cellHeight), false, true);
        page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth * 2, currentY), 
            new PdfSize(cellWidth, cellHeight), false, true);

        // Draw cell content
        using (var cellText = new PdfFormattedText())
        {
            cellText.FontSize = 11;
            cellText.Append(row.Product);
            page.Content.DrawText(cellText, new PdfPoint(tableLeft + 10, currentY + 10));

            cellText.Clear();
            cellText.Append(row.Quantity);
            page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth + 10, currentY + 10));

            cellText.Clear();
            cellText.Append(row.Price);
            page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10));
        }

        currentY -= cellHeight;
    }

    // Apply security settings
    var securitySettings = document.SecuritySettings;
    securitySettings.DocumentOpenPassword = "user123";
    securitySettings.PermissionsPassword = "owner123";
    securitySettings.Permissions = PdfPermissions.AllowPrint | PdfPermissions.AllowFormFill;

    // Save the document
    document.Save("gembox-example.pdf");
}

// Example: Manipulating existing PDF
using (var existingDoc = PdfDocument.Load("existing-document.pdf"))
{
    // Extract text from first page
    var page = existingDoc.Pages[0];
    var text = page.Content.GetText();
    Console.WriteLine($"Extracted text: {text}");

    // Add watermark to all pages
    foreach (var p in existingDoc.Pages)
    {
        using (var watermark = new PdfFormattedText())
        {
            watermark.Append("CONFIDENTIAL");
            watermark.FontSize = 50;
            watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5);
            watermark.Opacity = 0.3;

            // Calculate center position
            var pageWidth = p.MediaBox.Width;
            var pageHeight = p.MediaBox.Height;
            var textWidth = watermark.Width;
            var textHeight = watermark.Height;

            var x = (pageWidth - textWidth) / 2;
            var y = (pageHeight - textHeight) / 2;

            // Draw watermark diagonally
            p.Content.SaveGraphicsState();
            p.Content.SetTransform(1, 0, 0, 1, x, y);
            p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0);
            p.Content.DrawText(watermark, new PdfPoint(0, 0));
            p.Content.RestoreGraphicsState();
        }
    }

    existingDoc.Save("watermarked-document.pdf");
}
using GemBox.Pdf;
using GemBox.Pdf.Content;
using GemBox.Pdf.Forms;
using GemBox.Pdf.Security;

// Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY");

// Create a new PDF document from scratch
using (var document = new PdfDocument())
{
    // Add a page with custom size
    var page = document.Pages.Add();

    // Create formatted text with multiple styles
    using (var formattedText = new PdfFormattedText())
    {
        formattedText.FontSize = 24;
        formattedText.FontFamily = new PdfFontFamily("Arial");
        formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6);
        formattedText.AppendLine("GemBox.Pdf Document Example");

        formattedText.FontSize = 12;
        formattedText.Color = PdfColor.FromRgb(0, 0, 0);
        formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.");

        // Draw text to the page
        page.Content.DrawText(formattedText, new PdfPoint(50, 700));
    }

    // Add a form to the document
    var form = document.Form;

    // Create text field
    var textField = form.Fields.AddText(page, 50, 600, 200, 30);
    textField.Name = "CustomerName";
    textField.Value = "Enter your name";
    textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95);

    // Create checkbox
    var checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20);
    checkBox.Name = "Agreement";
    checkBox.Checked = false;

    // Add descriptive text next to checkbox
    using (var checkboxLabel = new PdfFormattedText())
    {
        checkboxLabel.Append("I agree to the terms and conditions");
        page.Content.DrawText(checkboxLabel, new PdfPoint(80, 555));
    }

    // Create submit button
    var submitButton = form.Fields.AddButton(page, 50, 500, 100, 30);
    submitButton.Name = "Submit";
    submitButton.Actions.Activate = PdfActionType.Named;

    // Add button appearance
    using (var buttonText = new PdfFormattedText())
    {
        buttonText.Append("Submit Form");
        buttonText.FontSize = 14;
        buttonText.Color = PdfColor.FromRgb(1, 1, 1);

        // Create button appearance stream
        var appearance = submitButton.Appearance.Normal;
        appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8);
        appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4);
        appearance.Stroke.Width = 1;

        // Draw button background
        appearance.DrawRectangle(new PdfPoint(0, 0), new PdfSize(100, 30), true, true);

        // Draw button text
        appearance.DrawText(buttonText, new PdfPoint(20, 10));
    }

    // Add a table using low-level graphics
    var tableTop = 400;
    var tableLeft = 50;
    var cellWidth = 150;
    var cellHeight = 30;

    // Draw table headers
    page.Content.DrawRectangle(new PdfPoint(tableLeft, tableTop), 
        new PdfSize(cellWidth * 3, cellHeight), true, true);

    using (var headerText = new PdfFormattedText())
    {
        headerText.FontSize = 12;
        headerText.Color = PdfColor.FromRgb(1, 1, 1);
        headerText.Append("Product");
        page.Content.DrawText(headerText, new PdfPoint(tableLeft + 10, tableTop + 10));

        headerText.Clear();
        headerText.Append("Quantity");
        page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth + 10, tableTop + 10));

        headerText.Clear();
        headerText.Append("Price");
        page.Content.DrawText(headerText, new PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10));
    }

    // Draw table data rows
    var rowData = new[]
    {
        new { Product = "PDF Library", Quantity = "1", Price = "$890" },
        new { Product = "Support Plan", Quantity = "1", Price = "$299" },
        new { Product = "Training", Quantity = "2", Price = "$500" }
    };

    var currentY = tableTop - cellHeight;
    foreach (var row in rowData)
    {
        // Draw cell borders
        page.Content.DrawRectangle(new PdfPoint(tableLeft, currentY), 
            new PdfSize(cellWidth, cellHeight), false, true);
        page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth, currentY), 
            new PdfSize(cellWidth, cellHeight), false, true);
        page.Content.DrawRectangle(new PdfPoint(tableLeft + cellWidth * 2, currentY), 
            new PdfSize(cellWidth, cellHeight), false, true);

        // Draw cell content
        using (var cellText = new PdfFormattedText())
        {
            cellText.FontSize = 11;
            cellText.Append(row.Product);
            page.Content.DrawText(cellText, new PdfPoint(tableLeft + 10, currentY + 10));

            cellText.Clear();
            cellText.Append(row.Quantity);
            page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth + 10, currentY + 10));

            cellText.Clear();
            cellText.Append(row.Price);
            page.Content.DrawText(cellText, new PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10));
        }

        currentY -= cellHeight;
    }

    // Apply security settings
    var securitySettings = document.SecuritySettings;
    securitySettings.DocumentOpenPassword = "user123";
    securitySettings.PermissionsPassword = "owner123";
    securitySettings.Permissions = PdfPermissions.AllowPrint | PdfPermissions.AllowFormFill;

    // Save the document
    document.Save("gembox-example.pdf");
}

// Example: Manipulating existing PDF
using (var existingDoc = PdfDocument.Load("existing-document.pdf"))
{
    // Extract text from first page
    var page = existingDoc.Pages[0];
    var text = page.Content.GetText();
    Console.WriteLine($"Extracted text: {text}");

    // Add watermark to all pages
    foreach (var p in existingDoc.Pages)
    {
        using (var watermark = new PdfFormattedText())
        {
            watermark.Append("CONFIDENTIAL");
            watermark.FontSize = 50;
            watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5);
            watermark.Opacity = 0.3;

            // Calculate center position
            var pageWidth = p.MediaBox.Width;
            var pageHeight = p.MediaBox.Height;
            var textWidth = watermark.Width;
            var textHeight = watermark.Height;

            var x = (pageWidth - textWidth) / 2;
            var y = (pageHeight - textHeight) / 2;

            // Draw watermark diagonally
            p.Content.SaveGraphicsState();
            p.Content.SetTransform(1, 0, 0, 1, x, y);
            p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0);
            p.Content.DrawText(watermark, new PdfPoint(0, 0));
            p.Content.RestoreGraphicsState();
        }
    }

    existingDoc.Save("watermarked-document.pdf");
}
Imports GemBox.Pdf
Imports GemBox.Pdf.Content
Imports GemBox.Pdf.Forms
Imports GemBox.Pdf.Security

' Set license (use FREE-LIMITED-KEY for evaluation)
ComponentInfo.SetLicense("FREE-LIMITED-KEY")

' Create a new PDF document from scratch
Using document = New PdfDocument()
	' Add a page with custom size
	Dim page = document.Pages.Add()

	' Create formatted text with multiple styles
	Using formattedText = New PdfFormattedText()
		formattedText.FontSize = 24
		formattedText.FontFamily = New PdfFontFamily("Arial")
		formattedText.Color = PdfColor.FromRgb(0.2, 0.2, 0.6)
		formattedText.AppendLine("GemBox.Pdf Document Example")

		formattedText.FontSize = 12
		formattedText.Color = PdfColor.FromRgb(0, 0, 0)
		formattedText.AppendLine("This document demonstrates PDF creation and manipulation features.")

		' Draw text to the page
		page.Content.DrawText(formattedText, New PdfPoint(50, 700))
	End Using

	' Add a form to the document
	Dim form = document.Form

	' Create text field
	Dim textField = form.Fields.AddText(page, 50, 600, 200, 30)
	textField.Name = "CustomerName"
	textField.Value = "Enter your name"
	textField.Format.Fill.Color = PdfColor.FromRgb(0.95, 0.95, 0.95)

	' Create checkbox
	Dim checkBox = form.Fields.AddCheck(page, 50, 550, 20, 20)
	checkBox.Name = "Agreement"
	checkBox.Checked = False

	' Add descriptive text next to checkbox
	Using checkboxLabel = New PdfFormattedText()
		checkboxLabel.Append("I agree to the terms and conditions")
		page.Content.DrawText(checkboxLabel, New PdfPoint(80, 555))
	End Using

	' Create submit button
	Dim submitButton = form.Fields.AddButton(page, 50, 500, 100, 30)
	submitButton.Name = "Submit"
	submitButton.Actions.Activate = PdfActionType.Named

	' Add button appearance
	Using buttonText = New PdfFormattedText()
		buttonText.Append("Submit Form")
		buttonText.FontSize = 14
		buttonText.Color = PdfColor.FromRgb(1, 1, 1)

		' Create button appearance stream
		Dim appearance = submitButton.Appearance.Normal
		appearance.Fill.Color = PdfColor.FromRgb(0.2, 0.4, 0.8)
		appearance.Stroke.Color = PdfColor.FromRgb(0.1, 0.2, 0.4)
		appearance.Stroke.Width = 1

		' Draw button background
		appearance.DrawRectangle(New PdfPoint(0, 0), New PdfSize(100, 30), True, True)

		' Draw button text
		appearance.DrawText(buttonText, New PdfPoint(20, 10))
	End Using

	' Add a table using low-level graphics
	Dim tableTop = 400
	Dim tableLeft = 50
	Dim cellWidth = 150
	Dim cellHeight = 30

	' Draw table headers
	page.Content.DrawRectangle(New PdfPoint(tableLeft, tableTop), New PdfSize(cellWidth * 3, cellHeight), True, True)

	Using headerText = New PdfFormattedText()
		headerText.FontSize = 12
		headerText.Color = PdfColor.FromRgb(1, 1, 1)
		headerText.Append("Product")
		page.Content.DrawText(headerText, New PdfPoint(tableLeft + 10, tableTop + 10))

		headerText.Clear()
		headerText.Append("Quantity")
		page.Content.DrawText(headerText, New PdfPoint(tableLeft + cellWidth + 10, tableTop + 10))

		headerText.Clear()
		headerText.Append("Price")
		page.Content.DrawText(headerText, New PdfPoint(tableLeft + cellWidth * 2 + 10, tableTop + 10))
	End Using

	' Draw table data rows
	Dim rowData = {
		New With {
			Key .Product = "PDF Library",
			Key .Quantity = "1",
			Key .Price = "$890"
		},
		New With {
			Key .Product = "Support Plan",
			Key .Quantity = "1",
			Key .Price = "$299"
		},
		New With {
			Key .Product = "Training",
			Key .Quantity = "2",
			Key .Price = "$500"
		}
	}

	Dim currentY = tableTop - cellHeight
	For Each row In rowData
		' Draw cell borders
		page.Content.DrawRectangle(New PdfPoint(tableLeft, currentY), New PdfSize(cellWidth, cellHeight), False, True)
		page.Content.DrawRectangle(New PdfPoint(tableLeft + cellWidth, currentY), New PdfSize(cellWidth, cellHeight), False, True)
		page.Content.DrawRectangle(New PdfPoint(tableLeft + cellWidth * 2, currentY), New PdfSize(cellWidth, cellHeight), False, True)

		' Draw cell content
		Using cellText = New PdfFormattedText()
			cellText.FontSize = 11
			cellText.Append(row.Product)
			page.Content.DrawText(cellText, New PdfPoint(tableLeft + 10, currentY + 10))

			cellText.Clear()
			cellText.Append(row.Quantity)
			page.Content.DrawText(cellText, New PdfPoint(tableLeft + cellWidth + 10, currentY + 10))

			cellText.Clear()
			cellText.Append(row.Price)
			page.Content.DrawText(cellText, New PdfPoint(tableLeft + cellWidth * 2 + 10, currentY + 10))
		End Using

		currentY -= cellHeight
	Next row

	' Apply security settings
	Dim securitySettings = document.SecuritySettings
	securitySettings.DocumentOpenPassword = "user123"
	securitySettings.PermissionsPassword = "owner123"
	securitySettings.Permissions = PdfPermissions.AllowPrint Or PdfPermissions.AllowFormFill

	' Save the document
	document.Save("gembox-example.pdf")
End Using

' Example: Manipulating existing PDF
Using existingDoc = PdfDocument.Load("existing-document.pdf")
	' Extract text from first page
	Dim page = existingDoc.Pages(0)
	Dim text = page.Content.GetText()
	Console.WriteLine($"Extracted text: {text}")

	' Add watermark to all pages
	For Each p In existingDoc.Pages
		Using watermark = New PdfFormattedText()
			watermark.Append("CONFIDENTIAL")
			watermark.FontSize = 50
			watermark.Color = PdfColor.FromRgb(0.5, 0.5, 0.5)
			watermark.Opacity = 0.3

			' Calculate center position
			Dim pageWidth = p.MediaBox.Width
			Dim pageHeight = p.MediaBox.Height
			Dim textWidth = watermark.Width
			Dim textHeight = watermark.Height

			Dim x = (pageWidth - textWidth) \ 2
			Dim y = (pageHeight - textHeight) \ 2

			' Draw watermark diagonally
			p.Content.SaveGraphicsState()
			p.Content.SetTransform(1, 0, 0, 1, x, y)
			p.Content.SetTransform(0.7071, 0.7071, -0.7071, 0.7071, 0, 0)
			p.Content.DrawText(watermark, New PdfPoint(0, 0))
			p.Content.RestoreGraphicsState()
		End Using
	Next p

	existingDoc.Save("watermarked-document.pdf")
End Using
$vbLabelText   $csharpLabel

Bu örnek, GemBox.Pdf'nin düşük seviyeli PDF manipülasyonundaki gücünü, form oluşturma, grafik çizimi ve belge güvenlik özellikleri ile gösterir. Kod, IronPDF'nin HTML yaklaşımına göre daha kapsamlıdır, ancak PDF'nin her yönü üzerinde hassas kontrol sağlar.

Bu Kütüphaneler HTML'yi PDF'ye Dönüştürmeyi Nasıl Ele Alıyor?

HTML'den PDF'ye dönüşüm, IronPDF ve GemBox.Pdf arasındaki en büyük farklardan birini temsil eder.

IronPDF'nin HTML'den PDF'ye Yaklaşımı

IronPDF, başından itibaren HTML'den PDF'ye dönüşüm odaklı olarak geliştirilmiştir. Kütüphane, bir web tarayıcısının yapacağı gibi HTML, CSS ve JavaScript'i işleyen tam bir Chrome render motoru içerir. Bu şu anlama gelir:

  • Gerçek Tarayıcı Renderi: Google Chrome ile aynı Blink motorunu kullanır
  • Tam Web Standartları: CSS3, HTML5, flexbox, grid ve modern JavaScript'e tam destek
  • Dinamik İçerik: AJAX içeriği ve dinamik öğeleri yakalayarak renderlemeden önce JavaScript'i çalıştırır
  • Duyarlı Tasarım: Medya sorgularını ve duyarlı düzenleri yönetir
  • Dış Kaynaklar: Resimleri, stil şablonlarını ve fontları URL'lerden otomatik olarak alır

GemBox.Pdf'in HTML'den PDF'e Yaklaşımı

GemBox.Pdf, HTML5, CSS3 ve JavaScript yürütme desteği ile bir Chromium render motoru kullanarak yerleşik HTML'den PDF'e dönüşüm içerir. Dönüşüm, yerel dosyalardan, canlı URL'lerden, HTML dizelerinden veya akışlar üzerinden ConversionOptions API'si kullanılarak gerçekleştirilebilir.

IronPDF, Google Chrome V8 entegrasyonu ve daha zengin bir yapılandırma yüzeyi — özelleştirilebilir başlıklar/altlıklar, sayfa numaralama jetonları, arka plan baskı kontrolleri, JavaScript yoğun sayfalar için render gecikmesi ve geniş güvenlik/metadaten seçenekleri dahil olmak üzere, tüm bu özellikleri tek bir birleşik API'de sunarak bu alanda farklılaşıyor.

Modern CSS Çerçeve Desteği: Kritik Bir Fark

IronPDF'nun Chrome tabanlı renderlemesinin en büyük avantajlarından biri, Bootstrap, Tailwind CSS ve Foundation gibi modern CSS çerçeveleri ile çalışırken belirgin hale gelir. Bu çerçeveler modern web uygulamalarının omurgası haline geldi ve PDF'lerde doğru şekilde render edebilmeleri birçok kullanım durumu için esastır.

IronPDF: Tam Modern Çerçeve Desteği

IronPDF'nun Chrome render motoru, tüm modern CSS çerçeveleri için eksiksiz, yerel destek sağlar:

  • Bootstrap 5: Duyarlı düzenler için tam flexbox ve CSS Grid desteği Tailwind CSS: Tamamen yardımcı sınıfa öncelik veren CSS çerçeve desteği
  • Gerçek dünya örnekleri: Bootstrap anasayfasını ve Bootstrap şablonlarını piksellerine kadar kusursuz bir şekilde işler
  • Modern CSS3 özellikleri: Animasyonlar, dönüşümler, geçişler, özel özellikler
  • Duyarlı tasarımlar: Medya sorguları ve görüntü alanına dayalı yerleşimler sorunsuz çalışır

Kod Örneği: Bootstrap Formunu PDF'ye Dönüştürme

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapForm = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <h1 class='mb-4'>Customer Registration</h1>
        <form class='needs-validation'>
            <div class='row g-3'>
                <div class='col-md-6'>
                    <label class='form-label'>First Name</label>
                    <input type='text' class='form-control' value='John'>
                </div>
                <div class='col-md-6'>
                    <label class='form-label'>Last Name</label>
                    <input type='text' class='form-control' value='Smith'>
                </div>
            </div>
            <div class='mt-4'>
                <button class='btn btn-primary' type='submit'>Submit</button>
            </div>
        </form>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapForm);
pdf.SaveAs("bootstrap-form.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapForm = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <h1 class='mb-4'>Customer Registration</h1>
        <form class='needs-validation'>
            <div class='row g-3'>
                <div class='col-md-6'>
                    <label class='form-label'>First Name</label>
                    <input type='text' class='form-control' value='John'>
                </div>
                <div class='col-md-6'>
                    <label class='form-label'>Last Name</label>
                    <input type='text' class='form-control' value='Smith'>
                </div>
            </div>
            <div class='mt-4'>
                <button class='btn btn-primary' type='submit'>Submit</button>
            </div>
        </form>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapForm);
pdf.SaveAs("bootstrap-form.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim bootstrapForm As String = "
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <h1 class='mb-4'>Customer Registration</h1>
        <form class='needs-validation'>
            <div class='row g-3'>
                <div class='col-md-6'>
                    <label class='form-label'>First Name</label>
                    <input type='text' class='form-control' value='John'>
                </div>
                <div class='col-md-6'>
                    <label class='form-label'>Last Name</label>
                    <input type='text' class='form-control' value='Smith'>
                </div>
            </div>
            <div class='mt-4'>
                <button class='btn btn-primary' type='submit'>Submit</button>
            </div>
        </form>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(bootstrapForm)
pdf.SaveAs("bootstrap-form.pdf")
$vbLabelText   $csharpLabel

GemBox.Pdf: Chromium Tabanlı Çerçeve Desteği

GemBox.Pdf, HTML'den PDF'e dönüşüm için bir Chromium motoru kullanır, bu da HTML5 ve CSS3 için temel destek sağlar. Standart tarayıcı renderlemeye dayanan modern CSS çerçeveleri, motor seviyesinde uyumlu olmalıdır.

IronPDF'nin avantajı, Bootstrap, Tailwind CSS ve diğer çerçeveler için derinlemesine belgelenmiş ve test edilmiş destek, belirgin örnekler, sorun giderme kılavuzları ve çekirdek API yüzeyinin bir parçası olan yapılandırma seçenekleri (görünüm ayarları ve render gecikmeleri) sağlamasıdır. IronPDF kullanıcıları, yaygın çerçeveye özgü render senaryoları için geniş toplum kaynaklarından ve resmi kılavuzlardan faydalanır.

Gerçek Dünya Düşüncesi: Projeniz, Bootstrap veya Tailwind düzenlerinin PDF'de ince ayrıntılı kontrol gerektiren — özel görünüm boyutları, JavaScript sürüklenimli içerik veya dinamik grafik renderlemesi dahil olmak üzere — IronPDF'nin daha zengin yapılandırma API'si ve resmi çerçeve rehberleri, üretim kalitesinde sonuçlar için daha doğrudan bir yol sağlar.

CSS framework uyumluluğu hakkında daha fazla ayrıntı için bkz. Bootstrap & Flexbox CSS Rehberi.

Hangi Kütüphane Farklı PDF Görevlerinde Üstün?

Her bir kütüphanenin hangi alanlarda parladığını anlamak, geliştiricilerin özel ihtiyaçları için doğru aracı seçmelerine yardımcı olur.

IronPDF'nin Üstün Olduğu Alanlar

IronPDF, bu senaryolar için uygundur:

1. Web Uygulaması PDF Oluşturma

SaaS uygulamaları, web portalları ve web içeriğini PDF'ye dönüştürmesi gereken herhangi bir sistem için mükemmel. Chrome render motoru, Bootstrap, Tailwind CSS veya özelleştirilmiş çerçeveler kullananlar da dahil olmak üzere karmaşık web düzenlerinin mükemmel bir şekilde render edilmesini sağlar.

2. Dinamik Rapor Oluşturma

Raporlar çizelgeler (Chart.js, D3.js), dinamik veri görselleştirme veya JavaScript ile oluşturulan içerikler içerdiğinde, IronPDF her şeyi doğru bir şekilde yakalar. Bu, iş zekası panoları ve veri odaklı uygulamalar için ideal hale getirir.

3. Fatura ve Belge Şablonları

Faturalar, makbuzlar ve iş belgeleri için HTML/CSS şablonları kullanmak, tasarımcılara PDF'e özgü API'leri öğrenmeksizin şablonlar oluşturma imkanı tanır. Alışık olunan web teknolojilerini kullanarak hızlı bir şekilde değişiklik yapabilirsiniz.

4. Hızlı Geliştirme Projeleri

Basit API ve HTML tabanlı yaklaşım, geliştirme süresini önemli ölçüde azaltır. Bir geliştirici, karmaşık bir PDF dosyasını saatler yerine dakikalar içinde oluşturabilir.

5. Platformlar Arası Dağıtım

IronPDF, Windows, Linux, macOS, Docker ve bulut platformları için yerel destek sağlayarak çeşitli ortamlarda dağıtımı basitleştirir.

GemBox.Pdf'in Üstün Olduğu Alanlar

GemBox.Pdf, bu alanlardaki güçlü yönlerini gösteriyor:

1. Düşük Düzey PDF Manipülasyonu

PDF yapısı üzerinde hassas kontrol gerektiğinde, GemBox.Pdf'in nesne tabanlı yaklaşımı PDF öğelerine, akışlarına ve sözlüklerine doğrudan erişim sağlar.

2. Form Ağırlıklı Uygulamalar

PDF formlarıyla yoğun bir şekilde çalışan uygulamalar için, GemBox.Pdf, program aracılığıyla karmaşık etkileşimli formlar oluşturmayı içeren kapsamlı form alanı manipülasyonu sunar.

3. OCR Gereksinimleri

Yerleşik OCR yetenekleriyle GemBox.Pdf, taranmış belgelerden metin çıkarmak için ek kütüphaneler gerektirmeden kullanılabilir, bu da belge dijitalleştirme projeleri için uygun hale getirir.

4. Mobil Geliştirme

Android ve iOS platformları için yerel destek, GemBox.Pdf'i PDF işlevselliğine ihtiyaç duyan mobil uygulamalar için iyi bir seçim haline getirir.

5. Mevcut PDF Değişikliği

Mevcut PDF'lerle çalışırken ve yeni PDF'ler oluşturmak yerine, GemBox.Pdf'in çıkarma, manipülasyon ve değiştirme araçları bu iş için oldukça uygundur.

Kurulum ve Ayarlama Nasıl Karşılaştırılır?

Her iki kütüphane de NuGet aracılığıyla kolay kurulum sunar, ancak farklı karmaşıklık seviyelerine sahiptir.

Installing IronPDF

IronPDF kurulumu son derece basittir:

Install-Package IronPdf

Veya .NET CLI ile:

dotnet add package IronPdf

Paket, Chrome işleme motoru dahil olmak üzere gereken her şeyi içerir. Çoğu kullanım durumu için ek bir yapılandırma veya bağımlılık gerekmez.

Belirli dağıtım senaryoları için IronPDF şunları sunar:

  • IronPdf.Slim: Çalışma zamanında platforma özgü bileşenleri indiren hafif paket
  • IronPdf.Linux: Linux dağıtımları için önceden yapılandırılmış
  • IronPdf.MacOs: macOS ortamları için optimize edilmiş

GemBox.Pdf Kurulumu

GemBox.Pdf yükleme işlemi, temel PDF manipülasyonu için de aynı derecede basittir:

Install-Package GemBox.Pdf

Ancak, HTML'den PDF'e dönüştürme için şunlara ihtiyacınız olacak:

Install-Package GemBox.Document

Her iki kütüphane de lisans anahtarı yapılandırması gerektirir:

// IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY";

// GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY");
// IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY";

// GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY");
' IronPDF
License.LicenseKey = "YOUR-LICENSE-KEY"

' GemBox.Pdf
ComponentInfo.SetLicense("YOUR-LICENSE-KEY")
$vbLabelText   $csharpLabel

Lisanslama ve Fiyatlandırma Farklılıkları Nelerdir?

Lisanslama modellerini anlamak, her bir çözüm için toplam mülkiyet maliyetini belirlemenize yardımcı olur.

IronPDF Lisanslama

IronPDF, şeffaf ve kademeli lisanslama sunar (Nisan 2026 itibarıyla fiyatlandırma):

  • Lite License: $999

    • 1 geliştirici
    • 1 proje 1 yıl destek ve güncellemeler
  • Plus License: $1,499

    • 3 geliştirici
    • 3 proje 1 yıl destek ve güncellemeler
  • Professional License: $2,999
    • 10 geliştirici
    • 10 proje 1 yıl destek ve güncellemeler

Ek Seçenekler:

  • Telif ücretsiz yeniden dağıtım: +$1,999 SaaS/OEM lisanslama mevcut
  • Iron Suite paketi: $2,998 için 10 ürün

Anahtar Faydalar: 30 günlük para iade garantisi

  • Süresiz lisanslar (tek seferlik satın alma) Ücretsiz geliştirme ve test
  • Geliştirme/deneme/üretim ortamına dağıtım dahil

GemBox.Pdf Lisanslama

GemBox, geliştirici başına lisanslama sunar (Nisan 2026 itibarıyla):

  • Tek Geliştirici: $890
    • 1 geliştirici Sınırsız projeler 1 yıl destek ve güncellemeler Telif ücretsiz dağıtım dahildir

Önemli Hususlar: Yenilemelerde %40 indirim (Süresi dolmadan yenilenirse %60 indirim)

  • GemBox Paketi: $2,200 için 1 geliştirici (6 ürün)

Anahtar Faydalar: 30 günlük para iade garantisi Süresiz lisanslar

  • Sınırsız dağıtım dahil Sunucu veya OEM lisansları gerekmiyor

Yaygın Senaryolar İçin Maliyet Karşılaştırması

Senaryo IronPDF Maliyeti GemBox.Pdf Maliyeti
Tek geliştirici, HTML'den PDF'ye $999 $890
3 geliştirici, yalnızca PDF manipülasyonu $1,499 $4,450 (10 geliştiriciye kadar)
3 geliştirici, HTML to PDF $1,499 $4,450 (10 geliştiriciye kadar)
Enterprise (10 geliştirici), tüm özellikler $2,999 $4,450

Hangi Kütüphaneyi Seçmelisiniz?

IronPDF ve GemBox.Pdf arasındaki seçim, sizin özel gereksinimlerinize bağlıdır:

IronPDF'i Tercih Edin Ne Zaman:

  • Zengin HTML'den PDF'e yapılandırma önceliktir: IronPDF, başlıklar/altlıklar, JavaScript render gecikmeleri, görünüm ayarları, PDF güvenliği ve metadaten için geniş bir API sunar - hepsi tek bir birleşik kitaplık içinde
  • Derinlemesine belgelenmiş çerçeve entegrasyonu gerekiyor: Bootstrap, Tailwind CSS, Chart.js ve diğer web çerçeveleri için resmi rehberler ve test edilmiş örnekler
  • Hızlı gelişim önemlidir: Market süresini azaltan basit, yüksek seviyeli API yöntemleri, örneğin RenderHtmlAsPdf()
  • Çapraz platform dağıtımı gerekiyor: Bulut ve konteynerize edilmiş ortamlar için mükemmel destek, Linux ve macOS için özel paketler
  • Bütçe bir dikkate değerdir: Daha düşük giriş maliyeti ve geniş bir özellik seti tek bir kitaplıktan

GemBox.Pdf'i Seçin Ne Zaman:

  • Düşük seviyeli PDF kontrolü esastır: PDF nesnelerine ve yapısına doğrudan erişim Mobil platform desteği gereklidir: Yerel Android ve iOS uyumluluğu
  • OCR temel bir gerekliliktir: Ek bağımlılık olmadan yerleşik OCR Esas olarak mevcut PDF'lerle çalışıyorsunuz: Güçlü manipülasyon ve çıkarma özellikleri
  • Sınırsız dağıtım önemlidir: Telif ücretsiz yeniden dağıtım ekstra maliyet olmadan dahil

Her İki Kütüphaneyi de Kullanmayı Düşünün:

Bazı organizasyonlar, uygulamalarının farklı bölümleri için her iki kütüphaneyi de kullanarak değer bulur:

  • Rapor oluşturma ve HTML'den PDF'e dönüştürme için IronPDF
  • GemBox.Pdf, form işleme ve PDF manipülasyonu için

Seçtiğiniz Kütüphaneyle Başlarken

Her iki kütüphane de yeteneklerini değerlendirmek için ücretsiz denemeler sunar:

IronPDF'yi Deneyin

  1. NuGet paketini yükleyin
  2. Geliştirme için lisans anahtarı gerekmez
  3. Deneme modunda PDF dosyalarında filigranlar görünür
  4. Değerlendirme sırasında tüm özelliklere erişim

IronPDF Ücretsiz Deneme Sürümünü İndir

GemBox.Pdf'i Deneyin

  1. NuGet paketini yükleyin
  2. ComponentInfo.SetLicense("FREE-LIMITED-KEY") kullanın Ücretsiz modda 2 sayfa ile sınırlıdır
  3. Sınırlamaları kaldırmak için yükseltin

Görsel Kurulum Kılavuzu

Görsel Studio'nun grafik ara yüzünü tercih eden geliştiriciler için, her iki kütüphaneyi yüklemeye yönelik adım adım kılavuz:

Yeni Bir ASP.NET Projesi Oluşturma

.NET Framework seçenekleriyle ASP.NET Web Uygulaması seçimini gösteren Visual Studio Yeni Proje iletişim kutusu ASP.NET Web Uygulaması oluşturmak için Visual Studio'nun Yeni Proje iletişim kutusu - PDF oluşturma projelerinin temeli

ASP.NET proje şablonları ekranı, Web Forms seçeneğini PDF kütüphanesi entegrasyonu için vurguluyor Proje şablonu olarak Web Forms seçmek - hem IronPDF hem de GemBox.Pdf uygulamaları için uygundur

NuGet ile PDF Kütüphanelerini Kurma

PDF kütüphanelerini eklemek için NuGet Paketlerini Yönetme seçeneğini gösteren Çözüm Gezgini bağlam menüsü Kütüphane yüklemesi için NuGet Paket Yöneticisine erişmek amacıyla Çözüm Gezgini'nde projenize sağ tıklayın

PDF kütüphanesi kurulumu için NuGet Paketlerini Yönet seçeneğini gösteren Visual Studio Proje menüsü Visual Studio'da Proje menüsü aracılığıyla NuGet Paket Yöneticisi'ne alternatif erişim

NuGet Paket Yöneticisi arayüzünde, IronPDF kurulumunu versiyon detayları ve açıklamasıyla gösteriyor NuGet Paket Yöneticisi aracılığıyla IronPDF'nin Kurulumu - kapsamlı özellik açıklamasına ve indirme sayısına dikkat edin

Alternatif Kurulum Yöntemleri

IronPDF resmi web sitesi indirme sayfası, manuel kurulum için doğrudan DLL indirme seçeneğini gösteriyor IronPDF'in web sitesi, NuGet yüklemesinin uygun olmadığı senaryolar için doğrudan DLL indirmeleri sunar

Sonuç

Hem .NET hem de GemBox.Pdf, .NET geliştiricileri için kaliteli PDF kütüphaneleridir ve her biri kendine özgü güçlü yönlere sahiptir. Her iki kitaplıkta da Chromium tabanlı HTML'den PDF'e dönüşüm bulunur; .NET, daha zengin yapılandırma API'si, web çerçeveleri için daha derin belgeler ve tek bir paket içinde daha geniş bir özellik seti sunarak farklılaşır. GemBox.Pdf, düşük düzey PDF manipülasyonunda, mobil platform desteğinde ve yerleşik OCR'de parlıyor - bu da, kesin PDF yapı kontrolü gerektiren uygulamalar için onu uygun hale getiriyor.

Modern uygulamalar geliştiren web geliştiricileri ve ekipleri için, belgelenmiş, yüksek yapılandırılabilir bir HTML'den PDF'e iş akışı arayanlar, IronPDF'nin birleşik API'si ve geniş ekosistem desteği, geliştirme süresini ve karmaşıklığını azaltır.

Ancak, GemBox.Pdf özellikle mobil geliştirme ve PDF form işleme veya OCR gereksinimlerine odaklanan uygulamalar için uzmanlaşmış senaryolarda sağlam bir seçenek olmaya devam ediyor.

HTML içeriğinizi profesyonel PDF'lere dönüştürmeye hazır mısınız? .NET'in ücretsiz deneme sürümü ile başlamaya ve .NET uygulamalarınızda Chrome kalitesinde render almanın gücünü deneyimlemeye hazır olun. Kapsamlı dokümantasyon, geniş kod örnekleri ve duyarlı destek ile saatler yerine dakikalar içinde PDF üreteceksiniz.

Lütfen dikkate alınGemBox.Pdf ve GemBox.Document, ilgili sahiplerinin tescilli ticari markalarıdır. Bu site, GemBox.Pdf veya GemBox.Document ile bağlantılı, onaylı 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.

Sıkça Sorulan Sorular

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

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

Bu kütüphanelerle mevcut PDF dosyalarını işleyebilir miyim?

Evet, hem IronPDF hem de GemBox.Pdf mevcut PDF dosyalarını işlemek için kullanılabilir. IronPDF, birleştirme, bölme ve filigran ekleme gibi yaygın görevleri basitleştirir. GemBox.Pdf, karmaşık işlem görevleri için faydalı olan PDF nesneleri üzerinde daha ayrıntılı kontrol sunar.

HTML'den PDF'e dönüşüm için IronPDF'i kullanmanın avantajları nelerdir?

IronPDF, Chrome V8 render motoru ile üstün HTML'den PDF'e dönüşüm kalitesi sunar ve %98+ tarayıcı benzerliği sağlar. Modern CSS3, HTML5, JavaScript yürütme, web yazı tipleri ve duyarlı tasarımları destekler.

Hangi kütüphane küçük bir geliştirme ekibi için daha uygun maliyetlidir?

HTML'den PDF'e dönüşüm ihtiyacı olan 3 geliştiriciden oluşan bir ekip için IronPDF, Plus lisansı için 1.499 $ maliyetindedir, oysa GemBox, 3 GemBox.Pdf lisansı ve 3 GemBox.Document lisansı için toplamda 5.340 $ maliyetindedir. IronPDF, ekipler için önemli ölçüde daha iyi bir değer sunar.

IronPDF yüksek hacimli PDF oluşturma için uygun mudur?

Evet, IronPDF, yaklaşık 125ms HTML'den PDF'e render süresi, optimize edilmiş async/await desteği ve 10MB altında etkili bellek kullanımı ile mükemmel performans sunar. Yüksek hacimli web tabanlı PDF oluşturma için oldukça uygundur.

IronPDF ile hangi destekler dahildir?

IronPDF, geliştirme ekibine doğrudan erişim ile 24/5 mühendislik desteği, tipik 24-48 saat yanıt süreleri, kapsamlı dokümantasyon ve kod örnekleri içerir.

Bu kütüphanelerle PDF/A uyumlu belgeler oluşturabilir miyim?

Evet, IronPDF birkaç PDF/A sürümünü destekleyerek SaveAsPdfA() gibi basit bir yöntem çağrısı ile PDF/A uyumlu belgeler üretebilir. GemBox.Pdf, PDF/A belgelerini okuyabilir ve bunları değiştirirken uyumluluğunu korur.

Bu kütüphaneler modern .NET framework'lerle uyumlu mu?

Evet, her iki kütüphane de modern .NET sürümlerini destekler. IronPDF, .NET Framework 4.6.2+, .NET Core 3.1+ ve .NET 5'ten 10'a kadar olan sürümleri destekler. GemBox.Pdf, .NET Framework 3.5+, .NET Standard 2.0 ve .NET 6+ sürümlerini destekler.

Hangi kütüphane bulut konuşlandırmaları için optimize edilmiştir?

IronPDF, Azure, AWS, Docker kapsayıcıları ve sunucusuz ortamlar için özel destek ile bulut konuşlandırmaları için optimize edilmiştir. HTML tabanlı yaklaşımı, web uygulamalarıyla doğal bir şekilde uyumlu olup, SaaS uygulamaları için daha iyi bir seçimdir.

IronPDF'yi test etmek için ücretsiz bir sürüm var mı?

IronPDF, lisans anahtarı olmadan sınırsız geliştirme ve test yapma imkanı sunan ücretsiz bir değerlendirme seçeneği sunar, ancak çıktı üzerinde filigranlar görünür. Ürünü satın almadan önce değerlendirmek için yeterli işlevsellik sağlar.

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

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

Daha Fazla Oku

Iron Destek Ekibi

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