IRONSOFTWAREHOME
VIDEOLAR

C# Kullanarak HTML'yi PDF'e Dönüştürmek İçin Java Script Kullanımı

Curtis Chau
Curtis Chau
Updated: 18 Mayıs 2026

DynamicPDF'den IronPDF'ye Neden Geçilmeli?

DynamicPDF'nin ürün parçalılığı, göç için yaygın bir etkendir. Lisanslama modelini anlamak, mevcut uygulamanızın gerçek maliyetini değerlendirmenize yardımcı olur.

Ürün Parçalanma Sorunu

DynamicPDF (ceTe Software), PDF işlevselliğini ayrı lisanslanmış paketler olarak sunar:

  1. DynamicPDF Core Suite (ceTe.DynamicPDF.CoreSuite.NET, v12.43.0): Generator, Birleştirici ve RaporYazıcı'yı paketler
  2. DynamicPDF HTML Converter (ceTe.DynamicPDF.HtmlConverter.NET, v3.3.0): HTML'den PDF'e ayrı bir eklenti
  3. DynamicPDF Converter (ceTe.DynamicPDF.Converter.NET, v3.32.0): Office ve 50+ dosya formatı dönüştürme
  4. DynamicPDF PrintManager (ceTe.DynamicPDF.Printing.NET): Programlı yazdırma
  5. DynamicPDF Rasterizer (ceTe.DynamicPDF.Rasterizer.NET): PDF'ten görüntüye dönüştürme
  6. DynamicPDF Viewer (ceTe.DynamicPDF.Viewer.NET): WinForms/WPF görüntüleyici kontrolü

Generator, Merger ve ReportWriter Core Suite'ye katlanır, ancak HTML render, rasterizasyon, yazdırma ve görüntüleme her biri hala ayrı bir satın alma gerektirir.IronPDF bu yetenekleri tek bir kütüphane ve lisansa birleştirir.

Mimari̇ Karşılaştırma

AspektDynamicPDFIronPDF
Ürün ModeliParçalanmış (5+ ürün)Hepsi bir arada kütüphane
LisanslamaBirden çok lisans gereklidirTek lisans
HTML'den PDF'yeAyrı eklenti satın almaDahili, Chromium tabanlı
CSS DesteğiSınırlı (eklenti gereklidir)Tam CSS3 (Flexbox/Grid ile)
API StiliKoordinat tabanlı konumlandırmaHTML/CSS + manipülasyon API
Öğrenme EğrisiDik (birden fazla API)Nazik (web teknolojileri)
Modern .NET.NET Standard 2.0 / .NET 6 / .NET 8 / .NET Framework 4.6.2.NET 6/7/8/9+ yerel

Kilit Göç Faydaları

  1. Tek Paket: Bir NuGet paketi, 3-5DynamicPDFpaketinin yerini alır
  2. Modern Renderlama: Krom motoru eski renderlamaya karşı
  3. Web Teknolojileri: Koordinat tabanlı konumlandırma yerine HTML/CSS kullanın
  4. Daha Basit API: Daha az kod, daha okunabilir, daha kolay bakım
  5. Ekstra Satın Alma Yok: HTML, birleştirme, güvenlik hepsi dahil

Migration'a Ön Hazırlık

Ön Koşullar

Ortamınızın bu gereksinimleri karşıladığından emin olun:

  • .NET Framework 4.6.2+ or .NET 6/7/8/9+
  • Visual Studio 2019+ veya C# eklentisi ile VS Code
  • NuGet Package Manager erişimi -IronPDF lisans anahtarı (ücretsiz deneme sürümü ironpdf.com adresinde mevcut)

###DynamicPDFKullanımını Denetleme

Çözüm dizininde bu komutları çalıştırarak tümDynamicPDFreferanslarını belirleyin:

# Find allDynamicPDFreferences
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep -i dynamic
SHELL

Aranacak yaygın paketler:

  • ceTe.DynamicPDF.CoreSuite.NET (Generator + Merger + ReportWriter)
  • ceTe.DynamicPDF.HtmlConverter.NET (HTML'den PDF'e eklentisi)
  • ceTe.DynamicPDF.Converter.NET (Office / çoklu-format PDF'e)
  • ceTe.DynamicPDF.Rasterizer.NET, ceTe.DynamicPDF.Printing.NET, ceTe.DynamicPDF.Viewer.NET

Paradigm Değişimini Anlama

DynamicPDF'den IronPDF'ye geçerken en önemli değişiklik, belge oluşturma için temel yaklaşımdır. DynamicPDF, bir sayfada öğeleri belirli X,Y koordinatlarına yerleştirdiğiniz koordinat tabanlı konumlandırma kullanır. IronPDF, web teknolojileri ile tasarım yapabileceğiniz HTML/CSS renderlamayı kullanır.

Bu paradigma değişikliği, Label, TextArea ve Table2 elemanlarını HTML eşdeğerlerine dönüştürmek anlamına gelir—genellikle daha okunabilir, sürdürülebilir kodla sonuçlanan bir değişim.

Adım Adım Geçiş Süreci

1. Adım: NuGet Paketlerini Güncelleyin

Gerçekten yüklü olanDynamicPDFpaketlerini kaldırın ve IronPDF ekleyin:

# RemoveDynamicPDFpackages (only those you actually have)
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET
dotnet remove package ceTe.DynamicPDF.Converter.NET
dotnet remove package ceTe.DynamicPDF.Rasterizer.NET
dotnet remove package ceTe.DynamicPDF.Printing.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

Adım 2: Ad Alanı Referanslarını Güncelleyin

DynamicPDF ad alanlarınıIronPDF ile değiştirin:

// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;

// Add this
using IronPdf;

Adım 3: Lisansı Yapılandırın

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Tam API Geçiş Referansı

Temel Sınıf Eşlemeleri

DynamicPDF SınıfıIronPDF Eşdeğeri
DocumentChromePdfRenderer
DocumentPdfDocument
PageHTML <div> ile sayfa kırılması
MergeDocumentPdfDocument.Merge()
HtmlConverterChromePdfRenderer

Sayfa Öğelerinin HTML Eşlemeleri

DynamicPDF SayfaElemanıIronPDF/HTML Eşdeğeri
Label<p>, <span>, <div>
TextArea<div>, CSS ile <p>
Image<img> etiketi
Table2HTML <table>
PageNumberingLabel{page} / {total-pages} yer tutucular

Anahtar API Haritalamaları

DynamicPDFIronPDF
Document + PageChromePdfRenderer
Label, TextAreaHTML <p>, <div>
Table2HTML <table>
MergeDocumentPdfDocument.Merge()
HtmlConverterChromePdfRenderer
document.Draw()pdf.SaveAs() / pdf.BinaryData
PageNumberingLabel %%CP%%{page} yer tutucu

Kod Göç Örnekleri

HTML'den PDF'ye Dönüşüm

HTML'den PDF'e dönüştürme, DynamicPDF'nin ayrı bir HtmlConverter eklentisi gereksinimi ile IronPDF'nin yerleşik Chromium rendere karşı gereksinimini gösterir.

DynamicPDF Uygulaması:

// NuGet: Install-Package ceTe.DynamicPDF.Converter.NET
// HTML-to-PDF is a separate add-on; CoreSuite alone does not include it.
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        HtmlConverter converter = new HtmlConverter(html);
        converter.Convert("output.pdf");
    }
}

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

IronPDF'nin ChromePdfRenderer, tam CSS3 desteği ile Chromium tabanlı rendering sunar, ayrı bir eklenti satın almayı gerektirmez. Daha fazla seçenek için, HTML'den PDF'e dokümantasyona bakın.

Birden Fazla PDF'yi Birleştirme

PDF birleştirme, DynamicPDF'nin MergeDocument sınıfı (Birleştirici ürün lisansı gerektirir) ile IronPDF'nin yerleşik statik Merge yöntemi arasındaki farkı gösterir.

DynamicPDF Uygulaması:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;

class Program
{
    static void Main()
    {
        MergeDocument document = new MergeDocument("document1.pdf");
        document.Append("document2.pdf");
        document.Draw("merged.pdf");
    }
}

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}

IronPDF'nin statik Merge metodu, birden fazla PdfDocument nesnesini doğrudan kabul eder. Daha fazla seçenek için PDF birleştirme belgelerine bakın.

PDF'lere Metin Ekleme

Metin yerleştirme, DynamicPDF'nin koordinat tabanlı Label elemanlarından IronPDF'nin HTML tabanlı TextStamper elemanlarına olan paradigma değişikliğini gösterir.

DynamicPDF Uygulaması:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Page page = new Page(PageSize.Letter);
        Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
        page.Elements.Add(label);
        document.Pages.Add(page);
        document.Draw("output.pdf");
    }
}

IronPDF Uygulaması:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalAlignment = VerticalAlignment.Top
        };
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}

IronPDF'nin TextStamper elemanı, koordinat tabanlı yerleştirme yerine hizaya dayalı konumlandırma sağlar, bu da mizanpajların farklı sayfa boyutlarına daha uyumlu hale gelmesini sağlar. Daha fazla seçenek için filigranlar ve damgalama belgelendirmesine bakın.

Tam Belge Oluşturma Örneği

Bu kapsamlı örnek, birden çok öğeliDynamicPDFbelgesini IronPDF'nin HTML yaklaşımına dönüştürmeyi gösterir.

DynamicPDF Uygulaması:

using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;

// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);

Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");

// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");

IronPDF Uygulaması:

using IronPdf;

var renderer = new ChromePdfRenderer();

// All features in one library
var html = @"
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>";

var invoice = renderer.RenderHtmlAsPdf(html);

// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");

Kritik Taşıma Notları

Koordinat Tabanlıdan HTML/CSS Konumlandırmaya

Temel paradigma değişikliği, X,Y koordinat konumlandırmasından CSS tabanlı düzenlere geçişi gerektirir:

//DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);

//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";

//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";

Sayfa Numaralandırma Söz Dizimi

DynamicPDF ve IronPDF sayfa numaraları için farklı yer tutucu sözdizimi kullanır:

//DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"

//IronPDF placeholders
"Page {page} of {total-pages}"
C#

Başlıklar ve Altbilgiler

DynamicPDF Template elemanlarınıIronPDFHtmlHeaderFooter elemanlarına dönüştürün:

//IronPDF header/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

Daha fazla başlık/altbilgi seçeneği için başlıklar ve altbilgiler belgesine bakın.

Güvenlik Ayarları

//IronPDF security
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";

Kapsamlı güvenlik seçenekleri için şifreleme belgelerine bakın.

Taşınma Sonrası Kontrollistesi

Kod taşımasını tamamladıktan sonra, aşağıdakileri doğrulayın:

  • Oluşturulan PDF'lerin görsel karşılaştırması
  • Metin konumlandırma ve düzeni doğrulayın
  • Tablo renderlama ve taşma testleri
  • Tüm sayfalarda başlıklar/altbilgiler doğrulayın
  • Form doldurma işlevselliğini test edin
  • Güvenlik/şifreleme doğrulayın
  • Performans kıyaslaması
  • KullanılmayanDynamicPDFlisans dosyalarını kaldırın
  • Belgeleri güncelleyin

Ek Kaynaklar


DynamicPDF'den IronPDF'ye geçiş, birden fazla ürün lisansını tek bir kütüphanede birleştirir ve koordinat tabanlı yerleştirmeyi Chromium'da HTML/CSS renderlaması ile değiştirir. Zaten web teknolojileri ile rahat olan ekipler genellikle ortaya çıkan kodu daha kolay sürdürülebilir bulur.

Lütfen dikkate alın: DynamicPDF, ilgili sahibinin tescilli markasıdır. Bu site, ceTe Software ile ilişkili, onaylanmış veya sponsorlu değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.
Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

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

Your trial license will be sent to your email address

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

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

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

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