KARşıLAşTıRMA

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ğlamTX Text ControlIronPDF
Temel LisansGeliştirici başına 3.398+ $Geliştirici başına bir kerelik 749 $
Yıllık Yenileme40% zorunluİsteğe bağlı destek
4 kişilik bir ekip (1. Yıl)~$6.749~$2.996
Toplam 3 Yıllık Maliyetgeliştirici başına $5,750+geliştirici başına $749
UI BileşenleriPaketlenmiş (potansiyel şişkinlik)Sadece PDF odaklı
Sunucu Çalışma SüresiEk lisanslamaDahil

Özellik Karşılaştırması

Aşağıdaki tablo, temel boyutlar üzerinden TextControl veIronPDFarasındaki teknik farklılıkları vurgular:

ÖzellikTX Text ControlIronPDF
Birincil OdakDOCX düzenlemePDF oluşturma
PDF KalitesiTemel, ek özellikYüksek, çekirdek işlevsellik
HTML to PDFEvet (ikincil)Evet (birincil)
CSS DesteğiSınırlıTam CSS3
JavaScript UygulamasıSınırlıTam ES2024
URL'den PDF'yeKarmaşık kurulum gerektirirDoğal destek
Başlıklar/AltbilgilerKarmaşık APIBasit HTML tabanlı
Posta BirleştirmeTescilli sistemHTML şablonları
PDF/A UyumluluğuEvetEvet
Şifre KorumasıEvetEvet
Dijital İmzalarEvetEvet
PDF'leri BirleştirSınırlıDesteklenir
PDF'leri BölSınırlıDesteklenir
FiligranlarKarmaşık uygulamaBasit HTML/CSS
Donanım UyumluluğuBilinen Intel Iris sorunlarıTüm cihazlarda kararlı
Bağlam YönetimiGerekliGerekli değil
Çapraz PlatformWindows 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 Namespace
$vbLabelText   $csharpLabel

Bu 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 Namespace
$vbLabelText   $csharpLabel

HTML 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 ControlIronPDF
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.PDFAConformanceRenderingOptions.PdfAFormat
DocumentServer.MailMergeHTML şablonları + Razor
DocumentTarget.HeadersAndFootersHtmlHeaderFooter
LoadSettingsRenderingOptions
StreamType.AdobePDFVarsayı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 Namespace
$vbLabelText   $csharpLabel

IronPDF 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 Namespace
$vbLabelText   $csharpLabel

PdfDocument.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 Namespace
$vbLabelText   $csharpLabel

IronPDF 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 Namespace
$vbLabelText   $csharpLabel

Daha 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
}
$vbLabelText   $csharpLabel

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 Using
$vbLabelText   $csharpLabel

IronPDF 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")
$vbLabelText   $csharpLabel

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 Using
$vbLabelText   $csharpLabel

IronPDF 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")
$vbLabelText   $csharpLabel

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 Using
$vbLabelText   $csharpLabel

IronPDF 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")
$vbLabelText   $csharpLabel

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

  1. 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")
$vbLabelText   $csharpLabel

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:

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.