Fluid Templating vs IronPDF: Teknik Karşılaştırma Rehberi
.NET geliştiricilerinin dinamik olarak PDF belgeleri oluşturması gerektiğinde, teknoloji seçimi iş akışı verimliliğini ve çıktı kalitesini önemli ölçüde etkiler. Akıcı şablonlama, dinamik HTML içerik oluşturmak için popüler bir Liquid tabanlı motordur. Ancak, yerel PDF oluşturma yeteneğinin olmaması, PDF çıktısı gerektiğinde karmaşıklık ekler. IronPDF, hem şablonlama (HTML/CSS yoluyla) hem de yerleşik Chromium işleme motoru ile PDF oluşturma işlemlerini ele alan eksiksiz bir çözüm sunar.
Bu karşılaştırma, profesyonel geliştiricilerin ve mimarların .NET PDF ihtiyaçları için bilgiye dayalı kararlar almasına yardımcı olmak amacıyla her iki yaklaşımı da teknik olarak ilgili boyutlarda inceler.
Akıcı Şablonlamayı Anlamak
Fluid, dinamik metin çıktıları üretmek için öncelikle şablonlar kullanan Liquid şablonlama dilini uygulayan bir .NET kütüphanesidir. Kutuphanenin, geliştiricilere {{ }} degisken ciktisi ve donguler ve kosullular gibi kontrol akisi ifadeleri icin {% %} kullanarak, Liquid sozdizimi araciligiyla içerik ve sunum mantigini ayirmalarina olanak tanidigini unutmayiniz.
Fluid, sablon metinlerini ayrismak icin FluidParser ve veri degerlerini baglamak icin TemplateContext kullanir. RenderAsync() metodu, dosyalara yazilabilecek veya daha fazla islenebilecek HTML ciktilari uretir. Ancak,Fluiddoğrudan PDF oluşturmayı desteklemez—geliştiricilerin HTML çıktısını PDF formatına dönüştürmek için ayrı bir PDF kütüphanesi (örneğin wkhtmltopdf, PuppeteerSharp veya diğerleri) entegre etmesi gerekir.
Kritik bir husus, TemplateContext cekirdek guvenligi olmadigi icin bircok PDF belgesinin ayni anda oluşturuldugu eszamanli uygulamalarda dikkatli bir sekilde yonetilmesi gerektigidir.
IronPDF'yi Anlama
IronPDF, HTML içeriğinden doğrudan PDF oluşturma için eksiksiz bir çözüm sunan bir .NET PDF kütüphanesidir. Kütüphane, geliştiricilerin tanıdık HTML ve CSS kullanarak şablonlar yazmasına ve bunları doğrudan profesyonel PDF belgelerine dönüştürmesine olanak tanıyan modern bir Chromium işleme motoru kullanır.
IronPDF, ana rendere etme sinifi olarak ChromePdfRenderer kullanir, RenderHtmlAsPdf() HTML metinlerini alir ve kaydedilebilen, birlestirilebilen, guvence altina alinabilen veya daha fazla manipule edilebilen PdfDocument nesneleri uretir. İşleyici, iş parçacığı-güvenli olup, eşzamanlı PDF oluşturma senaryolarını basitleştirir.
Mimari ve Bağımlılık Karşılaştırması
Bu yaklaşımlar arasındaki temel fark, mimarilerinde ve gereken bağımlılıkların sayısında yatar.
| Bağlam | Fluid + PDF Kütüphanesi | IronPDF |
|---|---|---|
| Bagimliliklar | 2+ paket (Fluid + PDF kütüphanesi) | Tek paket |
| Şablonlama | Liquid sozdizimi ({{ }}) | C# dizgi enterpolasyonu veya Razor |
| PDF Oluşturma | Harici kütüphane gerekli | Yerleşik Chromium motoru |
| CSS Desteği | PDF kütüphanesine bağlı | Flexbox/Grid ile tam CSS3 |
| JavaScript | PDF kütüphanesine bağlı | Tam JavaScript desteği |
| İplik Güvenliği | TemplateContext iş parçacığı-güvenli değil | ChromePdfRenderer iş parçacığı-güvenli |
| Öğrenme Eğrisi | Liquid + PDF kütüphane API'si | HTML/CSS (web standartları) |
| Hata İşleme | İki hata kaynağı | Tek hata kaynağı |
Akıcı şablonlama, iki kütüphane bağımlılık zorluğunu ortaya koyar: şablonlama için Fluid'e ve dönüşüm için ayrı bir PDF kütüphanesine ihtiyaçınız var. Bu, iki yapılandırma setini, hata yönetim kalıplarını ve güncelleme döngülerini yönetmek anlamına gelir.IronPDFher iki yeteneği tek bir pakette birleştirir.
Kod Karşılaştırması: Ortak PDF İşlemleri
Temel HTML'den PDF Oluşturma
En temel işlem, iki yaklaşım arasındaki mimari farkı gösterir.
Akıcı Şablonlama:
// NuGet: Install-Package Fluid.Core
using Fluid;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var parser = new FluidParser();
var template = parser.Parse("<html><body><h1>Hello {{name}}!</h1></body></html>");
var context = new TemplateContext();
context.SetValue("name", "World");
var html = await template.RenderAsync(context);
//Fluidonly generates HTML - you'd need another library to convert to PDF
File.WriteAllText("output.html", html);
}
}// NuGet: Install-Package Fluid.Core
using Fluid;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var parser = new FluidParser();
var template = parser.Parse("<html><body><h1>Hello {{name}}!</h1></body></html>");
var context = new TemplateContext();
context.SetValue("name", "World");
var html = await template.RenderAsync(context);
//Fluidonly generates HTML - you'd need another library to convert to PDF
File.WriteAllText("output.html", html);
}
}Imports Fluid
Imports System.IO
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim parser As New FluidParser()
Dim template = parser.Parse("<html><body><h1>Hello {{name}}!</h1></body></html>")
Dim context As New TemplateContext()
context.SetValue("name", "World")
Dim html = Await template.RenderAsync(context)
'Fluid only generates HTML - you'd need another library to convert to PDF
File.WriteAllText("output.html", html)
End Function
End ModuleIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World!</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World!</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html = "<html><body><h1>Hello World!</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End ClassFluid, bir FluidParser oluşturmayi, sablon metnini ayrismayi, bir TemplateContext oluşturmayi, SetValue() ile degerleri ayarlamayi, RenderAsync() cagirmayi ve daha sonra ortaya cikan HTML'yi bir dosyaya yazmayi gerektirir. Koddaki yorumda acikca belirtilmiştir: "Fluid sadece HTML uretir - PDF'ye dönüştürmek icin baska bir kutuphane gerekir."
IronPDF bir ChromePdfRenderer oluşturur, HTML'yi dogrudan RenderHtmlAsPdf() aktarir ve PDF dosyasini uretmek icin SaveAs() cagirir—uc satirda tam bir uc-uc cozum.
Gelişmiş HTML işleme seçenekleri için HTML'yi PDF'ye dönüştürme kılavuzu keşfedin.
Dinamik Verilerle Fatura Şablonu
Fatura gibi iş belgeleri oluşturma, veri bağlama farklarını gösterir.
Akıcı Şablonlama:
// NuGet: Install-Package Fluid.Core
using Fluid;
using System;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var parser = new FluidParser();
var template = parser.Parse(@"
<html><body>
<h1>Invoice #{{invoiceNumber}}</h1>
<p>Date: {{date}}</p>
<p>Customer: {{customer}}</p>
<p>Total: ${{total}}</p>
</body></html>");
var context = new TemplateContext();
context.SetValue("invoiceNumber", "12345");
context.SetValue("date", DateTime.Now.ToShortDateString());
context.SetValue("customer", "John Doe");
context.SetValue("total", 599.99);
var html = await template.RenderAsync(context);
//Fluidoutputs HTML - requires additional PDF library
File.WriteAllText("invoice.html", html);
}
}// NuGet: Install-Package Fluid.Core
using Fluid;
using System;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var parser = new FluidParser();
var template = parser.Parse(@"
<html><body>
<h1>Invoice #{{invoiceNumber}}</h1>
<p>Date: {{date}}</p>
<p>Customer: {{customer}}</p>
<p>Total: ${{total}}</p>
</body></html>");
var context = new TemplateContext();
context.SetValue("invoiceNumber", "12345");
context.SetValue("date", DateTime.Now.ToShortDateString());
context.SetValue("customer", "John Doe");
context.SetValue("total", 599.99);
var html = await template.RenderAsync(context);
//Fluidoutputs HTML - requires additional PDF library
File.WriteAllText("invoice.html", html);
}
}Imports Fluid
Imports System
Imports System.IO
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim parser As New FluidParser()
Dim template = parser.Parse("
<html><body>
<h1>Invoice #{{invoiceNumber}}</h1>
<p>Date: {{date}}</p>
<p>Customer: {{customer}}</p>
<p>Total: ${{total}}</p>
</body></html>")
Dim context As New TemplateContext()
context.SetValue("invoiceNumber", "12345")
context.SetValue("date", DateTime.Now.ToShortDateString())
context.SetValue("customer", "John Doe")
context.SetValue("total", 599.99)
Dim html = Await template.RenderAsync(context)
'Fluid outputs HTML - requires additional PDF library
File.WriteAllText("invoice.html", html)
End Function
End ModuleIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var invoiceNumber = "12345";
var date = DateTime.Now.ToShortDateString();
var customer = "John Doe";
var total = 599.99;
var html = $@"
<html><body>
<h1>Invoice #{invoiceNumber}</h1>
<p>Date: {date}</p>
<p>Customer: {customer}</p>
<p>Total: ${total}</p>
</body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var invoiceNumber = "12345";
var date = DateTime.Now.ToShortDateString();
var customer = "John Doe";
var total = 599.99;
var html = $@"
<html><body>
<h1>Invoice #{invoiceNumber}</h1>
<p>Date: {date}</p>
<p>Customer: {customer}</p>
<p>Total: ${total}</p>
</body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
}
}Imports IronPdf
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim invoiceNumber As String = "12345"
Dim [date] As String = DateTime.Now.ToShortDateString()
Dim customer As String = "John Doe"
Dim total As Double = 599.99
Dim html As String = $"
<html><body>
<h1>Invoice #{invoiceNumber}</h1>
<p>Date: {[date]}</p>
<p>Customer: {customer}</p>
<p>Total: ${total}</p>
</body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
End Sub
End ModuleFluid, her degisken icin ({{invoiceNumber}}, {{date}}) context.SetValue() ile Liquid sozdizimini kullanir.IronPDFgelistiricilerin zaten bildigi C# dizesi interpolasyonu ($"{invoiceNumber}", $"{date}") kullanir—ogrenilecek ek bir sozdizimi yoktur.Fluidörneği, iş akışını tamamlamak için "ek PDF kütüphanesi gerektirdiğini" açıkça belirtir.
Dinamik Listeler ve Koleksiyonlar
Veri koleksiyonları üzerinde iterasyon, kontrol akışı farklarını gösterir.
Akıcı Şablonlama:
// NuGet: Install-Package Fluid.Core
using Fluid;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var parser = new FluidParser();
var template = parser.Parse(@"
<html><body>
<h1>{{title}}</h1>
<ul>
{% for item in items %}
<li>{{item}}</li>
{% endfor %}
</ul>
</body></html>");
var context = new TemplateContext();
context.SetValue("title", "My List");
context.SetValue("items", new[] { "Item 1", "Item 2", "Item 3" });
var html = await template.RenderAsync(context);
//Fluidgenerates HTML only - separate PDF conversion needed
File.WriteAllText("template-output.html", html);
}
}// NuGet: Install-Package Fluid.Core
using Fluid;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var parser = new FluidParser();
var template = parser.Parse(@"
<html><body>
<h1>{{title}}</h1>
<ul>
{% for item in items %}
<li>{{item}}</li>
{% endfor %}
</ul>
</body></html>");
var context = new TemplateContext();
context.SetValue("title", "My List");
context.SetValue("items", new[] { "Item 1", "Item 2", "Item 3" });
var html = await template.RenderAsync(context);
//Fluidgenerates HTML only - separate PDF conversion needed
File.WriteAllText("template-output.html", html);
}
}Imports Fluid
Imports System.Collections.Generic
Imports System.IO
Imports System.Threading.Tasks
Module Program
Async Function Main() As Task
Dim parser As New FluidParser()
Dim template = parser.Parse("
<html><body>
<h1>{{title}}</h1>
<ul>
{% for item in items %}
<li>{{item}}</li>
{% endfor %}
</ul>
</body></html>")
Dim context As New TemplateContext()
context.SetValue("title", "My List")
context.SetValue("items", New String() {"Item 1", "Item 2", "Item 3"})
Dim html = Await template.RenderAsync(context)
'Fluid generates HTML only - separate PDF conversion needed
File.WriteAllText("template-output.html", html)
End Function
End ModuleIronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var title = "My List";
var items = new[] { "Item 1", "Item 2", "Item 3" };
var html = $@"
<html><body>
<h1>{title}</h1>
<ul>";
foreach (var item in items)
{
html += $"<li>{item}</li>";
}
html += "</ul></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("template-output.pdf");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var title = "My List";
var items = new[] { "Item 1", "Item 2", "Item 3" };
var html = $@"
<html><body>
<h1>{title}</h1>
<ul>";
foreach (var item in items)
{
html += $"<li>{item}</li>";
}
html += "</ul></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("template-output.pdf");
}
}Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim title As String = "My List"
Dim items As String() = {"Item 1", "Item 2", "Item 3"}
Dim html As String = $"
<html><body>
<h1>{title}</h1>
<ul>"
For Each item As String In items
html += $"<li>{item}</li>"
Next
html += "</ul></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("template-output.pdf")
End Sub
End ModuleFluid, Liquid dongu sozdizimi ({% for item in items %}...{% endfor %}) kullanirken,IronPDFstandart C# foreach dongulerini kullanir.Fluidörneği tekrar iş akışını tamamlamak için "ayrı PDF dönüşümü gerektiğini" belirtir.
IronPDF eğitimlerinde HTML işleme hakkında daha fazla bilgi edinin.
Sözdizimi Haritalama Referansı
Geliştiriciler akıcı şablonlama geçişini değerlendirirken veya yetenekleri karşılaştırırken, bu eşleştirme eşdeğer söz dizimini gösterir:
Değişken Çıkışı
| Fluid (Liquid) | IronPDF (C#) |
|---|---|
{{ variable }} | $"{variable}" |
{{ object.property }} | $"{object.Property}" |
Kontrol Akışı
| Fluid (Liquid) | IronPDF (C#) |
|---|---|
{% for item in items %} | foreach (var item in items) |
{% endfor %} | } |
{% if condition %} | if (condition) |
{% endif %} | } |
Metotlara Filtreler
| Fluid (Liquid) | IronPDF (C#) |
|---|---|
{{ x \\|upcase }} | x.ToUpper() |
{{ x \\|downcase }} | x.ToLower() |
{{ x \\|tarih: '%Y-%m-%d' }} | x.ToString("yyyy-MM-dd") |
Çekirdek Sınıf Eşleştirmesi
| Fluid | IronPDF |
|---|---|
FluidParser | N/A |
TemplateContext | C# nesneleri/dizgileri |
context.SetValue("key", value) | var key = value; |
template.RenderAsync(context) | renderer.RenderHtmlAsPdf(html) |
TemplateOptions | RenderingOptions |
Özellik Karsilastirma Ozeti
| Özellik | Akıcı Şablonlama | IronPDF |
|---|---|---|
| PDF Generation | ❌ (dış kütüphane gerektirir) | ✅ (yerleşik) |
| HTML Output | ✅ | ✅ |
| Liquid Syntax | ✅ | N/A (C# kullanır) |
| C# String Interpolation | N/A | ✅ |
| Thread-Safe Context | ❌ | ✅ |
| Single Package Solution | ❌ | ✅ |
| CSS3 Flexbox/Grid | PDF kütüphanesine bağlı | ✅ |
| JavaScript Support | PDF kütüphanesine bağlı | ✅ |
| Üstbilgi/Altbilgi | PDF kütüphanesine bağlı | ✅(HTML tabanlı) |
| PDF Security | PDF kütüphanesine bağlı | ✅ |
| PDF Merging | PDF kütüphanesine bağlı | ✅ |
TakımlarınFluidŞablonlamadan IronPDF'e Geçişi Düşündükleri Zaman
Geliştirme ekipleri, çeşitli sebeplerle akıcı şablonlamadan IronPDF'e geçişi değerlendirir:
Two-Library Complexity:Fluidyalnızca HTML üretir—ekiplerin PDF oluşturmak için ayrı bir PDF kütüphanesine (wkhtmltopdf, PuppeteerSharp, vb.) ihtiyaçları vardır. Bu, bağımlılıkları, yapılandırmaları ve potansiyel hata kaynaklarını iki katına çıkarır. IronPDF, hem şablonlamayı (HTML/CSS yoluyla) hem de PDF oluşturmayı tek bir pakette sunarak bunu ortadan kaldırır.
Integration and Debugging Overhead: İki kütüphaneyi koordine etmek, iki yapılandırma setini, hata yönetim kalıplarını ve güncelleme döngülerini yönetmek anlamına gelir. Hatalar ya şablonlama ya da PDF oluşturma aşamasında meydana gelebilir, bu da sorun gidermeyi zorlaştırır. IronPDF, daha basit hata ayıklama için tek bir hata kaynağı sağlar.
Thread Safety Requirements: (Is Parcasi Guvenliginin Gereksinimleri: TemplateContext, cekirdek guvenligi olmadigindan eszamanli uygulamalarda dikkatli bir sekilde yonetilmelidir. ChromePdfRenderer, cekirdek guvenligiyle eszamanli PDF uretim senaryolarini basitlestirir ve web uygulamalarinda yaygindir.
Learning Curve Considerations: (Ogrenme Egri Degerlendirmeleri: C# zaten interpolasyon ve StringBuilder araciligiyla guclu dizi işleme sagliyorken, geliştiriciler Liquid sablonlama sozdizimini ({{ }}, {% %}) ogrenmek zorundadir. IronPDF, çoğu geliştiricinin zaten bildiği mevcut HTML/CSS bilgisini kullanır.
PDF Output Quality: PDF çıktısının kalitesi ve yetenekleri tamamıylaFluidile eşleştirilen harici PDF kütüphanesine bağlıdır. IronPDF'ün yerleşik Chromium motoru, Flexbox ve Grid düzenleri dahil tam CSS3 desteği ile tutarlı, yüksek kaliteli işleme sağlar.
Gucler ve Dikkat Edilecek Noktalar
Fluid Şablonlama Güçlü Yönleri
- Kapsam Ayrımı: İçerik ve sunum mantığının temiz bir şekilde ayrılması
- Liquid Uyumluluğu: Diğer platformlardan tanınan standart Liquid sözdizimi
- MIT Lisansı: Yalın lisanslama ile açık kaynak
- Esneklik: Çeşitli PDF kütüphaneleri ile birleştirilebilir
Fluid Şablonlama Değerlendirmeleri
- Bir PDF Kütüphanesi Değil: Özellikle şablonlama için oluşturulmuş, PDF çıktısı yeteneği eksik
- Entegrasyon Gerekliliği: PDF üretimi için diğer çözümlerle birleştirilmesi gerekir
- Öğrenme Eğrisi: Standart C#'ın ötesinde Liquid sözdizimini öğrenmeyi gerektirir
- Thread Safety:
TemplateContext, eszamanli senaryolar icin cekirdek guvenligi yoktur - Hata Ayıklama Karmaşası: Hatalar ya şablonlama ya da PDF oluşturma aşamasında meydana gelebilir
IronPDF'nin Gucleri
- Hepsi Bir Arada Çözüm: Tek pakette HTML şablonlama ve PDF oluşturma
- Chromium İşleme: Piksel seviyesinde hassas çıktı için endüstri standardı işleme motoru
- Web Teknolojileri: Tam CSS3, Flexbox, Grid ve JavaScript desteği
- Thread Safety:
ChromePdfRenderer, eszamanli işlemler icin cekirdek guvenligi vardir - Tek Hata Kaynağı: Birleştirilmiş hata yönetimi ile daha kolay hata ayıklama
- Profesyonel Özellikler: Başlıklar, altbilgiler, filigranlar, güvenlik—hepsi dahili
- Kapsamlı Kaynaklar: Kapsamlı eğitimler ve dokumentasyon
IronPDF dusunulecekler
- Liquid Sözdizimi Yok: Bunun yerine C# dizgi iç içe oluşumu kullanır (C# geliştiricileri için tanıdık)
- Ticari Lisans: Üretim kullanımı için lisans gerektirir
Sonuç
Fluid şablonlama ve IronPDF, .NET ekosisteminde farklı birincil amaçlara hizmet eder. Fluid, kapsam temizliği ve standart Liquid sözdizimi ile dinamik HTML içerik oluşturmak için Liquid tabanlı bir şablonlama motoru olarak öne çıkar. Ancak, özellikle PDF oluşturmaz—geliştiricilerin ayrı bir PDF kütüphanesi entegre etmesi ve koordine etmesi gerekir.
IronPDF, iki kütüphane bağımlılığı sorununu ortadan kaldıran hepsi bir arada bir çözüm sunar. HTML/CSS kullanarak şablonlama yaparak ve dahili Chromium motoru ile PDF işlemesi sağlayarak,IronPDFkarmaşıklığı azaltır, hata ayıklamayı geliştirir ve kutudan çıktığı haliyle iş parçacığı güvenliğini sağlar.
Örgütler .NET 10, C# 14 ve 2026 yılına kadar uygulama geliştirmeyi planlarken, seçim belirli gereksinimlere bağlıdır. Liquid sözdizimi uyumluluğuna değer veren ve PDF oluşturma altyapısına sahip ekipler, Fluid'i kullanmaya devam edebilir. Birden çok kütüphaneyi bir araya getirme yükü olmadan basitleştirilmiş PDF oluşturma arayan ekipler için,IronPDFdaha entegre bir yaklaşım sunar.
IronPDF'yi ücretsiz bir deneme ile degerlendirmeye başlayin ve kapsamli dokümantasyonu inceleyerek ozel gereksinimleriniz icin uygunlugunu degerlendirin.
