using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
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:
DynamicPDF Core Suite (ceTe.DynamicPDF.CoreSuite.NET, v12.43.0): Generator, Birleştirici ve RaporYazıcı'yı paketler
DynamicPDF HTML Converter (ceTe.DynamicPDF.HtmlConverter.NET, v3.3.0): HTML'den PDF'e ayrı bir eklenti
DynamicPDF Converter (ceTe.DynamicPDF.Converter.NET, v3.32.0): Office ve 50+ dosya formatı dönüştürme
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.
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:
// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;
// Add this
using IronPdf;
// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;
// Add this
using IronPdf;
Imports IronPdf
$vbLabelText $csharpLabel
Adım 3: Lisansı Yapılandırın
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText $csharpLabel
Tam API Geçiş Referansı
Temel Sınıf Eşlemeleri
DynamicPDF Sınıfı
IronPDF Eşdeğeri
Document
ChromePdfRenderer
Document
PdfDocument
Page
HTML
ile sayfa kırılması
MergeDocument
PdfDocument.Merge()
HtmlConverter
ChromePdfRenderer
Sayfa Öğelerinin HTML Eşlemeleri
DynamicPDF SayfaElemanı
IronPDF/HTML Eşdeğeri
Label
<p>, <span>, <div>
TextArea
, CSS ile
Image
etiketi
Table2
HTML
PageNumberingLabel
{page} / {total-pages} yer tutucular
Anahtar API Haritalamaları
DynamicPDF
IronPDF
Document + Page
ChromePdfRenderer
Label, TextArea
HTML ,
Table2
HTML
MergeDocument
PdfDocument.Merge()
HtmlConverter
ChromePdfRenderer
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");
}
}
// 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");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Conversion
Class Program
Shared Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim converter As New HtmlConverter(html)
converter.Convert("output.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
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");
}
}
// 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");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
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");
}
}
// 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");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Merger
Class Program
Shared Sub Main()
Dim document As New MergeDocument("document1.pdf")
document.Append("document2.pdf")
document.Draw("merged.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
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");
}
}
// 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");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
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");
}
}
// 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");
}
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements
Class Program
Shared Sub Main()
Dim document As New Document()
Dim page As New Page(PageSize.Letter)
Dim label As New Label("Hello from DynamicPDF!", 0, 0, 504, 100)
page.Elements.Add(label)
document.Pages.Add(page)
document.Draw("output.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
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");
}
}
// 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");
}
}
Imports IronPdf
Imports IronPdf.Editing
Class Program
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>")
Dim textStamper As New TextStamper() With {
.Text = "Hello from IronPDF!",
.FontSize = 20,
.VerticalAlignment = VerticalAlignment.Top
}
pdf.ApplyStamp(textStamper)
pdf.SaveAs("output.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
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");
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");
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements
Imports ceTe.DynamicPDF.Merger
' Generation (requires Generator license)
Dim document As New Document()
Dim page As New Page(PageSize.A4)
Dim title As New Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18)
title.Align = TextAlign.Center
page.Elements.Add(title)
Dim table As 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)
Dim mergeDoc As New MergeDocument("cover.pdf")
mergeDoc.Append("invoice.pdf")
mergeDoc.Draw("final.pdf")
$vbLabelText $csharpLabel
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");
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");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
' All features in one library
Dim html As String = "
<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>"
Dim invoice As PdfDocument = renderer.RenderHtmlAsPdf(html)
' Merging included - no separate license
Dim cover As PdfDocument = PdfDocument.FromFile("cover.pdf")
Dim final As PdfDocument = PdfDocument.Merge(cover, invoice)
final.SaveAs("final.pdf")
$vbLabelText $csharpLabel
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>";
//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>";
' DynamicPDF- coordinate-based
Dim label = New Label("Hello World", 100, 200, 300, 50)
' IronPDF- CSS positioning (if absolute positioning needed)
Dim html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>"
' IronPDF- preferred approach (flow-based)
html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>"
$vbLabelText $csharpLabel
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}"
//DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"
//IronPDF placeholders
"Page {page} of {total-pages}"
'DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"
'IronPDF placeholders
"Page {page} of {total-pages}"
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ınDynamicPDF, 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, 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ı...