Text Control vs IronPDF: Teknik Karşılaştırma Rehberi
.NET geliştiricileri PDF üretim kütüphanelerini değerlendirdiklerinde, genellikle kurumsal tartışmalarda iki çözüm öne çıkar:TX Text Controlve IronPDF. Her ikisi de PDF çıktısı üretebilirken, temelde farklı mimari felsefeleri temsil ederler. Bu teknik karşılaştırma, .NET uygulamaları için bilgilendirici kararlar almak için hem kütüphaneleri analiz eder.
TX Text Control'ü Anlamak
TX Text Control, yerleşik bir kullanıcı arayüzü kontrolüyle DOCX düzenleme yeteneklerine vurgu yapan kapsamlı bir belge düzenleyici bileşenidir. PDF üretimi, daha geniş belge işleme mimarisi içinde ikincil bir özelliktir. Platform, kapsamlı belge düzenleme işlevselliği sağlar ve zengin metin düzenleme arayüzlerine ihtiyaç duyan uygulamalar için uygun hale gelir.
Ancak, bu kapsamlı doğa, geliştirme ekiplerinin dikkatlice değerlendirmesi gereken hususları da beraberinde getirir:
- Pahalı Lisanslama: TX Text Control, geliştirici başına 3.398 $'dan başlayan bir ticari lisansla çalışır ve güncellemelere erişimi sürdürebilmek için zorunlu 40% yıllık yenilemeler gerektirir
- PDF İkincil Özellik: Çekirdek mimari, PDF üretiminden ziyade kelime işlemeye öncelik verir, PDF çıktısını eklenti bir yetenek olarak ele alır
- Bilinen Donanım Sorunları: 11. nesil Intel işlemcileri etkileyen belgelenmiş Intel Iris Xe Grafik renderleme hataları, kayıt defteri çözümleri gerektirir
- Şişmiş Bağımlılıklar: PDF odaklı iş akışları için gereksiz olabilecek belge düzenleme UI bileşenlerini içerir
- Karmaşık API: ServerTextControl bağlam yönetimi ve seçim modeli desenlerini gerektirir
IronPDF'yi Anlama
IronPDF, UI bileşenleri veya DOCX düzenleme araçlarını katmanlamadan, esasen PDF üretimine odaklanarak temelden farklı bir yaklaşım benimser. Kütüphane, özellikle PDF üretimi ve manipülasyonu için optimize edilmiş yalın, özel tasarımıyla öne çıkar, bir PDF-öncelikli mimari aracı olarak son derece etkili hale gelir.
IronPDF'in Ana Özellikleri:
- PDF-Öncelikli Mimari: Temelden PDF üretimi için tasarlandı, sağlam belge oluşturma ve renderleme yetenekleri sunar
- Chromium Rendering Motoru: Tam JavaScript çalıştırma desteği ile modern HTML5 ve CSS3 standartlarını kullanır
- Maliyet Etkinliği: Tek seferlik lisans modeli, devam eden abonelik maliyetlerini ortadan kaldırır
- Kanıtlanmış Kararlılık: Çeşitli donanım yapılandırmaları genelinde belgelenmiş güvenilirlik sağlarken, platforma özgü renderleme sorunlarını önler
- Basit Entegrasyon: Bağlam yönetimi veya karmaşık başlatma desenleri gerektirmez
Fiyat Karşılaştırması
TextControl veIronPDFarasındaki lisanslama yapıları zaman içinde önemli maliyet farklılıklarını ortaya koyar:
| Bağlam | TX Text Control | IronPDF |
|---|---|---|
| Temel Lisans | Geliştirici başına 3.398+ $ | Geliştirici başına bir kerelik 749 $ |
| Yıllık Yenileme | 40% zorunlu | İsteğe bağlı destek |
| 4 kişilik bir ekip (1. Yıl) | ~$6.749 | ~$2.996 |
| Toplam 3 Yıllık Maliyet | geliştirici başına $5,750+ | geliştirici başına $749 |
| UI Bileşenleri | Paketlenmiş (potansiyel şişkinlik) | Sadece PDF odaklı |
| Sunucu Çalışma Süresi | Ek lisanslama | Dahil |
Özellik Karşılaştırması
Aşağıdaki tablo, temel boyutlar üzerinden TextControl veIronPDFarasındaki teknik farklılıkları vurgular:
| Özellik | TX Text Control | IronPDF |
|---|---|---|
| Birincil Odak | DOCX düzenleme | PDF oluşturma |
| PDF Kalitesi | Temel, ek özellik | Yüksek, çekirdek işlevsellik |
| HTML to PDF | Evet (ikincil) | Evet (birincil) |
| CSS Desteği | Sınırlı | Tam CSS3 |
| JavaScript Uygulaması | Sınırlı | Tam ES2024 |
| URL'den PDF'ye | Karmaşık kurulum gerektirir | Doğal destek |
| Başlıklar/Altbilgiler | Karmaşık API | Basit HTML tabanlı |
| Posta Birleştirme | Tescilli sistem | HTML şablonları |
| PDF/A Uyumluluğu | Evet | Evet |
| Şifre Koruması | Evet | Evet |
| Dijital İmzalar | Evet | Evet |
| PDF'leri Birleştir | Sınırlı | Desteklenir |
| PDF'leri Böl | Sınırlı | Desteklenir |
| Filigranlar | Karmaşık uygulama | Basit HTML/CSS |
| Donanım Uyumluluğu | Bilinen Intel Iris sorunları | Tüm cihazlarda kararlı |
| Bağlam Yönetimi | Gerekli | Gerekli değil |
| Çapraz Platform | Windows odaklı | Evet |
API Mimari Farklılıkları
TextControl veIronPDFarasındaki kritik bir fark, API tasarım felsefeleri ve başlatma kalıplarında yatmaktadır.
TextControl Yaklaşımı
TextControl, ServerTextControl sinifi araciligiyla acik bir baglam yonetimi gerektirir. Her işlem, Create() cagrildiktan sonra bir using blogu icinde gerceklesmelidir:
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
textControl.Load(html, StreamType.HTMLFormat);
textControl.Save("output.pdf", StreamType.AdobePDF);
}
}
}
}// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
textControl.Load(html, StreamType.HTMLFormat);
textControl.Save("output.pdf", StreamType.AdobePDF);
}
}
}
}Imports TXTextControl
Imports System.IO
Namespace TextControlExample
Class Program
Shared Sub Main(ByVal args As String())
Using textControl As New ServerTextControl()
textControl.Create()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
textControl.Load(html, StreamType.HTMLFormat)
textControl.Save("output.pdf", StreamType.AdobePDF)
End Using
End Sub
End Class
End NamespaceBu kalıp, TextControl'e özgü sınıfları, akış türlerini ve bağlam yaşam döngüsünü anlamayı gerektirir.
IronPDF Yaklaşımı
IronPDF, bağlam yönetimini tamamen ortadan kaldırır. ChromePdfRenderer sınıfı, geliştiricilerin anında kullanabileceği durum bilgisi olmayan bir API sağlar:
// NuGet: Install-Package IronPdf
using IronPdf;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
}// NuGet: Install-Package IronPdf
using IronPdf;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
}Imports IronPdf
Namespace IronPdfExample
Class Program
Shared Sub Main(ByVal args As String())
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
End NamespaceHTML dönüştürme yetenekleri hakkında kapsamlı rehberlik için HTML to PDF eğitimine bakın.
API Eslestirme Referansi
TextControl'dan IronPDF'e geçişi değerlendiren ekipler, kavramsal eşdeğerlikleri anlamak için bu eşlemeyi yararlı bulacaktır:
| TX Text Control | IronPDF |
|---|---|
ServerTextControl.Create() | new ChromePdfRenderer() |
tx.Load(html, StreamType.HTMLFormat) | renderer.RenderHtmlAsPdf(html) |
tx.Load(url, StreamType.HTMLFormat) | renderer.RenderUrlAsPdf(url) |
tx.Save(path, StreamType.AdobePDF) | pdf.SaveAs(path) |
SaveSettings.PDFAConformance | RenderingOptions.PdfAFormat |
DocumentServer.MailMerge | HTML şablonları + Razor |
DocumentTarget.HeadersAndFooters | HtmlHeaderFooter |
LoadSettings | RenderingOptions |
StreamType.AdobePDF | Varsayılan çıktı |
PDF Belgelerini Birleştirme
Doküman birleştirme, iki kütüphane arasında uygulama karmaşıklığının farklılık gösterdiği yaygın bir gereksinimi temsil eder.
TextControl Uygulaması
TextControl, belgelerin ardışık olarak yüklenmesi ve açık ekleme modu bayrakları gerektirir:
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
byte[] pdf1 = File.ReadAllBytes("document1.pdf");
textControl.Load(pdf1, StreamType.AdobePDF);
byte[] pdf2 = File.ReadAllBytes("document2.pdf");
textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append);
textControl.Save("merged.pdf", StreamType.AdobePDF);
}
}
}
}// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
byte[] pdf1 = File.ReadAllBytes("document1.pdf");
textControl.Load(pdf1, StreamType.AdobePDF);
byte[] pdf2 = File.ReadAllBytes("document2.pdf");
textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append);
textControl.Save("merged.pdf", StreamType.AdobePDF);
}
}
}
}Imports TXTextControl
Imports System.IO
Namespace TextControlExample
Class Program
Shared Sub Main(ByVal args As String())
Using textControl As New ServerTextControl()
textControl.Create()
Dim pdf1 As Byte() = File.ReadAllBytes("document1.pdf")
textControl.Load(pdf1, StreamType.AdobePDF)
Dim pdf2 As Byte() = File.ReadAllBytes("document2.pdf")
textControl.Load(pdf2, StreamType.AdobePDF, LoadAppendMode.Append)
textControl.Save("merged.pdf", StreamType.AdobePDF)
End Using
End Sub
End Class
End NamespaceIronPDF Uygulaması
IronPDF, birden fazla belge kabul eden özel bir statik birleştirme yöntemi sağlar:
// NuGet: Install-Package IronPdf
using IronPdf;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
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;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
}
}Imports IronPdf
Namespace IronPdfExample
Class Program
Shared Sub Main(ByVal args As String())
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
End NamespacePdfDocument.Merge methodu, herhangi bir sayıda belgeyi kabul eder ve yeni bir birleştirilmiş PDF döndürüyor, bağlam yönetimi veya manuel bayt dizi işleme gerektirmiyor.
Başlıklar, Altbilgiler ve Sayfa Numaralandırma
Dinamik sayfa numaraları içeren üst bilgi ve alt bilgi eklemek, önemli API karmaşıklığı farklılıkları gösterir.
TextControl Uygulaması
TextControl, açık tür bildirimleriyle birlikte bölüm tabanlı üst bilgi/alt bilgi manipulasyonu gerektirir:
// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
textControl.Load(html, StreamType.HTMLFormat);
HeaderFooter header = new HeaderFooter(HeaderFooterType.Header);
header.Text = "Document Header";
textControl.Sections[0].HeadersAndFooters.Add(header);
HeaderFooter footer = new HeaderFooter(HeaderFooterType.Footer);
footer.Text = "Page {page} of {numpages}";
textControl.Sections[0].HeadersAndFooters.Add(footer);
textControl.Save("output.pdf", StreamType.AdobePDF);
}
}
}
}// NuGet: Install-Package TXTextControl.Server
using TXTextControl;
using System.IO;
namespace TextControlExample
{
class Program
{
static void Main(string[] args)
{
using (ServerTextControl textControl = new ServerTextControl())
{
textControl.Create();
string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
textControl.Load(html, StreamType.HTMLFormat);
HeaderFooter header = new HeaderFooter(HeaderFooterType.Header);
header.Text = "Document Header";
textControl.Sections[0].HeadersAndFooters.Add(header);
HeaderFooter footer = new HeaderFooter(HeaderFooterType.Footer);
footer.Text = "Page {page} of {numpages}";
textControl.Sections[0].HeadersAndFooters.Add(footer);
textControl.Save("output.pdf", StreamType.AdobePDF);
}
}
}
}Imports TXTextControl
Imports System.IO
Namespace TextControlExample
Class Program
Shared Sub Main(ByVal args As String())
Using textControl As New ServerTextControl()
textControl.Create()
Dim html As String = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"
textControl.Load(html, StreamType.HTMLFormat)
Dim header As New HeaderFooter(HeaderFooterType.Header)
header.Text = "Document Header"
textControl.Sections(0).HeadersAndFooters.Add(header)
Dim footer As New HeaderFooter(HeaderFooterType.Footer)
footer.Text = "Page {page} of {numpages}"
textControl.Sections(0).HeadersAndFooters.Add(footer)
textControl.Save("output.pdf", StreamType.AdobePDF)
End Using
End Sub
End Class
End NamespaceIronPDF Uygulaması
IronPDF, metin bazlı üst bilgi ve alt bilgi eklemek için sadeleştirilmiş yöntemler sunar:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.AddTextHeader("Document Header");
pdf.AddTextFooter("Page {page} of {total-pages}");
pdf.SaveAs("output.pdf");
}
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
namespace IronPdfExample
{
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.AddTextHeader("Document Header");
pdf.AddTextFooter("Page {page} of {total-pages}");
pdf.SaveAs("output.pdf");
}
}
}Imports IronPdf
Imports IronPdf.Rendering
Namespace IronPdfExample
Class Program
Shared Sub Main(args As String())
Dim renderer As New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Document Content</h1><p>Main body text.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.AddTextHeader("Document Header")
pdf.AddTextFooter("Page {page} of {total-pages}")
pdf.SaveAs("output.pdf")
End Sub
End Class
End NamespaceDaha karmaşık üst bilgi tasarımları için,IronPDFtam HTML ve CSS stilini kabul eden HtmlHeaderFooter sınıfını da destekler:
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: center; font-size: 12pt;'>
Company Report
</div>",
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: right; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
MaxHeight = 25
};renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: center; font-size: 12pt;'>
Company Report
</div>",
MaxHeight = 30
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
HtmlFragment = @"
<div style='width: 100%; text-align: right; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
MaxHeight = 25
};renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='width: 100%; text-align: center; font-size: 12pt;'>
Company Report
</div>",
.MaxHeight = 30
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
.HtmlFragment = "
<div style='width: 100%; text-align: right; font-size: 10pt;'>
Page {page} of {total-pages}
</div>",
.MaxHeight = 25
}URL'den PDF'e Donusum
Canlı web sayfalarını PDF'ye dönüştürmek, her kütüphanenin web içeriğini nasıl ele aldığını ortaya koyan mimari farkları gösterir.
TextControl Yaklaşımı
TextControl, HTML format işleyicisi aracılığıyla manuel URL yüklemeyi gerektirir ve sınırlı CSS ve JavaScript desteği sunar:
using (ServerTextControl tx = new ServerTextControl())
{
tx.Create();
LoadSettings loadSettings = new LoadSettings();
loadSettings.ApplicationFieldFormat = ApplicationFieldFormat.MSWord;
tx.Load("https://example.com/invoice", StreamType.HTMLFormat, loadSettings);
SaveSettings saveSettings = new SaveSettings();
saveSettings.PDFAConformance = PDFAConformance.PDFa1b;
tx.Save("output.pdf", StreamType.AdobePDF, saveSettings);
}using (ServerTextControl tx = new ServerTextControl())
{
tx.Create();
LoadSettings loadSettings = new LoadSettings();
loadSettings.ApplicationFieldFormat = ApplicationFieldFormat.MSWord;
tx.Load("https://example.com/invoice", StreamType.HTMLFormat, loadSettings);
SaveSettings saveSettings = new SaveSettings();
saveSettings.PDFAConformance = PDFAConformance.PDFa1b;
tx.Save("output.pdf", StreamType.AdobePDF, saveSettings);
}Imports ServerTextControlNamespace
Using tx As New ServerTextControl()
tx.Create()
Dim loadSettings As New LoadSettings()
loadSettings.ApplicationFieldFormat = ApplicationFieldFormat.MSWord
tx.Load("https://example.com/invoice", StreamType.HTMLFormat, loadSettings)
Dim saveSettings As New SaveSettings()
saveSettings.PDFAConformance = PDFAConformance.PDFa1b
tx.Save("output.pdf", StreamType.AdobePDF, saveSettings)
End UsingIronPDF Yaklaşımı
IronPDF, JavaScript'i çalıştırırken ve tüm stilleri uygularken kendi Chromium motoru ile yerel URL işleme sağlar:
var renderer = new ChromePdfRenderer();
// PDF/A compliance - simple property
renderer.RenderingOptions.PdfAFormat = PdfAVersions.PdfA1B;
var pdf = renderer.RenderUrlAsPdf("https://example.com/invoice");
pdf.SaveAs("output.pdf");var renderer = new ChromePdfRenderer();
// PDF/A compliance - simple property
renderer.RenderingOptions.PdfAFormat = PdfAVersions.PdfA1B;
var pdf = renderer.RenderUrlAsPdf("https://example.com/invoice");
pdf.SaveAs("output.pdf");Dim renderer = New ChromePdfRenderer()
' PDF/A compliance - simple property
renderer.RenderingOptions.PdfAFormat = PdfAVersions.PdfA1B
Dim pdf = renderer.RenderUrlAsPdf("https://example.com/invoice")
pdf.SaveAs("output.pdf")RenderUrlAsPdf methodu, tamamen renderİlanmış sayfayı, React, Angular veya Vue.js gibi modern web uygulamaları için ideal hale getiren dinamik olarak oluşturulan içeriği dahil ederek yakalar.
Sayfa Ayarları ve Yapılandırma
Sayfa boyutlarını, kenar boşluklarını ve yönünü yapılandırmak, belge ayarlarına farklı yaklaşım sergiler.
TextControl Uygulaması
TextControl, TWIPS ölçümlerini kullanan bölüm tabanlı sayfa ayarları kullanır:
using (ServerTextControl tx = new ServerTextControl())
{
tx.Create();
tx.Load(html, StreamType.HTMLFormat);
// Complex page settings through sections
foreach (Section section in tx.Sections)
{
section.Format.PageSize = PageSize.A4;
section.Format.PageMargins = new PageMargins(
1440, 1440, 1440, 1440); // TWIPS
section.Format.Landscape = true;
}
tx.Save("output.pdf", StreamType.AdobePDF);
}using (ServerTextControl tx = new ServerTextControl())
{
tx.Create();
tx.Load(html, StreamType.HTMLFormat);
// Complex page settings through sections
foreach (Section section in tx.Sections)
{
section.Format.PageSize = PageSize.A4;
section.Format.PageMargins = new PageMargins(
1440, 1440, 1440, 1440); // TWIPS
section.Format.Landscape = true;
}
tx.Save("output.pdf", StreamType.AdobePDF);
}Imports TXTextControl
Using tx As New ServerTextControl()
tx.Create()
tx.Load(html, StreamType.HTMLFormat)
' Complex page settings through sections
For Each section As Section In tx.Sections
section.Format.PageSize = PageSize.A4
section.Format.PageMargins = New PageMargins(1440, 1440, 1440, 1440) ' TWIPS
section.Format.Landscape = True
Next
tx.Save("output.pdf", StreamType.AdobePDF)
End UsingIronPDF Uygulaması
IronPDF, intuitif milimetre tabanlı ölçümlerle RenderingOptions'da sayfa ayarlarını merkezileştirir:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 25; // mm
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
renderer.RenderingOptions.MarginTop = 25; // mm
renderer.RenderingOptions.MarginBottom = 25;
renderer.RenderingOptions.MarginLeft = 25;
renderer.RenderingOptions.MarginRight = 25;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
renderer.RenderingOptions.MarginTop = 25 ' mm
renderer.RenderingOptions.MarginBottom = 25
renderer.RenderingOptions.MarginLeft = 25
renderer.RenderingOptions.MarginRight = 25
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")Parola Koruma ve Güvenlik
Her iki kütüphane de PDF güvenlik özelliklerini destekler, ancak farklı API kalıplarıyla.
TextControl Uygulaması
using (ServerTextControl tx = new ServerTextControl())
{
tx.Create();
tx.Load(html, StreamType.HTMLFormat);
SaveSettings saveSettings = new SaveSettings();
saveSettings.UserPassword = "user123";
saveSettings.MasterPassword = "owner456";
tx.Save("protected.pdf", StreamType.AdobePDF, saveSettings);
}using (ServerTextControl tx = new ServerTextControl())
{
tx.Create();
tx.Load(html, StreamType.HTMLFormat);
SaveSettings saveSettings = new SaveSettings();
saveSettings.UserPassword = "user123";
saveSettings.MasterPassword = "owner456";
tx.Save("protected.pdf", StreamType.AdobePDF, saveSettings);
}Imports ServerTextControlNamespace
Using tx As New ServerTextControl()
tx.Create()
tx.Load(html, StreamType.HTMLFormat)
Dim saveSettings As New SaveSettings()
saveSettings.UserPassword = "user123"
saveSettings.MasterPassword = "owner456"
tx.Save("protected.pdf", StreamType.AdobePDF, saveSettings)
End UsingIronPDF Uygulaması
IronPDF, SecuritySettings özelliği aracılığıyla ayrıntılı güvenlik kontrolü sağlar:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("protected.pdf");Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SaveAs("protected.pdf")Ekipler TextControl Alternatiflerini Ne Zaman Değerlendirmeli?
Birçok senaryo, geliştirme ekiplerini TextControl alternatiflerini değerlendirmeye yönlendirir:
Maliyet Optimizasyonu
TextControl lisanslaması geliştirici başına $3,398+ ve zorunlu %40 yıllık yenilemelerle başlar, üç yıllık toplam sahip olma maliyeti geliştirici başına $5,750+ ulaşır. Özellikle PDF oluşturma odaklı ekipler, fiyatlandırmayı mevcut alternatiflerle karşılaştırıldığında gerekçelendirmekte zorlanabilir.
Donanım Uyumluluğu Endişeleri
- nesil Intel işlemcilerde etkilenen Intel Iris Xe Graphics hatası, TextControl dağıtımları için kayıt defteri çözümleri gerektirir. IronPDF'nın Chromium tabanlı işleyici, bu donanıma özgü işleme sorunlarını tamamen ortadan kaldırır.
PDF-İlk Gereksinimler
Belge düzenleme yerine PDF üretimi birincil kullanım durumu olduğunda, TextControl'ün kelime işlemci mimarisi gereksiz karmaşıklık katmaktadır. DOCX düzenleme yetenekleri veya yerleşik UI kontrolleri gerektirmeyen uygulamalar, IronPDF'nin odaklı, PDF ilk tasarımından faydalanır.
Modern Web Teknolojisi Entegrasyonu
TextControl'e sınırlı CSS ve JavaScript desteği, günümüzün ön uç çerçevelerini kullanan uygulamalar için zorluklar yaratır. IronPDF'nin tam HTML5, CSS3 ve ES2024 JavaScript desteği, modern web içeriğinin doğru işlenmesini sağlar.
Basitleştirilmiş Dağıtım
TextControl'ün ServerTextControl bağlam yönetimi ve UI bileşen bağımlılıkları dağıtım karmaşıklığını arttırır. IronPDF, harici bağımlılıklar veya karmaşık başlangıç kalıpları olmadan kendi kendine yeten bir NuGet paketi olarak çalışır.
Şablon ve Posta Birleştirme Alternatifleri
TextControl'ün tescilli posta birleştirme sistemi, birleştirme alanları içeren DOCX şablonları kullanır. IronPDF, bunu standart HTML şablon oluşturma yaklaşımları ile değiştirir:
// Use standard C# string interpolation
var data = new { CustomerName = "John Doe", InvoiceNumber = "12345", Total = "$1,500.00" };
var html = $@"
<html>
<head>
<style>
body {{ font-family: Arial; padding: 40px; }}
h1 {{ color: #333; }}
.total {{ font-size: 24px; color: green; }}
</style>
</head>
<body>
<h1>Invoice #{data.InvoiceNumber}</h1>
<p>Customer: {data.CustomerName}</p>
<p class='total'>Total: {data.Total}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");// Use standard C# string interpolation
var data = new { CustomerName = "John Doe", InvoiceNumber = "12345", Total = "$1,500.00" };
var html = $@"
<html>
<head>
<style>
body {{ font-family: Arial; padding: 40px; }}
h1 {{ color: #333; }}
.total {{ font-size: 24px; color: green; }}
</style>
</head>
<body>
<h1>Invoice #{data.InvoiceNumber}</h1>
<p>Customer: {data.CustomerName}</p>
<p class='total'>Total: {data.Total}</p>
</body>
</html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");Imports IronPdf
Dim data = New With {.CustomerName = "John Doe", .InvoiceNumber = "12345", .Total = "$1,500.00"}
Dim html = $"
<html>
<head>
<style>
body {{ font-family: Arial; padding: 40px; }}
h1 {{ color: #333; }}
.total {{ font-size: 24px; color: green; }}
</style>
</head>
<body>
<h1>Invoice #{data.InvoiceNumber}</h1>
<p>Customer: {data.CustomerName}</p>
<p class='total'>Total: {data.Total}</p>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")Daha karmaşık şablonlama senaryoları için,IronPDFRazor motorları ve diğer şablon oluşturma çerçeveleriyle entegre olur. Detaylı uygulama şablon kalıpları için Razor şablon entegrasyon kılavuzuna bakın.
.NET Uyumlulugu ve Gelecek Hazirikligi
Her iki kütüphane de mevcut .NET uygulamalarını destekler. IronPDF, .NET 8, .NET 9 ile ve 2026'da beklenen .NET 10 dahil gelecekteki sürümleriyle uyumluluğu sağlamak için düzenli güncellemelerle aktif geliştirme sürdürür. Kütüphanenin API'sinde bulunan async/await desteği, C# 13'teki ve sonraki C# 14 yetenekleriyle modern C# geliştirme uygulamalarıyla uyumlu olarak hizalanır.
Ek PDF Yetenekleri
Üretimin ötesinde, IronPDF, faydasını genişleten belge manipülasyon özellikleri sunar:
- PDF'leri Birleştirme: Birden fazla belgeyi tek dosyalarda birleştirin
- Belgeleri Bölme: Sayfa aralıklarını ayrı PDF'lere çıkartın
- Dijital İmzalar: Belge otantikliğini sağlamak için kriptografik imzalar uygulayın
- Filigran Ekleme: HTML/CSS ile metin veya resim filigranları ekleyin
- PDF/A Uyumu: Arşiv standardındaki belgeler oluşturun
- Form Doldurma: PDF form alanlarını programatik olarak doldurun
Sonuç
TX Text Control ve IronPDF, her ikisinin de PDF çıktısı üretmesine rağmen, farklı ana amaçlara hizmet eder. TextControl, belgeleri düzenlemek ve içinde yerleşik UI kontrolleri bulunan kapsamlı bir belge düzenleyici olarak, zengin metin düzenleme arabirimleri gerektiren uygulamalar için ideal - belge dışa aktarma yeteneklerini ekleyerek.
IronPDF, HTML ve web içeriğinden PDF üretmeye özel olarak odaklanır ve HTML, URL'leri veya dinamik olarak oluşturulan içeriği PDF'ye dönüştürmeye ihtiyaç duyan geliştiriciler için ince bir çözüm sağlar - eksiksiz bir belge düzenleme altyapısının gereksiz yükü olmadan. Chromium tabanlı rendering, tarayıcı görüntüsünü eşleştiren piksel hassasiyetinde çıktı sağlar, API tasarımı basitlik ve standart web geliştirme iş akışlarına entegrasyonu önceliklendirir.
Aralarındaki seçim proje gereksinimlerine bağlıdır: PDF dışa aktarma ile kapsamlı belge düzenleme, TextControl lehine tercihlenirken, web içeriği üzerinden basit PDF üretimi ise IronPDF'nin güçlü yönleriyle hizalanır. TextControl'ü öncelikli olarak PDF üretimi için kullanan ekipler için, IronPDF'yi değerlendirmek önemli maliyet indirimi ve basitleştirilmiş dağıtım fırsatlarını ortaya çıkarabilir, PDF kalitesini feda etmeden.
Ek uygulama rehberliği için, belirli kullanım durumlarını ve ileri düzey özellikleri kapsayan IronPDF dokümantasyonu ve eğitimlerini inceleyin.
