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

IronPDF ve ExpertPDF: Hangi C# PDF Kütüphanesi Kıdemli .NET Geliştiricileri Seçmeli?

IronPDF, Chrome V8 motoru hassasiyeti ve sezgisel API'leri ile HTML'den PDF'e dönüştürmede üstün iken, ExpertPDF, daha karmaşık yapılandırma gerektiren .NET üretim sistemleri için temel PDF yetenekleri sunar.

C# geliştiricileri, PDF'leri okuma, yazma, oluşturma veya formatlar arasında dönüştürme konusunda sıklıkla zorluklarla karşılaşır. Bu ihtiyaçlara hitap eden birçok kütüphane ortaya çıkmış olup, C# uygulamaları için sorunsuz entegrasyon sunmaktadır. C# PDF raporları geliştirirken, doğru kütüphanenin seçimi geliştirme süresi ve çıktı kalitesini önemli ölçüde etkiler. C# içinde PDF oluşturmanın tam kapsamı için kütüphane yeteneklerini anlamak esastır.

Bu makale, .NET geliştiricileri için iki PDF kütüphanesini karşılaştırmaktadır:

Her iki kütüphane de .NET ortamlarında PDF'leri oluşturma, dönüştürme ve düzenleme yöntemlerini sunmaktadır. Ana değerlendirme, hangi kütüphanenin özel proje gereksinimlerine en uygun olduğunun belirlenmesiyle ilgilidir. Bu analiz, karar verme sürecini bilgilendirmek için temel özellikleri vurgulamaktadır. HTML'den PDF dönüştürme, PDF düzenleme yetenekleri veya belge organizasyon özelliklerinin uygulanması söz konusu olduğunda, uygun kütüphanenin seçimi çok önemlidir.

IronPDF Kütüphanesi Nedir?

IronPDF, özellikle C# geliştiricileri için faydalı olan eksiksiz bir .NET PDF çözümü sağlar. Kütüphane, C# uygulamaları içinde gerekli tüm PDF işlevselliklerinin uygulanmasını sağlar. Bulut tabanlı mimarilere uygun olan Azure dağıtımı ve AWS Lambda desteği mevcuttur. Geliştiriciler, mükemmel Windows desteği, Linux dağıtımı ve macOS uyumluluğundan faydalanır. Kurulum genel bakışı, eksiksiz kurulum rehberliği sağlar.

IronPDF, HTML içeriğini PDF'e dönüştüren bir .NET Chromium motoru entegre eder ve belgenin tasarımını karmaşık API'ler olmadan basitleştirir. HTML'den PDF'e dönüştürücü, HTML5, CSS, JavaScript ve resimler kullanarak belgeler oluşturur. Ekleme yapabilmenin yanı sıra, geliştiriciler PDF'leri düzenleyebilir, üstbilgiler ve altbilgiler ekleyebilir ve görselleri çıkarabilir. Kütüphane güvenilir metin çıkarma yetenekleri ile metin okuma işlemini basitleştirir. Üretim ortamları için Chrome render motoru doğru bir render sağlar.

IronPDF'in Temel Özellikleri Nelerdir?

HTML'den Nasıl PDF Dosyaları Oluştururum?

Adobe Acrobat Reader Olmadan PDF'leri Nasıl Düzenlerim?

PDF Belgelerini Nasıl Manipüle Edebilirim?

Hangi Dosya Formatlarını PDF'e Dönüştürebilirim?

PDF'leri Nasıl Kaydeder ve Yazdırırım?

ExpertPDF Nedir?

ExpertPDF'in Resmi Sitesini Ziyaret Edin ve onların HTML'den PDF'e dönüştürme sunan .NET kütüphanesi teklifini keşfedin. Bu kütüphane, karmaşık raporlama yazılımı olmadan PDF raporları oluşturmanızı sağlar. Eksiksiz dokümantasyon ve API referansı arayan geliştiriciler için, farz edin ki ExpertPDF yerine IronPDF kullanarak daha büyük kaynak erişimini değerlendirin.

ExpertPDF, basit PDF düzenleme yetenekleri sağlar. HTML-to-PDF dönüştürücü, .NET uygulamalarına hızlı bir şekilde entegre olur. .NET Framework, .NET Core, .NET 5 ve .NET 6 ile uyumlu, ancak Linux dağıtımı ve macOS desteği eksik. Konteynerleştirilmiş dağıtımlar için, IronPDF Docker desteği sunarken ExpertPDF sunmaz. IronPDF ayrıca uzaktan konteyner dağıtımı ve yerel vs uzaktan motor seçenekleri destekler.

Bu kütüphane, .NET uygulamalarında web sayfası URL'lerinden veya ham HTML işaretlemelerinden PDF dosyaları oluşturur. WebGL sitelerini işleme veya JavaScript ağırlıklı uygulamalar gibi gelişmiş senaryolar için IronPDF üstün işleme kabiliyetleri sunar. Hızlı başlangıç kılavuzu, geliştiricilerin hızlı bir şekilde başlamasına yardımcı olur.

ExpertPDF'nin Ana Özellikleri Nelerdir?

Dikkate değer özellikler şunlardır:

  • URL web sayfalarını PDF'ye dönüştür
  • HTML dizelerini PDF'ye dönüştür
  • Birden fazla çıktı dosyası seçeneği
  • Sayfa kenar boşluklarını ve boyutunu ayarlama
  • Üstbilgi ve altbilgi ayarlama
  • Otomatik ve özel sayfa sonları ekleme
  • Belirli web sayfası bölümlerini PDF'ye dönüştürme
  • Dönüşüm sırasında öğeleri gizleme
  • Birden fazla web sayfasını tek PDF'lerde birleştirme
  • Kimlik doğrulamalı web sayfalarını PDF'ye dönüştürme
  • CSS medya türünü seçerek işleme
  • Yer imleri desteği
  • Dijital imza desteği
  • PDF'de HTML öğesi konumlarını alma
  • HTML5/CSS3 desteği
  • Web yazı tipleri desteği Dosya Türü Dönüşümleri:
    • PDF'den Metne Dönüştürücü
    • HTML'den PDF'ye Dönüştürücü
    • HTML'den Görüntüye Dönüştürücü
    • PDF'den Görüntüye Dönüştürücü
    • RTF'den PDF'ye Dönüştürücü

Aşağıdaki bölümler şunları kapsar:

  1. Konsol Projesi Oluşturma
  2. IronPDF Kurulumu
  3. ExpertPDF Kurulumu
  4. URL'den PDF Oluşturma
  5. HTML Giriş Dizgesinden PDF Oluşturma
  6. Birden Fazla PDF'yi Tek PDF'ye Birleştirme
  7. Görüntüleri PDF'ye Dönüştürme
  8. Lisanslama ve Fiyatlandırma
  9. Sonuç

Konsol Projesi Nasıl Oluşturulurum?

Visual Studio 2022 kullanarak konsol uygulaması oluşturmak için bu adımları izleyin:

  • Visual Studio 2022'yi açın ve yeni bir proje oluşturun

    Visual Studio 2022 karşılama ekranı koyu tema arayüzü ile dört ana geliştirme seçeneği gösteriyor: işbirlikçi projeler için bir depo klonla, mevcut çalışmalar için bir proje veya çözüm aç, dosya keşfi için bir yerel klasörü aç ve yeni geliştirme için yeni bir proje oluştur

  • C# Konsol Uygulamasını seçin ve ileriye tıklayın

    Visual Studio'nun yeni bir proje oluşturma diyaloğu, Windows, Linux ve macOS için çapraz platform desteği göstergeleri ile çeşitli .NET proje şablonları ile sunuluyor ve Konsol Uygulaması, Sınıf Kütüphanesi ve MSTest Test Projesi seçenekleri ile dil ve proje türü filtreleri sunuluyor

  • Proje adını girin ve ileriye tıklayın

    Visual Studio proje yapılandırma penceresi, Linux, macOS, Windows ve konsol ortamları için platform hedefleme seçenekleri ile 'DemoApp' adlı yeni çapraz platform C# Konsol Uygulaması için kurulum seçeneklerini gösteriyor

  • .NET Framework sürümünü seçin (en son 6.0 kullanılıyor)

    Visual Studio proje oluşturma sihirbazı, Ek bilgi adımını gösteriyor, Konsol Uygulaması şablonu seçili ve .NET 6.0 çerçevesi seçilmiş, C#, Linux, macOS, Windows ve Konsol uygulamaları için çapraz platform destekleri etiketlenmiş olarak

Konsol projesi oluşturulmuş ve kütüphane testine hazır. Her iki kütüphane de kullanımdan önce kurulum gerektirir. Daha fazla ayrıntı için hızlı başlangıç kılavuzuna bakın. Genel bakış belgeleri eksiksiz bilgi sağlar.

IronPDF'yi Nasıl Kurarım?

Çeşitli kurulum yöntemleri mevcuttur:

  1. Visual Studio Kullanarak
  2. NuGet Paketini doğrudan indirin
  3. IronPDF .DLL Kütüphanesini İndirme

Daha fazla ayrıntı için kurulum genel bakışına bakın. Kütüphane, sistem genelinde dağıtım için Windows yükleyici destekler. Gelişmiş seçenekler arasında NuGet kurulumu ve lisans anahtarları kullanma bulunur.

Visual Studio Kullanarak Nasıl Kurulur?

Visual Studio, paketleri kurmak için NuGet Paket Yöneticisi sağlar:

  • Proje Menü Araçlarından erişim veya
  • Çözüm Gezgini'nde projeye sağ tıklayın

    Visual Studio Çözüm Gezgini bağlam menüsü, çeşitli proje yönetim seçeneklerini gösteriyor, 'NuGet Paketlerini Yönet' seçeneği kolay erişim için belirgin şekilde vurgulanmış, paket yönetim işlevine kolay erişim sağlıyor

    Visual Studio IDE Araçlar menüsü genişletilerek, çözümdeki tüm projeler için merkezileştirilmiş bağımlılık yönetimi için 'Çözüm için NuGet Paketlerini Yönet' seçeneği bulunan bir NuGet Paket Yöneticisi alt menüsü gösteriliyor

IronPDF NuGet paketini arayın ve yükleyin. Daha fazla ayrıntı için NuGet kurulum kılavuzuna bakın. Platforma özgü rehberler arasında Android entegrasyonu, F# geliştirme ve VB.NET kullanımı yer alır. Dağıtım sorunlarını gidermek için NuGet paketi dağıtılamadı rehberine bakın.

NuGet Paketini Doğrudan Nasıl İndirebilirim?

NuGet web sitesinden IronPDF indirin:

  • NuGet IronPDF Paketi adresini ziyaret edin
  • 'Paketi İndir' seçeneğini seçin
  • Indirilen pakete çift tıklayın
  • Paket otomatik olarak yüklenir
  • Visual Studio'yu yeniden yükleyin

IronPDF DLL Nasıl İndirilir ve Kurulur?

IronPDF .DLL dosyasını doğrudan IronPDF web sitesinden indirin. IronPDF DLL İndir üzerine tıklayın.

Projede IronPDF'ye referans verin:

  • Çözüm Gezgini'nde Çözüm'e sağ tıklayın
  • 'Referans Ekle' seçeneğini seçin
  • IronPDF.dll kütüphanesini arayın
  • Tamam butonuna tıklayın

IronPDF kurulumu tamamlandı. İlave seçenekler için, Docker dağıtımı ve uzaktan motor kurulumu dahil, kurulum genel bakışına bakın. Sorun gidermek için hızlı sorun giderme kılavuzuna bakın veya ilk işleme performansı ve GPU işlem optimizasyonunu inceleyin. Çalışma zamanları klasörü rehberi, bağımlılık yönetiminde yardımcı olur.

ExpertPDF Nasıl Kurulur?

İki kurulum yöntemi mevcuttur:

  • Visual Studio NuGet Paket Yöneticisini Kullanarak
  • Derlemeleri indirmek (eski .NET sürümleri)

Modern .NET çerçeveleri için ExpertPDF'yi NuGet Paket Yöneticisi kullanarak kurun. Gelişmiş kurulum yöntemleri ve paket boyutu optimizasyonu ile çok daha fazla esneklik için ExpertPDF yerine IronPDF kullanmayı düşünün.

Visual Studio NuGet Paket Yöneticisi Kullanarak Nasıl Kurulur?

NuGet Paket Yöneticisine erişin:

  • Proje Menü Araçları
  • Çözüm Gezgini'nde projeye sağ tıklayın

    Visual Studio NuGet Paket Yöneticisi arabirimi, çeşitli platformlar ve işleme motorları için kurulabilir seçenekler ile ana paketin 3,88M indirme sayısı olan çeşitli IronPDF paket sürümleri ve arama sonuçlarını gösteriyor

Visual Studio Cozum Gezgini baglam menusu, Ek alti menusunde vurgulanan 'NuGet Paketlerini Yonet' secenegiyle paket yonetimi ve bagimlilik kurulum özelliklerine hizli erişim saglar

ExpertPDF NuGet paketine goz atin ve yukleyin. Daha iyi bir kurulum icin IronPDF'nin kullanma bildirim kılavuzunu göz önünde bulundurun.

Not: ExpertPDF sadece Windows'u desteklerken, IronPDF Windows, Linux ve macOS destegi sunar. Bulut kurulumlari icin, IronPDF Azure entegrasyonu ve AWS Lambda destegi sunar. IronPDF, tam performans optimizasyonu ve bellek yonetimi rehberligi saglar. Belirli platformlar icin Red Hat Enterprise Linux destegine ve Amazon Linux 2'de AWS Lambda'ya bakin.

Bir URL'den PDF Nasıl Oluştururum?

Her iki kutuphane de HTML'yi PDF'ye dönüştürur. URL'den PDF'ye kılavuzuna daha fazla ayrinti icin basvurun. Karmaşık web siteleri, özel render gecikmeleri veya JavaScript calistirma işlemleri gerektirebilir. Yetkilendirilmis siteler icin TLS web sitesi ve sistem girisleri kılavuzuna bakin. IronPDF, piksel-mükemmel HTML'den PDF'ye dönüşüm icin Chrome rendering kullanarak muhtesem sonuc verir.

IronPDF URL'yi PDF'ye Nasıl Dönüştürur?

IronPDF, URL'lerden HTML'yi PDF olarak verimli bir sekilde calistirir. Kutuphane, CSS, JavaScript, resimler ve Formlar icin yuksek seviye destek saglar. Chrome rendering engine kullanmak, piksel-mükemmel HTML'den PDF'ye donusumu garantiler. Render sorunları için piksel-mükemmel HTML formatlama kılavuzuna bakın. Gelişmiş render seçenekleri, özel kağıt boyutları ve viewport konfigürasyonu içerir. JavaScript mesaj dinleyici, dinamik içerik işleme imkan saglar.

Bu kod ornegi, IronPDF'nin geliştiricilerin web sitesi URL'lerinden PDF oluşturmasına nasıl olanak tanıdığını gösteriyor:

// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_190___");
// Save the rendered PDF to a file
pdf.SaveAs("url.pdf");
// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_190___");
// Save the rendered PDF to a file
pdf.SaveAs("url.pdf");
' Import the IronPdf library
Imports IronPdf

' Initialize a new renderer
Dim renderer As New ChromePdfRenderer()
' Render the specified URL as a PDF
Dim pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_190___")
' Save the rendered PDF to a file
pdf.SaveAs("url.pdf")
$vbLabelText   $csharpLabel

Yetkilendirilmis URL'ler icin TLS web sitesi ve sistem girisleri kılavuzuna bakın. Yetkilendirilmis istekler icin cerezleri ve ozel HTTP headler konfigure edin. Guvenli siteler Kerberos kimligini doğrulama gerektirebilir. Hata ayıklama için Chrome hata ayıklama kılavuzunu kullanın. Ek örnekler URL'lerin PDF'ye dönüşümünü gösterir.

ExpertPDF URL'yi PDF'ye Nasıl Dönüştürur?

ExpertPDF, sayfa formatlamasını koruyarak URL'leri savePdfFromUrlToFile yöntemiyle dönüştürür:

// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("___PROTECTED_URL_191___", "output.pdf");
// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("___PROTECTED_URL_191___", "output.pdf");
' Import the ExpertPdf.HtmlToPdf namespace
Imports ExpertPdf.HtmlToPdf

' Initialize a new PdfConverter
Dim pdfConverter As New PdfConverter()
' Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("___PROTECTED_URL_191___", "output.pdf")
$vbLabelText   $csharpLabel

IronPDF, perde arkasinda daha iyi HTML5 ve CSS3 destegi saglamak icin kendi Chrome rendering engine kullanir.

HTML Giriş Dizisinden PDF Nasıl Oluştururum?

Her iki kutuphane de HTML dizilerinden PDF oluşturur. HTML string to PDF kılavuzuna daha fazla ayrıntı için bakınız. Ekran ve baskı için CSS kullanın ve web yazı tipleri ve simge yazı tipleri entegre edin. IronPDF, Bootstrap ve Flexbox CSS için mükemmel destek sunar. HTML kullanarak PDF oluşturma örneği, pratik uygulamayı gösterir.

IronPDF HTML String'ini PDF'ye Nasıl Dönüştürur?

Bu kod ornegi, IronPDF'nin geliştiricilerin HTML dizilerinden nasıl PDF dökümanlar oluşturmasına imkan tanıdığını gösteriyor:

// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render a PDF from HTML string and save it
var pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
pdfDoc1.SaveAs("pixel-perfect.pdf");

// Render HTML with external assets and save it
var pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
pdfDoc2.SaveAs("html-with-assets.pdf");
// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render a PDF from HTML string and save it
var pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
pdfDoc1.SaveAs("pixel-perfect.pdf");

// Render HTML with external assets and save it
var pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
pdfDoc2.SaveAs("html-with-assets.pdf");
' Import the IronPdf library
Imports IronPdf

' Initialize a new renderer
Private renderer As New ChromePdfRenderer()
' Render a PDF from HTML string and save it
Private pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>")
pdfDoc1.SaveAs("pixel-perfect.pdf")

' Render HTML with external assets and save it
Dim pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
pdfDoc2.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

IronPDF, göreli yollar için temel URL'leri ve DataURIs, görüntüleri yerleştirmek için destek sunar. Karmaşık HTML için, HTML dosyasını PDF'ye kılavuzuna bakın. Belirli görünümleri için, görünüm ve yakınlaştırma ayarları kılavuzuna bakın. Kütüphane, uluslararası dilleri ve UTF-8'i sorunsuz bir şekilde işler. Gelişmiş özellikler arasında HTML render ayarları ve duyarlı HTML'den PDF'ye dönüşüm bulunur.

ExpertPDF HTML String'ini PDF'ye Nasıl Dönüştürur?

ExpertPDF HTML To PDF dönüştürücüsü HTML dizisi dönüştürmeyi destekler:

// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf");
// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf");
' Import the ExpertPdf.HtmlToPdf namespace
Imports ExpertPdf.HtmlToPdf

' Initialize a new PdfConverter
Private pdfConverter As New PdfConverter()
' Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf")
$vbLabelText   $csharpLabel

İlk argüman HTML dizisini belirtir, ikinci argüman çıktı dosya adını belirtir. Temel HTML render yerine IronPDF'nin Unicode ve UTF-8 destegini kullanmayı düşünün, böylece çok daha genis uluslararası dil desteği sağlarsınız.

Teknik Dokümantasyon PDF'leri Nasıl Oluşturabilirim?

Teknik dokümantasyon, kod örnekleriyle yapılandırılmış düzenlerden faydalanır. Bu Bootstrap 5 gösterimi, demirPDF'nin dökümantasyonu söz dizimi vurgulama ve uyarılarla render etme yeteneğini gösterir. Bootstrap ve Flexbox CSS destek kılavuzuna daha fazla ayrıntı için bakınız. IronPDF, profesyonel tipografi için yazı tipi yönetimi ve yazı tipi kerning destekler. Sonuçları iyileştirmek için, yazı tipi sorun giderme kılavuzunu ve uluslararası dil desteği kontrol edin.

using IronPdf;

var renderer = new ChromePdfRenderer();

string technicalDocs = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_192___ rel='stylesheet'>
    <style>
        .code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
        .api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
        @media print { .card, .alert { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-dark text-white'>
                <h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
            </div>
            <div class='card-body'>
                <h4>RenderHtmlAsPdf() Method</h4>
                <p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>

                <div class='code-block mb-3'>
                    <code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
                </div>

                <div class='row mt-4'>
                    <div class='col-md-6'>
                        <h5 class='text-primary'>Parameters</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>htmlContent</code></td>
                                <td>String containing HTML to convert</td>
                            </tr>
                        </table>
                    </div>
                    <div class='col-md-6'>
                        <h5 class='text-success'>Returns</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>PdfDocument</code></td>
                                <td>Generated PDF document object</td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-3 mb-4'>
            <div class='col-md-4'>
                <div class='alert alert-success mb-0'>
                    <h6 class='alert-heading'>✓ Supported Features</h6>
                    <ul class='mb-0 small'>
                        <li>HTML5 semantic tags</li>
                        <li>CSS3 with Flexbox/Grid</li>
                        <li>JavaScript execution</li>
                        <li>External stylesheets</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-info mb-0'>
                    <h6 class='alert-heading'>ⓘ Rendering Engine</h6>
                    <ul class='mb-0 small'>
                        <li>Chrome V8 Engine</li>
                        <li>98% browser fidelity</li>
                        <li>Sub-second rendering</li>
                        <li>Async/await support</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-warning mb-0'>
                    <h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
                    <ul class='mb-0 small'>
                        <li>Complex API structure</li>
                        <li>Limited CSS3 support</li>
                        <li>No native JavaScript</li>
                        <li>Requires configuration</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Code Example Comparison</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF (Simple)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
                        </div>
                        <div class='badge bg-success mt-2'>3 Lines</div>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-warning'>ExpertPDF (Complex)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
                        </div>
                        <div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
                    </div>
                </div>
            </div>
            <div class='card-footer text-muted'>
                <small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(technicalDocs);
pdf.SaveAs("technical-documentation.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string technicalDocs = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_192___ rel='stylesheet'>
    <style>
        .code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
        .api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
        @media print { .card, .alert { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-dark text-white'>
                <h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
            </div>
            <div class='card-body'>
                <h4>RenderHtmlAsPdf() Method</h4>
                <p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>

                <div class='code-block mb-3'>
                    <code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
                </div>

                <div class='row mt-4'>
                    <div class='col-md-6'>
                        <h5 class='text-primary'>Parameters</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>htmlContent</code></td>
                                <td>String containing HTML to convert</td>
                            </tr>
                        </table>
                    </div>
                    <div class='col-md-6'>
                        <h5 class='text-success'>Returns</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>PdfDocument</code></td>
                                <td>Generated PDF document object</td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-3 mb-4'>
            <div class='col-md-4'>
                <div class='alert alert-success mb-0'>
                    <h6 class='alert-heading'>✓ Supported Features</h6>
                    <ul class='mb-0 small'>
                        <li>HTML5 semantic tags</li>
                        <li>CSS3 with Flexbox/Grid</li>
                        <li>JavaScript execution</li>
                        <li>External stylesheets</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-info mb-0'>
                    <h6 class='alert-heading'>ⓘ Rendering Engine</h6>
                    <ul class='mb-0 small'>
                        <li>Chrome V8 Engine</li>
                        <li>98% browser fidelity</li>
                        <li>Sub-second rendering</li>
                        <li>Async/await support</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-warning mb-0'>
                    <h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
                    <ul class='mb-0 small'>
                        <li>Complex API structure</li>
                        <li>Limited CSS3 support</li>
                        <li>No native JavaScript</li>
                        <li>Requires configuration</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Code Example Comparison</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF (Simple)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
                        </div>
                        <div class='badge bg-success mt-2'>3 Lines</div>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-warning'>ExpertPDF (Complex)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
                        </div>
                        <div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
                    </div>
                </div>
            </div>
            <div class='card-footer text-muted'>
                <small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(technicalDocs);
pdf.SaveAs("technical-documentation.pdf");
Imports IronPdf

Dim renderer = New ChromePdfRenderer()

Dim technicalDocs As String = "
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_192___ rel='stylesheet'>
    <style>
        .code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
        .api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
        @media print { .card, .alert { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-dark text-white'>
                <h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
            </div>
            <div class='card-body'>
                <h4>RenderHtmlAsPdf() Method</h4>
                <p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>

                <div class='code-block mb-3'>
                    <code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
                </div>

                <div class='row mt-4'>
                    <div class='col-md-6'>
                        <h5 class='text-primary'>Parameters</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>htmlContent</code></td>
                                <td>String containing HTML to convert</td>
                            </tr>
                        </table>
                    </div>
                    <div class='col-md-6'>
                        <h5 class='text-success'>Returns</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>PdfDocument</code></td>
                                <td>Generated PDF document object</td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-3 mb-4'>
            <div class='col-md-4'>
                <div class='alert alert-success mb-0'>
                    <h6 class='alert-heading'>✓ Supported Features</h6>
                    <ul class='mb-0 small'>
                        <li>HTML5 semantic tags</li>
                        <li>CSS3 with Flexbox/Grid</li>
                        <li>JavaScript execution</li>
                        <li>External stylesheets</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-info mb-0'>
                    <h6 class='alert-heading'>ⓘ Rendering Engine</h6>
                    <ul class='mb-0 small'>
                        <li>Chrome V8 Engine</li>
                        <li>98% browser fidelity</li>
                        <li>Sub-second rendering</li>
                        <li>Async/await support</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-warning mb-0'>
                    <h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
                    <ul class='mb-0 small'>
                        <li>Complex API structure</li>
                        <li>Limited CSS3 support</li>
                        <li>No native JavaScript</li>
                        <li>Requires configuration</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Code Example Comparison</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF (Simple)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
                        </div>
                        <div class='badge bg-success mt-2'>3 Lines</div>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-warning'>ExpertPDF (Complex)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
                        </div>
                        <div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
                    </div>
                </div>
            </div>
            <div class='card-footer text-muted'>
                <small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
            </div>
        </div>
    </div>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(technicalDocs)
pdf.SaveAs("technical-documentation.pdf")
$vbLabelText   $csharpLabel

Çıktı: Bootstrap 5 kartları, uyarıları, tabloları ve kod blokları içeren profesyonel bir teknik dokümantasyon PDF'si. IronPDF, tüm tipografiyi, alan kullanımı araçlarını ve ızgara düzenlerini doğru bir şekilde render eder, üstün dokümantasyon oluşturma yeteneklerini gösterir.

Karmaşık Düzenli Finansal Raportlar Nasıl Oluştururum?

Finansal raportlama, kesin tablo formatlaması ve hesaplamalar gerektirir. Bu örnek, IronPDF'nin CSS Grid ve dinamik JavaScript ile karmaşık finansal düzen render yeteneklerini gösterir. PDF icinde JavaScript kılavuzuna, including özelleştirilmiş JavaScript yürütme gibi ayrıntılar için başvurun. Finansal belgeler, dosya optimizasyonu için PDF sıkıştırma ve uyumluluk için metadata yönetimi gerektirebilir. PDF'lerde grafik çizim kılavuzu veri görselleştirmeyi kolaylaştırır.

using IronPdf;

var renderer = new ChromePdfRenderer();
// Enable JavaScript for dynamic calculations
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute

string financialReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <style>
        @page { size: A4; margin: 20mm; }
        body { font-family: Arial, sans-serif; line-height: 1.6; }
        .header { text-align: center; margin-bottom: 30px; }
        .financial-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; margin-bottom: 20px; }
        .grid-header { background: #2c3e50; color: white; padding: 10px; font-weight: bold; }
        .grid-row { padding: 10px; border-bottom: 1px solid #ddd; }
        .grid-row:hover { background: #f9f9f9; }
        .amount { text-align: right; font-family: 'Courier New', monospace; }
        .positive { color: #27ae60; }
        .negative { color: #e74c3c; }
        .total-row { background: #ecf0f1; font-weight: bold; margin-top: 10px; }
        .footer-note { font-size: 0.8em; color: #666; margin-top: 30px; text-align: center; }
        @media print { 
            .grid-row:hover { background: transparent; }
            .financial-grid { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='header'>
        <h1>Quarterly Financial Report</h1>
        <p>Q4 2023 - Consolidated Statement</p>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Revenue Stream</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>Software Licenses</div>
        <div class='grid-row amount'>$2,150,000</div>
        <div class='grid-row amount positive'>$2,875,000</div>

        <div class='grid-row'>Support Services</div>
        <div class='grid-row amount'>$850,000</div>
        <div class='grid-row amount positive'>$975,000</div>

        <div class='grid-row'>Consulting</div>
        <div class='grid-row amount'>$425,000</div>
        <div class='grid-row amount negative'>$380,000</div>

        <div class='grid-row total-row'>Total Revenue</div>
        <div class='grid-row total-row amount'>$3,425,000</div>
        <div class='grid-row total-row amount positive' id='total'>$4,230,000</div>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Operating Expenses</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>R&D</div>
        <div class='grid-row amount'>$1,200,000</div>
        <div class='grid-row amount'>$1,350,000</div>

        <div class='grid-row'>Sales & Marketing</div>
        <div class='grid-row amount'>$800,000</div>
        <div class='grid-row amount'>$950,000</div>

        <div class='grid-row'>General & Admin</div>
        <div class='grid-row amount'>$400,000</div>
        <div class='grid-row amount'>$425,000</div>

        <div class='grid-row total-row'>Total Expenses</div>
        <div class='grid-row total-row amount'>$2,400,000</div>
        <div class='grid-row total-row amount'>$2,725,000</div>
    </div>

    <script>
        // Calculate growth percentage
        const q3Total = 3425000;
        const q4Total = 4230000;
        const growth = ((q4Total - q3Total) / q3Total * 100).toFixed(1);

        // Add growth indicator
        const totalEl = document.getElementById('total');
        totalEl.innerHTML += ` <small>(+${growth}%)</small>`;
    </script>

    <div class='footer-note'>
        <p>This report was generated using IronPDF's advanced rendering engine.<br>
        All financial figures are in USD. Report generated on: <span id='date'></span></p>
    </div>

    <script>
        document.getElementById('date').textContent = new Date().toLocaleDateString();
    </script>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(financialReport);
pdf.SaveAs("financial-report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();
// Enable JavaScript for dynamic calculations
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute

string financialReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <style>
        @page { size: A4; margin: 20mm; }
        body { font-family: Arial, sans-serif; line-height: 1.6; }
        .header { text-align: center; margin-bottom: 30px; }
        .financial-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; margin-bottom: 20px; }
        .grid-header { background: #2c3e50; color: white; padding: 10px; font-weight: bold; }
        .grid-row { padding: 10px; border-bottom: 1px solid #ddd; }
        .grid-row:hover { background: #f9f9f9; }
        .amount { text-align: right; font-family: 'Courier New', monospace; }
        .positive { color: #27ae60; }
        .negative { color: #e74c3c; }
        .total-row { background: #ecf0f1; font-weight: bold; margin-top: 10px; }
        .footer-note { font-size: 0.8em; color: #666; margin-top: 30px; text-align: center; }
        @media print { 
            .grid-row:hover { background: transparent; }
            .financial-grid { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='header'>
        <h1>Quarterly Financial Report</h1>
        <p>Q4 2023 - Consolidated Statement</p>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Revenue Stream</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>Software Licenses</div>
        <div class='grid-row amount'>$2,150,000</div>
        <div class='grid-row amount positive'>$2,875,000</div>

        <div class='grid-row'>Support Services</div>
        <div class='grid-row amount'>$850,000</div>
        <div class='grid-row amount positive'>$975,000</div>

        <div class='grid-row'>Consulting</div>
        <div class='grid-row amount'>$425,000</div>
        <div class='grid-row amount negative'>$380,000</div>

        <div class='grid-row total-row'>Total Revenue</div>
        <div class='grid-row total-row amount'>$3,425,000</div>
        <div class='grid-row total-row amount positive' id='total'>$4,230,000</div>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Operating Expenses</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>R&D</div>
        <div class='grid-row amount'>$1,200,000</div>
        <div class='grid-row amount'>$1,350,000</div>

        <div class='grid-row'>Sales & Marketing</div>
        <div class='grid-row amount'>$800,000</div>
        <div class='grid-row amount'>$950,000</div>

        <div class='grid-row'>General & Admin</div>
        <div class='grid-row amount'>$400,000</div>
        <div class='grid-row amount'>$425,000</div>

        <div class='grid-row total-row'>Total Expenses</div>
        <div class='grid-row total-row amount'>$2,400,000</div>
        <div class='grid-row total-row amount'>$2,725,000</div>
    </div>

    <script>
        // Calculate growth percentage
        const q3Total = 3425000;
        const q4Total = 4230000;
        const growth = ((q4Total - q3Total) / q3Total * 100).toFixed(1);

        // Add growth indicator
        const totalEl = document.getElementById('total');
        totalEl.innerHTML += ` <small>(+${growth}%)</small>`;
    </script>

    <div class='footer-note'>
        <p>This report was generated using IronPDF's advanced rendering engine.<br>
        All financial figures are in USD. Report generated on: <span id='date'></span></p>
    </div>

    <script>
        document.getElementById('date').textContent = new Date().toLocaleDateString();
    </script>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(financialReport);
pdf.SaveAs("financial-report.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
' Enable JavaScript for dynamic calculations
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 500 ' Allow JS to execute

Dim financialReport As String = "
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <style>
        @page { size: A4; margin: 20mm; }
        body { font-family: Arial, sans-serif; line-height: 1.6; }
        .header { text-align: center; margin-bottom: 30px; }
        .financial-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; margin-bottom: 20px; }
        .grid-header { background: #2c3e50; color: white; padding: 10px; font-weight: bold; }
        .grid-row { padding: 10px; border-bottom: 1px solid #ddd; }
        .grid-row:hover { background: #f9f9f9; }
        .amount { text-align: right; font-family: 'Courier New', monospace; }
        .positive { color: #27ae60; }
        .negative { color: #e74c3c; }
        .total-row { background: #ecf0f1; font-weight: bold; margin-top: 10px; }
        .footer-note { font-size: 0.8em; color: #666; margin-top: 30px; text-align: center; }
        @media print { 
            .grid-row:hover { background: transparent; }
            .financial-grid { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='header'>
        <h1>Quarterly Financial Report</h1>
        <p>Q4 2023 - Consolidated Statement</p>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Revenue Stream</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>Software Licenses</div>
        <div class='grid-row amount'>$2,150,000</div>
        <div class='grid-row amount positive'>$2,875,000</div>

        <div class='grid-row'>Support Services</div>
        <div class='grid-row amount'>$850,000</div>
        <div class='grid-row amount positive'>$975,000</div>

        <div class='grid-row'>Consulting</div>
        <div class='grid-row amount'>$425,000</div>
        <div class='grid-row amount negative'>$380,000</div>

        <div class='grid-row total-row'>Total Revenue</div>
        <div class='grid-row total-row amount'>$3,425,000</div>
        <div class='grid-row total-row amount positive' id='total'>$4,230,000</div>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Operating Expenses</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>R&D</div>
        <div class='grid-row amount'>$1,200,000</div>
        <div class='grid-row amount'>$1,350,000</div>

        <div class='grid-row'>Sales & Marketing</div>
        <div class='grid-row amount'>$800,000</div>
        <div class='grid-row amount'>$950,000</div>

        <div class='grid-row'>General & Admin</div>
        <div class='grid-row amount'>$400,000</div>
        <div class='grid-row amount'>$425,000</div>

        <div class='grid-row total-row'>Total Expenses</div>
        <div class='grid-row total-row amount'>$2,400,000</div>
        <div class='grid-row total-row amount'>$2,725,000</div>
    </div>

    <script>
        // Calculate growth percentage
        const q3Total = 3425000;
        const q4Total = 4230000;
        const growth = ((q4Total - q3Total) / q3Total * 100).toFixed(1);

        // Add growth indicator
        const totalEl = document.getElementById('total');
        totalEl.innerHTML += ` <small>(+${growth}%)</small>`;
    </script>

    <div class='footer-note'>
        <p>This report was generated using IronPDF's advanced rendering engine.<br>
        All financial figures are in USD. Report generated on: <span id='date'></span></p>
    </div>

    <script>
        document.getElementById('date').textContent = new Date().toLocaleDateString();
    </script>
</body>
</html>"

Dim pdf = renderer.RenderHtmlAsPdf(financialReport)
pdf.SaveAs("financial-report.pdf")
$vbLabelText   $csharpLabel

Bu kod örnegi, demirPDF'nin geliştiricilerin CSS Grid düzenlerini, JavaScript yürütme ve baskı özel CSS kullanmasına izin verişini gösteriyor. Raporlara özel başlıklar ve altbilgiler ekleyin, arka planlar ve ön planlar uygulayın, markalama, güvenlik icin filigranlar ve kimlik doğrulama için dijital imzalar uygulayın. PDF raporları oluşturma kılavuzuna daha fazla ayrıntı için başvurun.

Birden Fazla PDF Dosyasini Tek Bir PDF'de Nasıl Birlestiririm?

Her iki kutuphane de birden fazla PDF'yi tek bir belgeye birleştirir, veriyi verimli iletim icin konsolide eder. PDF'leri birleştirme veya bölme kılavuzuna daha fazla ayrıntı için bakın. Çok sayfalı belgeler sayfa yönetimi veya çok sayfalı PDF'leri bölme gerektirebilir. Büyük dosya performansı için, asinok PDF oluşturmayı veya paralel işlemeyi düşünün. Iki veya daha fazla PDF'yi birleştirme örneği pratik uygulamayı sağlar. PDF'leri düzenlemek için IronPDF eksiksiz araçlar sunar.

IronPDF PDF Dosyalarını Nasıl Birleştirir?

Bu kod örnegi, IronPDF'nin geliştiricilerin HTML dizilerinden iki PDF oluşturup bunları birleştirmesine imkan sağlar. Basit yaklaşım ek ayar seçeneği sunar. Birleşik belgelerde sayfa numaraları ve sayfa kesikleri için ilgili kılavuzlara bakınız. Ayrıca PDF'ler arasında sayfaları kopyalayarak ayrıntılı kontrol sağlar. Formlar için, form yönetimi ve form düzenleme belgelerine bakın. Sayfa numaraları ve sayfa dönüşümleri örneği birleştirilmiş uygulama gösterir.

// Import the IronPdf library
using IronPdf;

// Define HTML strings to convert to PDF
var htmlA = @"<p> [PDF_A] </p>
        <p> [PDF_A] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_A] 2nd Page</p>";

var htmlB = @"<p> [PDF_B] </p>
        <p> [PDF_B] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_B] 2nd Page</p>";

// Initialize a new renderer
var renderer = new ChromePdfRenderer();

// Render HTML strings as PDFs
var pdfDocA = renderer.RenderHtmlAsPdf(htmlA);
var pdfDocB = renderer.RenderHtmlAsPdf(htmlB);

// Merge the PDF documents
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);

// Save the merged PDF
mergedPdf.SaveAs("Merged.pdf");
// Import the IronPdf library
using IronPdf;

// Define HTML strings to convert to PDF
var htmlA = @"<p> [PDF_A] </p>
        <p> [PDF_A] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_A] 2nd Page</p>";

var htmlB = @"<p> [PDF_B] </p>
        <p> [PDF_B] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_B] 2nd Page</p>";

// Initialize a new renderer
var renderer = new ChromePdfRenderer();

// Render HTML strings as PDFs
var pdfDocA = renderer.RenderHtmlAsPdf(htmlA);
var pdfDocB = renderer.RenderHtmlAsPdf(htmlB);

// Merge the PDF documents
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);

// Save the merged PDF
mergedPdf.SaveAs("Merged.pdf");
' Import the IronPdf library
Imports IronPdf

' Define HTML strings to convert to PDF
Private htmlA = "<p> [PDF_A] </p>
        <p> [PDF_A] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_A] 2nd Page</p>"

Private htmlB = "<p> [PDF_B] </p>
        <p> [PDF_B] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_B] 2nd Page</p>"

' Initialize a new renderer
Private renderer = New ChromePdfRenderer()

' Render HTML strings as PDFs
Private pdfDocA = renderer.RenderHtmlAsPdf(htmlA)
Private pdfDocB = renderer.RenderHtmlAsPdf(htmlB)

' Merge the PDF documents
Private mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB)

' Save the merged PDF
mergedPdf.SaveAs("Merged.pdf")
$vbLabelText   $csharpLabel

Merge metodu, cıkarılabilir nesne olarak birden fazla belge kabul eder. IronPDF PDF'leri Birleştirme Kod Örneği'ni göreceksiniz. Kapak sayfaları ekleme veya içindekiler tablosu oluştur için özel kılavuzlar. Ayrıca yeni içerik damgala veya ekler ekle. PDF'yi bölme ve sayfaları çıkarma örneği, ters işlemleri gösterir.

Birleşik PDF'lerdeki düzenlenebilir formlar, form alanı adlarının dizin numaraları ile eklenmiş olduğunu unutmayın. Form verilerini işleme kılavuzuna daha fazla ayrıntı için başvurun.

ExpertPDF PDF Dosyalarını Nasıl Birleştirir?

ExpertPDF, ayri bir kurulum gerektiren bir Birleştirme PDF bileşeni kullanır. AppendPDFFile yöntemi dosyaları PDFMerge nesnelerine ekler:

// Import the ExpertPdf.MergePdf namespace
using ExpertPdf.MergePdf;

// Initialize a new PDFMerge object
PDFMerge pdfMerge = new PDFMerge();
// Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf");
pdfMerge.AppendPDFFile("html-to-pdf.pdf");
// Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf");
// Import the ExpertPdf.MergePdf namespace
using ExpertPdf.MergePdf;

// Initialize a new PDFMerge object
PDFMerge pdfMerge = new PDFMerge();
// Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf");
pdfMerge.AppendPDFFile("html-to-pdf.pdf");
// Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf");
' Import the ExpertPdf.MergePdf namespace
Imports ExpertPdf.MergePdf

' Initialize a new PDFMerge object
Private pdfMerge As New PDFMerge()
' Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf")
pdfMerge.AppendPDFFile("html-to-pdf.pdf")
' Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf")
$vbLabelText   $csharpLabel

IronPDF perde arkasında daha verimli birleştirme algoritmaları kullanır. Esliksiz calisma icin IronPDF'nin asinok PDF oluşturmasını ve çok çekirdekli oluşturmasını kullanmayı düşünün.

Belgeleri Organize Ederek Gelişmiş PDF Birleştirme Nasıl Uygulanır?

Enterprise uygulamaları, PDF'leri birleştirirken yer imleri, sayfa düzenleme ve metadata korunumu gibi gelişmiş özellikler gerektirir. Bu örnek, yer imi yönetimi, metadata işleme ve belge düzenlemesini gösterir. Uyumluluk icin revizyon geçmişi, PDF/A dönüştürme ve PDF/UA erişilebilirliği uygulayın. Ana hatlar & yer imleri örneği, ek uygulama ayrıntıları sağlar. Metadata ayarlama & düzenleme kılavuzuna ve metadata görünürlüğü sorun giderme kılavuzuna daha fazla ayrıntı icin başvurun.

using IronPdf;
using System.Collections.Generic;
using System.Linq;

public class AdvancedPdfMerger
{
    public static void MergeDocumentsWithBookmarks()
    {
        var renderer = new ChromePdfRenderer();
        var documentsToMerge = new List<PdfDocument>();

        // Create chapter PDFs with proper structure
        string[] chapters = { "Introduction", "Technical Overview", "Implementation", "Conclusion" };

        foreach (var chapter in chapters)
        {
            string html = $@"
                <html>
                <head>
                    <style>
                        body {{ font-family: Georgia, serif; margin: 40px; }}
                        h1 {{ color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }}
                        .chapter-number {{ color: #7f8c8d; font-size: 0.8em; }}
                    </style>
                </head>
                <body>
                    <h1><span class='chapter-number'>Chapter {Array.IndexOf(chapters, chapter) + 1}</span><br>{chapter}</h1>
                    <p>This is the content for the {chapter} chapter. In a real document, this would contain 
                    extensive content, diagrams, and detailed explanations.</p>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor 
                    incididunt ut labore et dolore magna aliqua.</p>
                </body>
                </html>";

            var pdf = renderer.RenderHtmlAsPdf(html);

            // Add metadata to each chapter
            pdf.MetaData.Title = $"Chapter: {chapter}";
            pdf.MetaData.Author = "Technical Documentation Team";
            pdf.MetaData.Subject = "Enterprise PDF Generation";

            documentsToMerge.Add(pdf);
        }

        // Create a table of contents
        string tocHtml = @"
            <html>
            <head>
                <style>
                    body { font-family: Georgia, serif; margin: 40px; }
                    h1 { text-align: center; color: #2c3e50; margin-bottom: 40px; }
                    .toc-entry { margin: 15px 0; font-size: 1.1em; }
                    .toc-entry a { text-decoration: none; color: #3498db; }
                    .page-number { float: right; color: #7f8c8d; }
                </style>
            </head>
            <body>
                <h1>Table of Contents</h1>";

        int pageNumber = 2; // Starting after TOC page
        foreach (var chapter in chapters)
        {
            tocHtml += $@"
                <div class='toc-entry'>
                    <a href='#'>Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}</a>
                    <span class='page-number'>{pageNumber}</span>
                </div>";
            pageNumber += 2; // Assuming each chapter is 2 pages
        }

        tocHtml += @"
            </body>
            </html>";

        var tocPdf = renderer.RenderHtmlAsPdf(tocHtml);

        // Merge all documents with TOC first
        var allDocuments = new List<PdfDocument> { tocPdf };
        allDocuments.AddRange(documentsToMerge);

        var finalPdf = PdfDocument.Merge(allDocuments);

        // Add bookmarks for navigation
        finalPdf.BookMarks.AddBookMarkAtStart("Table of Contents", 0);
        int currentPage = 1; // After TOC
        foreach (var chapter in chapters)
        {
            finalPdf.BookMarks.AddBookMarkAtStart($"Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}", currentPage);
            currentPage += 2;
        }

        // Set document properties
        finalPdf.MetaData.Title = "Complete Technical Documentation";
        finalPdf.MetaData.Keywords = "IronPDF, Documentation, Enterprise, .NET";
        finalPdf.MetaData.CreationDate = System.DateTime.Now;

        // Add page numbers to footer
        finalPdf.AddTextFooters("Page {page} of {total-pages}", 
            new ChromePdfRenderer.ChromePdfRenderOptions() 
            { 
                MarginBottom = 20,
                MarginLeft = 50,
                MarginRight = 50
            });

        finalPdf.SaveAs("advanced-merged-document.pdf");
    }
}
using IronPdf;
using System.Collections.Generic;
using System.Linq;

public class AdvancedPdfMerger
{
    public static void MergeDocumentsWithBookmarks()
    {
        var renderer = new ChromePdfRenderer();
        var documentsToMerge = new List<PdfDocument>();

        // Create chapter PDFs with proper structure
        string[] chapters = { "Introduction", "Technical Overview", "Implementation", "Conclusion" };

        foreach (var chapter in chapters)
        {
            string html = $@"
                <html>
                <head>
                    <style>
                        body {{ font-family: Georgia, serif; margin: 40px; }}
                        h1 {{ color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }}
                        .chapter-number {{ color: #7f8c8d; font-size: 0.8em; }}
                    </style>
                </head>
                <body>
                    <h1><span class='chapter-number'>Chapter {Array.IndexOf(chapters, chapter) + 1}</span><br>{chapter}</h1>
                    <p>This is the content for the {chapter} chapter. In a real document, this would contain 
                    extensive content, diagrams, and detailed explanations.</p>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor 
                    incididunt ut labore et dolore magna aliqua.</p>
                </body>
                </html>";

            var pdf = renderer.RenderHtmlAsPdf(html);

            // Add metadata to each chapter
            pdf.MetaData.Title = $"Chapter: {chapter}";
            pdf.MetaData.Author = "Technical Documentation Team";
            pdf.MetaData.Subject = "Enterprise PDF Generation";

            documentsToMerge.Add(pdf);
        }

        // Create a table of contents
        string tocHtml = @"
            <html>
            <head>
                <style>
                    body { font-family: Georgia, serif; margin: 40px; }
                    h1 { text-align: center; color: #2c3e50; margin-bottom: 40px; }
                    .toc-entry { margin: 15px 0; font-size: 1.1em; }
                    .toc-entry a { text-decoration: none; color: #3498db; }
                    .page-number { float: right; color: #7f8c8d; }
                </style>
            </head>
            <body>
                <h1>Table of Contents</h1>";

        int pageNumber = 2; // Starting after TOC page
        foreach (var chapter in chapters)
        {
            tocHtml += $@"
                <div class='toc-entry'>
                    <a href='#'>Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}</a>
                    <span class='page-number'>{pageNumber}</span>
                </div>";
            pageNumber += 2; // Assuming each chapter is 2 pages
        }

        tocHtml += @"
            </body>
            </html>";

        var tocPdf = renderer.RenderHtmlAsPdf(tocHtml);

        // Merge all documents with TOC first
        var allDocuments = new List<PdfDocument> { tocPdf };
        allDocuments.AddRange(documentsToMerge);

        var finalPdf = PdfDocument.Merge(allDocuments);

        // Add bookmarks for navigation
        finalPdf.BookMarks.AddBookMarkAtStart("Table of Contents", 0);
        int currentPage = 1; // After TOC
        foreach (var chapter in chapters)
        {
            finalPdf.BookMarks.AddBookMarkAtStart($"Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}", currentPage);
            currentPage += 2;
        }

        // Set document properties
        finalPdf.MetaData.Title = "Complete Technical Documentation";
        finalPdf.MetaData.Keywords = "IronPDF, Documentation, Enterprise, .NET";
        finalPdf.MetaData.CreationDate = System.DateTime.Now;

        // Add page numbers to footer
        finalPdf.AddTextFooters("Page {page} of {total-pages}", 
            new ChromePdfRenderer.ChromePdfRenderOptions() 
            { 
                MarginBottom = 20,
                MarginLeft = 50,
                MarginRight = 50
            });

        finalPdf.SaveAs("advanced-merged-document.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq

Public Class AdvancedPdfMerger
    Public Shared Sub MergeDocumentsWithBookmarks()
        Dim renderer As New ChromePdfRenderer()
        Dim documentsToMerge As New List(Of PdfDocument)()

        ' Create chapter PDFs with proper structure
        Dim chapters As String() = {"Introduction", "Technical Overview", "Implementation", "Conclusion"}

        For Each chapter In chapters
            Dim html As String = $"
                <html>
                <head>
                    <style>
                        body {{ font-family: Georgia, serif; margin: 40px; }}
                        h1 {{ color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }}
                        .chapter-number {{ color: #7f8c8d; font-size: 0.8em; }}
                    </style>
                </head>
                <body>
                    <h1><span class='chapter-number'>Chapter {Array.IndexOf(chapters, chapter) + 1}</span><br>{chapter}</h1>
                    <p>This is the content for the {chapter} chapter. In a real document, this would contain 
                    extensive content, diagrams, and detailed explanations.</p>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor 
                    incididunt ut labore et dolore magna aliqua.</p>
                </body>
                </html>"

            Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

            ' Add metadata to each chapter
            pdf.MetaData.Title = $"Chapter: {chapter}"
            pdf.MetaData.Author = "Technical Documentation Team"
            pdf.MetaData.Subject = "Enterprise PDF Generation"

            documentsToMerge.Add(pdf)
        Next

        ' Create a table of contents
        Dim tocHtml As String = "
            <html>
            <head>
                <style>
                    body { font-family: Georgia, serif; margin: 40px; }
                    h1 { text-align: center; color: #2c3e50; margin-bottom: 40px; }
                    .toc-entry { margin: 15px 0; font-size: 1.1em; }
                    .toc-entry a { text-decoration: none; color: #3498db; }
                    .page-number { float: right; color: #7f8c8d; }
                </style>
            </head>
            <body>
                <h1>Table of Contents</h1>"

        Dim pageNumber As Integer = 2 ' Starting after TOC page
        For Each chapter In chapters
            tocHtml += $"
                <div class='toc-entry'>
                    <a href='#'>Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}</a>
                    <span class='page-number'>{pageNumber}</span>
                </div>"
            pageNumber += 2 ' Assuming each chapter is 2 pages
        Next

        tocHtml += "
            </body>
            </html>"

        Dim tocPdf As PdfDocument = renderer.RenderHtmlAsPdf(tocHtml)

        ' Merge all documents with TOC first
        Dim allDocuments As New List(Of PdfDocument) From {tocPdf}
        allDocuments.AddRange(documentsToMerge)

        Dim finalPdf As PdfDocument = PdfDocument.Merge(allDocuments)

        ' Add bookmarks for navigation
        finalPdf.BookMarks.AddBookMarkAtStart("Table of Contents", 0)
        Dim currentPage As Integer = 1 ' After TOC
        For Each chapter In chapters
            finalPdf.BookMarks.AddBookMarkAtStart($"Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}", currentPage)
            currentPage += 2
        Next

        ' Set document properties
        finalPdf.MetaData.Title = "Complete Technical Documentation"
        finalPdf.MetaData.Keywords = "IronPDF, Documentation, Enterprise, .NET"
        finalPdf.MetaData.CreationDate = DateTime.Now

        ' Add page numbers to footer
        finalPdf.AddTextFooters("Page {page} of {total-pages}",
            New ChromePdfRenderer.ChromePdfRenderOptions() With {
                .MarginBottom = 20,
                .MarginLeft = 50,
                .MarginRight = 50
            })

        finalPdf.SaveAs("advanced-merged-document.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Bu ileri düzey uygulama, yer imi yönetimi, metadata işleme ve sayfa numaralandırma gösterir. PDF'leri düzenleme kılavuzuna daha fazla ayrıntı için başvurun. Birleştikten sonra PDF sıkıştırma tekniklerini araştırın. Guvenlik icin, sifre korumalari ve sifreleme uygulayin. Klasik metin başlık ve altbilgileri ekleme örneği, biçimlendirme seçenekleri sağlar. Ek özellikler icin, sayfa numaraları ekle ve içindekiler tablosu ekle kılavuzlarını keşfedin. Şifreler, güvenlik ve metadata örneği entegre uygulama gösterir.

Görüntüleri PDF'ye Nasıl Dönüştürürüm?

IronPDF, ExpertPDF'de bulunmayan bir özellik olarak çeşitli görüntüleri PDF'ye dönüştürür. Ancak, ExpertPDF görüntüleri PDF'lerden çıkarır ve PDF'leri görüntülere dönüştürür; bu yetenekler IronPDF'de de mevcuttur. Daha fazla bilgi için görüntüden PDF'ye rehberine bakın. IronPDF, PDF'leri görüntülere rasterleştirmeyi ve metin ve görüntüleri çıkarmayı destekler. Gelişmiş senaryolar için, metin ve bit eşlem çizin veya çizgiler ve dikdörtgenler çizin. Görüntüden PDF'ye örneği pratik uygulamayı gösterir. Görüntü kalitesi için, kalite kaybı olmadan PDF'yi görüntüye dönüştürme örneğine bakın.

IronPDF Resimleri PDF'e Nasıl Dönüştürür?

Görüntülerden PDF oluşturma ImageToPdfConverter sınıfını kullanır. Görüntüler her klasörden yüklenir ve çok sayfalı TIFF dosyaları dahil olmak üzere çeşitli formatları destekler. Ayrıca, varolan PDF'lere görüntü ekleyin veya SVG grafikleri ile çalışın. Bellek verimliliği için görüntüleri MemoryStream kullanarak rasterleştirin. Özel PDF boyutu örneği yerleşim kontrolüne yardımcı olur.

// Import the IronPdf namespace
using IronPdf;

// Specify the folder containing the image files
var imageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\assets")
                  .Where(file => file.EndsWith(".jpg") || file.EndsWith(".jpeg"));

// Convert the images to a PDF document
var pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles);
// Save the PDF document
pdfDocument.SaveAs(@"C:\project\composite.pdf");
// Import the IronPdf namespace
using IronPdf;

// Specify the folder containing the image files
var imageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\assets")
                  .Where(file => file.EndsWith(".jpg") || file.EndsWith(".jpeg"));

// Convert the images to a PDF document
var pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles);
// Save the PDF document
pdfDocument.SaveAs(@"C:\project\composite.pdf");
' Import the IronPdf namespace
Imports IronPdf

' Specify the folder containing the image files
Private imageFiles = System.IO.Directory.EnumerateFiles("C:\project\assets").Where(Function(file) file.EndsWith(".jpg") OrElse file.EndsWith(".jpeg"))

' Convert the images to a PDF document
Private pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles)
' Save the PDF document
pdfDocument.SaveAs("C:\project\composite.pdf")
$vbLabelText   $csharpLabel

Görüntüleri PDF'ye dönüştürmenin ötesinde, IronPDF taranan belgeleri ve iş belgelerini görüntülere rasterleştirerek dönüştürür. Kütüphane ayrıca çeşitli dosya türlerinden görüntüleri çıkarır. Bellek işlemleri için MemoryStream kullanarak görüntülere rasterleştirme rehberine bakın. Büyük görüntüler için, ImageToPDF dosya boyutu optimizasyonunu düşünün. Dikey ve yatay yönlendirme örneği sayfa ayarına yardımcı olur. Gelişmiş görüntü işleme için, bit eşlemleri ve görüntüleri gömme örneğine bakın.

Gelişmiş Görüntüden PDF'ye Dönüşümleri Yerleşim Kontrolü ile Nasıl Oluşturabilirim?

Kontrollü görüntü yerleştirme ve profesyonel yerleşimler için, bu fotoğraf albümü örneği görüntü gömme ve yerleşim oluşturmayı gösterir. Bulut depolama için Azure Blob Storage görüntüleri rehberine bakın. Gri tonlama örneği görüntü işleme seçeneklerini gösterir:

using IronPdf;
using System.IO;

public class PhotoAlbumCreator
{
    public static void CreatePhotoAlbum(string imagesFolder, string outputPath)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    .album-title { text-align: center; font-size: 2em; margin-bottom: 30px; color: #2c3e50; }
                    .photo-container { margin-bottom: 30px; text-align: center; page-break-inside: avoid; }
                    .photo { max-width: 100%; max-height: 500px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
                    .caption { margin-top: 10px; font-style: italic; color: #666; }
                    .page-break { page-break-after: always; }
                </style>
            </head>
            <body>
                <h1 class='album-title'>My Photo Album</h1>";

        var imageFiles = Directory.GetFiles(imagesFolder, "*.*")
            .Where(file => new[] { ".jpg", ".jpeg", ".png", ".gif" }
            .Contains(Path.GetExtension(file).ToLower()))
            .ToList();

        for (int i = 0; i < imageFiles.Count; i++)
        {
            string base64Image = Convert.ToBase64String(File.ReadAllBytes(imageFiles[i]));
            string fileName = Path.GetFileNameWithoutExtension(imageFiles[i]);

            htmlContent += $@"
                <div class='photo-container'>
                    <img class='photo' src='data:image/jpeg;base64,{base64Image}' alt='{fileName}'>
                    <div class='caption'>Photo {i + 1}: {fileName}</div>
                </div>";

            // Add page break every 2 photos
            if ((i + 1) % 2 == 0 && i < imageFiles.Count - 1)
            {
                htmlContent += "<div class='page-break'></div>";
            }
        }

        htmlContent += @"
                <div style='text-align: center; margin-top: 40px; color: #999;'>
                    <small>Created with IronPDF - Total Photos: " + imageFiles.Count + @"</small>
                </div>
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs(outputPath);
    }
}

// Usage
PhotoAlbumCreator.CreatePhotoAlbum(@"C:\MyPhotos", @"C:\MyPhotoAlbum.pdf");
using IronPdf;
using System.IO;

public class PhotoAlbumCreator
{
    public static void CreatePhotoAlbum(string imagesFolder, string outputPath)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    .album-title { text-align: center; font-size: 2em; margin-bottom: 30px; color: #2c3e50; }
                    .photo-container { margin-bottom: 30px; text-align: center; page-break-inside: avoid; }
                    .photo { max-width: 100%; max-height: 500px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
                    .caption { margin-top: 10px; font-style: italic; color: #666; }
                    .page-break { page-break-after: always; }
                </style>
            </head>
            <body>
                <h1 class='album-title'>My Photo Album</h1>";

        var imageFiles = Directory.GetFiles(imagesFolder, "*.*")
            .Where(file => new[] { ".jpg", ".jpeg", ".png", ".gif" }
            .Contains(Path.GetExtension(file).ToLower()))
            .ToList();

        for (int i = 0; i < imageFiles.Count; i++)
        {
            string base64Image = Convert.ToBase64String(File.ReadAllBytes(imageFiles[i]));
            string fileName = Path.GetFileNameWithoutExtension(imageFiles[i]);

            htmlContent += $@"
                <div class='photo-container'>
                    <img class='photo' src='data:image/jpeg;base64,{base64Image}' alt='{fileName}'>
                    <div class='caption'>Photo {i + 1}: {fileName}</div>
                </div>";

            // Add page break every 2 photos
            if ((i + 1) % 2 == 0 && i < imageFiles.Count - 1)
            {
                htmlContent += "<div class='page-break'></div>";
            }
        }

        htmlContent += @"
                <div style='text-align: center; margin-top: 40px; color: #999;'>
                    <small>Created with IronPDF - Total Photos: " + imageFiles.Count + @"</small>
                </div>
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs(outputPath);
    }
}

// Usage
PhotoAlbumCreator.CreatePhotoAlbum(@"C:\MyPhotos", @"C:\MyPhotoAlbum.pdf");
Imports IronPdf
Imports System.IO
Imports System.Linq

Public Class PhotoAlbumCreator
    Public Shared Sub CreatePhotoAlbum(imagesFolder As String, outputPath As String)
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        renderer.RenderingOptions.MarginLeft = 20
        renderer.RenderingOptions.MarginRight = 20

        Dim htmlContent As String = "
            <!DOCTYPE html>
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    .album-title { text-align: center; font-size: 2em; margin-bottom: 30px; color: #2c3e50; }
                    .photo-container { margin-bottom: 30px; text-align: center; page-break-inside: avoid; }
                    .photo { max-width: 100%; max-height: 500px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
                    .caption { margin-top: 10px; font-style: italic; color: #666; }
                    .page-break { page-break-after: always; }
                </style>
            </head>
            <body>
                <h1 class='album-title'>My Photo Album</h1>"

        Dim imageFiles = Directory.GetFiles(imagesFolder, "*.*").Where(Function(file) New String() {".jpg", ".jpeg", ".png", ".gif"}.Contains(Path.GetExtension(file).ToLower())).ToList()

        For i As Integer = 0 To imageFiles.Count - 1
            Dim base64Image As String = Convert.ToBase64String(File.ReadAllBytes(imageFiles(i)))
            Dim fileName As String = Path.GetFileNameWithoutExtension(imageFiles(i))

            htmlContent += $"
                <div class='photo-container'>
                    <img class='photo' src='data:image/jpeg;base64,{base64Image}' alt='{fileName}'>
                    <div class='caption'>Photo {i + 1}: {fileName}</div>
                </div>"

            ' Add page break every 2 photos
            If (i + 1) Mod 2 = 0 AndAlso i < imageFiles.Count - 1 Then
                htmlContent += "<div class='page-break'></div>"
            End If
        Next

        htmlContent += "
                <div style='text-align: center; margin-top: 40px; color: #999;'>
                    <small>Created with IronPDF - Total Photos: " & imageFiles.Count & "</small>
                </div>
            </body>
            </html>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs(outputPath)
    End Sub
End Class

' Usage
PhotoAlbumCreator.CreatePhotoAlbum("C:\MyPhotos", "C:\MyPhotoAlbum.pdf")
$vbLabelText   $csharpLabel

Bu kod örneği, IronPDF'in geliştiricilerin DataURI'leri ile görüntü gömmeyi uygulamasına, sayfa sonları yönetmesine ve profesyonel yerleşimler oluşturmasına nasıl izin verdiğini gösterir. Bulut görüntüleri için Azure Blob Storage görüntüleri rehberine bakın. Büyük dosyalar için, ImageToPDF dosya boyutu optimizasyonunu düşünün. Ayrıca, PDF nesnelerini ölçekleyin ve PDF nesnelerini çevirin için hassas konumlandırma. PDF'leri belleğe aktarma örneği bellek verimli iş akışlarına yardımcı olur. Toplu işlem için HTML içeriği etkin bir şekilde ekleme rehberine bakın.

Lisanslama ve Fiyat Seçenekleri Nelerdir?

IronPDF IronPDF web sitesinde bulunan ticari bir C# PDF kütüphanesidir. Özel geliştirme için ücretsizdir, ticari kullanım için lisanslıdır. Tek projeler, geliştiriciler, ajanslar ve şirketler için çeşitli lisanslar mevcuttur. SaaS ve OEM yeniden dağıtımını destekler. Uygulama detayları için lisans anahtarları kılavuzuna bakın. Dağıtım sırasında, doğru şekilde bir lisans anahtarı uygulayın. Web uygulamaları için, Web.config'de lisans anahtarlarını ayarlayın. Lisans sunucusuna bağlanamama sorunları için, sorun giderme rehberine bakın. Lisans anahtarlarının kullanımı rehberi tam uygulama detaylarını verir.

Visual Studio IDE Araçları menüsü .NET geliştirme projeleri için merkezi bağımlılık yönetimi sağlayan Paket Yöneticisi Konsolu ve Çözüm için NuGet Paketlerini Yönet dahil olmak üzere NuGet Paket Yöneticisi seçeneklerini gösteriyor

Tüm lisanslar 30 günlük para iade garantisi, bir yıl destek ve ürün güncellemeleri içerir. Süresiz lisanslar ekstra ücretler olmadan tek seferlik satın alım gerektirir. Tek geliştirici/proje için Lite paketi $799 fiyatından başlar. İlk yıldan sonraki destek için, lisans uzatmalarına bakın. Ek özellikler veya dağıtım için yükseltme yapmak için lisans yükseltmelerini kontrol edin. IronPDF ve IIS dağıtımı veya IronPDF'i yazılım programı yükleyicilerine ekleme için uzmanlaşmış rehberlere bakın. ClickOnce sürüm uyumsuzluğu kılavuzu dağıtım sorunlarıyla ilgili yardımcı olur.

ExpertPDF geliştirici başına veya şirket başına lisanslar sunar. ExpertPDF'i ücretsiz deneyin. Aşağıda lisans özelliklerini kontrol edin. ExpertPDF yerine IronPDF'in şeffaf lisanslama seçeneklerini çok daha değerli ve tam destek için düşünün.

NuGet Paket Yöneticisi arayüzü, HTML'den PDF'ye dönüştürücü (145K indirme) ve çeşitli özel PDF işleme araçlarını gösteren altı ExpertPDF kütüphanesiyle indirme istatistiklerini gösteriyor, hepsi sürüm 11.0.2.0'da

ExpertComponents Araç Takımı Tümü geliştirici lisansı $850'den başlar, ExpertPDF Araç Takımı $750'den başlar. Tek bileşenleri ayrı satın alın. ExpertPDF için Tam Fiyatlandırmaya bakın. Kurumsal gereksinimler için, IronPDF'in lisanslama daha iyi değer sunar ve tam özellikli paketler sunar.

Hangi PDF Kütüphanesini Seçmeliyim?

IronPDF internet bağlantısı olmadan HTML'yi PDF'ye yerel olarak renderlar, web tarayıcılarının standartlara uygun simülasyonunu sağlar. HTML renderi ticari baskıya uygun kesin, vektör formatında çıktı üretir. Ticari kullanım için lisanslıdır ve şeffaf fiyatlandırma mevcuttur. Kurumsal dağıtımlar için, IronPDF Docker desteği ve uzak motor yetenekleri sunar. IronPDF'i uzak konteyner olarak çalıştırma ve yerel vs uzaktan motor seçenekleri rehberlerine başvurun. Kütüphane, dağıtım boyutunu azaltmak için IronPdf.Slim sağlar ve paket boyutu optimizasyonunu destekler. IronPdf.Slim v2025.5.6 dağıtım istisnası rehberi belirli sürüm sorunlarında yardımcı olur.

ExpertPDF'nin HTML'den PDF'ye Dönüştürücü Kütüphanesi web sayfalarını ve HTML'i PDF'lere dönüştürür, ASP.NET'ten raporlar üretir ve sözleşmeleri elektronik olarak imzalar. Ek özellikler lisanslı olup ücretsiz olarak kullanılabilir. Android dağıtımı dahil olmak üzere tam platform desteği sağlayan IronPDF'in aksine, ExpertPDF Windows platformları ile sınırlıdır. Arkaplanda, IronPDF gelişmiş güvenlik özellikleri ve düzenli ürün güncellemeleri kullanır. Kilometre taşları genel görünümü, sürekli gelişimi gösteren Chrome render kilometre taşı, uyumluluk kilometre taşı ve stabilite ve performans kilometre taşı dahil olmak üzere önemli güncellemeleri kapsar.

Her iki kütüphane de PDF dosyalarını işler ve popüler formatlardan dönüştürürken, IronPDF ExpertPDF'e göre avantajlar sunar. IronPDF, güvenilir PDF üretimi, formatlama ve düzenleme özellikleriyle birlikte XML, görüntüler, AngularJS, Markdown ve RTF dahil daha geniş format aralıklarından dönüştürür. Bu, geliştiricilerin pratik geliştirme için verimlilik sağlamasını garantiler. Kütüphane, yüksek kapasiteli senaryolar için performans gelişimi ve async desteği ile başarılıdır. Eşzamanlı işleme için, IronPDF paralel PDF oluşturma ve çok iş parçacıklı oluşturmayı destekler. Optimizasyon detayları için ilk render yavaş sorun giderme rehberine bakın.

ExpertPDF ayrı bileşen yüklemesini gerektirir, IronPDF ise tüm fonksiyonaliteyi entegre eder. Bu, projelerin kapsamlı PDF özelliklerine ihtiyaç duyduğunda özellikle faydalıdır. IronPDF paketleri sürekli maliyetler olmadan ömür boyu lisanslar sunar, ExpertPDF ise yenilemeler gerektirir. Ek olarak, IronPDF hızlı başlangıçlar için kapsamlı belgelendirme, API referansı ve kod örnekleri sağlar. Demolar bölümü gerçek uygulamaları gösterir. Sorun gidermek için hızlı sorun giderme kılavuzuna bakın veya ilk işleme performansı ve GPU işlem optimizasyonunu inceleyin. En iyi desteği alma rehberi verimli sorun çözümünü sağlıyor.

Üretim dağıtımları için, IronPDF superior hata ayıklama yetenekleri, özel günlükleme ve kapsamlı sorun giderme rehberleri sunar. Kütüphane gelişmiş özellikleri destekler: PDF/A uyumluluğu, PDF/UA erişilebilirliği, HSM ile dijital imzalar ve güvenli taşıma için santizasyon. Kurumsal güvenlik için, IronPDF şifreleme ve şifre çözme, şifre koruması ve tam güvenlik özellikleri sunar. Gelişmiş özellikler arasında metin redaksiyonu, PDF'leri düzleştirme ve PDF versiyonlarını yönetme bulunmaktadır. PDF'yi base64'e dönüştürme kılavuzu veri iletimine yardımcı olur.

Destek ve geliştirme ile ilgili olarak, IronPDF mühendislik desteği ile kapsamlı rehberler sunar ve destek istekleri oluşturma için rehberler sağlar. Kütüphane ürün güncellemeleri ve kilometre taşları devam eden geliştirmeleri gösterir. .NET MAUI geliştiricileri için, IronPDF PDF görüntüleme yetenekleri ve XAML'den PDF'ye dönüşüm sunar. Blazor geliştiricilerinin Blazor Server entegrasyonu ve Razor'dan PDF'ye dönüşüm kullanmalarını sağlar. Kütüphane, MVC uygulamaları için CSHTML'den PDF'ye dönüşüm ve headless CSHTML renderlarını destekler. Blazor Sunucusu / WebAssembly kılavuzuna sınırlamalar için başvurun.

Özel kullanımlar için, IronPDF akıllı işleme için OpenAI entegrasyonu, grafikleri PDF'lerde oluşturma, MVC uygulamalarında CSHTML'den PDF'ye dönüşüm ve uluslararası diller ve UTF-8'i destekleme konularında mükemmeldir. Kütüphane karmaşık senaryoları ele alır: PDF'leri düzleştirme, hızlı web görünümü için lineerleştirme ve PDF formları oluşturma. PDF sayfalarını dönüştürme, PDF nesnelerini kaldırma ve özelleştirilmiş geçici yollar belirleme konularını keşfedin. IronPDF'in tam özellik genel görünümü, PDF oluşturma, PDF dönüştürme, PDF düzenleme, PDF'leri düzenleme ve PDF'leri güvenlik altına alma yeteneklerini gösterir. Ek özellikler arasında C#'ta PDF dosyalarını okuma, metin bulma ve değiştirme ve belirli PDF sayfalarını kaldırma bulunur.

Dağıtım düşünceleri için, yerel makinede Azure Fonksiyonları hata ayıklama, Azure günlük dosyaları yönetimi, AWS günlük dosyaları işlemi ve 502 kötü ağ geçidi hataları çözümlerine bakın. IronPDF, tam hata yönetimi sağlar: yola erişim reddedilme çözümleri, Chrome bağımlılıkları dağıtımı, PDFium bağımlılıkları dağıtımı ve kötü tahsis hatası çözümleri. Platforma özgü destek, Linux'a özgü rehberler, macOS yerel istisnaları ve Windows Nano Sunucu sınırlamaları içerir. Güvenlik özellikleri arasında Log4j güvenlik açığı durumu ve AWS Lambda'daki bölümlendirme hatalarına karşı koruma bulunur.

Lütfen dikkate alinExpertPDF, ilgili sahibi tarafından tescillenmiş bir markadır. Bu site ExpertPDF ile ilişkili, onaylanmış veya sponsor edilmiş değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerinin mülkiyetindedir. Karşılaştırmalar yalnızca bilgilendirme amaçlıdır ve yazım sırasında kamuya açık bilgileri yansıtır.

Sıkça Sorulan Sorular

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

HTML dizgilerini PDF'lere dönüştürmek için IronPDF'nin RenderHtmlAsPdf yöntemini kullanabilirsiniz. Ayrıca RenderHtmlFileAsPdf kullanarak HTML dosyalarının PDF'lere dönüştürülmesini de sağlayabilirsiniz.

IronPDF ve ExpertPDF arasındaki ana farklar nelerdir?

IronPDF, HTML'den PDF'ye oluşturma, düzenleme ve format dönüştürme dahil olmak üzere daha geniş format desteği ve entegre işlevsellik sunar. ExpertPDF, çıktı dosyası yapılandırmaları ve dijital imzalar için seçeneklerle birlikte basit HTML'den PDF'ye dönüşüm sağlar.

Bu kütüphaneleri kullanarak bir PDF'den metin ve resim çıkarabilir miyim?

Evet, IronPDF, PDF belgelerinden metin ve resim çıkarmanıza olanak tanır ve bu da PDF içeriğini .NET uygulamalarında manipüle etmeyi ve analiz etmeyi kolaylaştırır.

Bu PDF kütüphaneleri için hangi kurulum seçenekleri mevcuttur?

Hem IronPDF hem de ExpertPDF, Visual Studio'nun NuGet Paket Yöneticisi kullanılarak kurulabilir. Ek olarak, IronPDF'nin .DLL kütüphanesi IronPDF web sitesinden doğrudan indirilebilir.

Birden fazla PDF dosyasını tek bir belgede birleştirmek mümkün mü?

Evet, IronPDF birden fazla PDF'yi tek bir belgede birleştirmek için Birleştir metodunu sağlar. ExpertPDF ise PDFMerge bileşeniyle PDF'leri birleştirme sunar.

IronPDF, HTML'den PDF'ye dönüştürme için bir internet bağlantısına ihtiyaç duyuyor mu?

Hayır, IronPDF, HTML'den PDF'ye dönüştürme için bir internet bağlantısına ihtiyaç duymaz, böylece çevrimdışı uygulamalar için güvenilir bir seçenek olur.

IronPDF için mevcut lisanslama seçenekleri nelerdir?

IronPDF, tek proje, geliştirici, ajans ve kurumsal lisanslar dahil çeşitli lisans seçenekleri sunar. Tüm lisanslar sürekli olup, 30 gün para iade garantisi ve bir yıl destek ve güncellemeleri içerir.

ExpertPDF, PDF belgeleri için dijital imzaları ele alabilir mi?

Evet, ExpertPDF, PDF belgelerinin güvenli ve doğrulanmış bir şekilde dijital imzalanmasını destekler.

C# geliştiricileri PDF'lerle çalışırken hangi zorluklarla karşılaşır ve bu kütüphaneler nasıl yardımcı olur?

C# geliştiricileri genellikle PDF'leri okuma, yazma, oluşturma ve dönüştürme zorluklarıyla karşılaşır. IronPDF ve ExpertPDF gibi kütüphaneler, bu görevleri, HTML'den PDF'ye dönüştürme, PDF düzenleme ve daha fazlası için güçlü araçlar sunarak ve C# uygulamalarına kolay entegrasyon sağlayarak basitleştirir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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