비교

Text Control vs IronPDF: 기술 비교 가이드

.NET 개발자가 PDF 생성 라이브러리를 평가할 때, 기업 토론에서 자주 두 가지 솔루션이 등장합니다: TX Text Control과 IronPDF. 둘 다 PDF 출력이 가능하지만, 근본적으로 다른 아키텍처 철학을 대표합니다. 이 기술 비교는 두 라이브러리를 모두 검토하여 아키텍트와 개발자가 자신들의 .NET 애플리케이션에 대해 정보에 입각한 결정을 내리는 데 도움을 줍니다.

TX Text Control이해하기

TX Text Control은 DOCX 편집 기능을 강조하는 포괄적인 문서 편집기 구성 요소로, UI 컨트롤을 내장하고 있습니다. PDF 생성은 그보다 더 넓은 문서 처리 아키텍처 내에서 부차적인 기능으로 존재합니다. 플랫폼은 광범위한 문서 편집 기능을 제공하여, 풍부한 텍스트 편집 인터페이스가 필요한 응용 프로그램에 적합합니다.

그러나 이 포괄적인 성격은 개발 팀이 신중하게 평가해야 할 고려 사항을 도입합니다:

  • 비용이 높은 라이센스: TX Text Control은 개발자당 $3,398 이상의 상용 라이센스에 따라 운영되며, 업데이트에 접근하려면 연간 40%의 필수 갱신이 필요합니다
  • 이차적인 기능으로서 PDF: 핵심 아키텍처는 PDF 생성을 부가 기능으로 취급하며, 워드 처리를 우선시합니다
  • 알려진 하드웨어 문제: 11세대 인텔 프로세서에 영향을 미치는 Intel Iris Xe Graphics 렌더링 버그가 문서화되어 있으며 레지스트리 해결 방법이 필요합니다
  • 부푼 종속성: PDF 중심 워크플로에서는 불필요할 수 있는 문서 편집 UI 구성 요소를 포함합니다
  • 복잡한 API: ServerTextControl 컨텍스트 관리 및 선택 모델 패턴이 필요합니다

IronPDF대하여 PDF

IronPDF는 UI 구성 요소나 DOCX 편집 도구를 계층화하지 않고, 주로 PDF 생성에 중점을 두어 근본적으로 다른 접근 방식을 취합니다. 라이브러리는 PDF 생성을 최적화한 간결하고 정교한 설계를 자랑하며, PDF 우선 아키텍처 도구로서 매우 효율적입니다.

IronPDF의 주요 특징은 다음과 같습니다:

  • PDF 우선 아키텍처: PDF 생성을 위해 처음부터 설계되었으며, 강력한 문서 생성 및 렌더링 기능을 제공합니다
  • Chrome 렌더링 엔진: HTML5 및 CSS3 최신 표준을 활용하며 JavaScript 실행을 완전히 지원합니다
  • 비용 효율성: 1회성 라이센스 모델은 지속적인 구독 비용을 제거합니다
  • 입증된 안정성: 다양한 하드웨어 구성에서 입증된 신뢰성으로 플랫폼 고유의 렌더링 문제를 피합니다
  • 간단한 통합: 컨텍스트 관리나 복잡한 초기화 패턴이 필요하지 않습니다

가격 비교

TextControl과IronPDF간의 라이센스 구조는 시간에 따른 비용 차이를 노출합니다:

측면TX Text ControlIronPDF
기본 라이센스개발자당 $3,398+개발자당 $749 한 번
연간 갱신40% 필수선택적 지원
팀 4명(1년 차)~$6,749~$2,996
총 3년 비용개발자당 $5,750+개발자당 $749
UI 구성 요소번들 (잠재적 팽창)PDF 중심만
서버 런타임추가 라이센스포함됨

기능 비교

다음 표는 TextControl과IronPDF간의 주요 차원을 통한 기술적 차이를 강조합니다:

기능TX Text ControlIronPDF
주요 초점DOCX 편집PDF 생성
PDF 품질기본, 부가 기능고품질, 핵심 기능
HTML to PDF예 (부차적)예 (주요한)
CSS 지원제한적전체 CSS3
JavaScript 실행제한적전체 ES2024
URL을 PDF로복잡한 설정 필요네이티브 지원
헤더/푸터복잡한 API단순한 HTML 기반
메일 머지독점 시스템HTML 템플릿
PDF/A 준수
비밀번호 보호
디지털 서명
PDF 병합제한적지원됨
PDF 분할제한적지원됨
워터마크복잡한 구현단순한 HTML/CSS
하드웨어 호환성알려진 Intel Iris 문제모든 기기에서 안정적임
컨텍스트 관리필요함필요 없음
크로스 플랫폼Windows 초점

API 아키텍처 차이점

TextControl과 IronPDF의 중요한 차이점은 API 설계 철학과 초기화 패턴에 있습니다.

TextControl 접근 방식

TextControl은 ServerTextControl 클래스의 명시적 컨텍스트 관리를 필요로 합니다. 모든 작업은 Create()을 호출한 후 using 블록 내에서 수행되어야 합니다:

// 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);
            }
        }
    }
}
$vbLabelText   $csharpLabel

이 패턴은 TextControl 전용 클래스와 스트림 유형 및 컨텍스트 라이프사이클을 이해해야 합니다.

IronPDF접근 방식

IronPDF는 컨텍스트 관리를 완전히 제거합니다. ChromePdfRenderer 클래스는 즉시 사용할 수 있는 상태 비저장 API를 제공합니다.

// 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");
        }
    }
}
$vbLabelText   $csharpLabel

HTML 변환 기능에 대한 포괄적인 안내는 HTML to PDF 튜토리얼을 참조하십시오.

API 매핑 참조

TextControl에서 IronPDF로의 전환을 평가하는 팀은 개념 등가성을 이해하는 데 이 매핑이 유용합니다.

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 템플릿 + Razor
DocumentTarget.HeadersAndFootersHtmlHeaderFooter
LoadSettingsRenderingOptions
StreamType.AdobePDF기본 출력

PDF 문서 병합

문서 병합은 두 라이브러리 간 구현 복잡성이 다른 일반적인 요구 사항을 나타냅니다.

TextControl 구현

TextControl은 명시적 추가 모드 플래그로 문서를 순차적으로 로드해야 합니다.

// 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);
            }
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF구현

IronPDF는 여러 문서를 수용하는 전용 정적 병합 메서드를 제공합니다.

// 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");
        }
    }
}
$vbLabelText   $csharpLabel

PdfDocument.Merge 메서드는 문서를 임의로 많이 수용하고 컨텍스트 관리가 필요 없으며 수동 바이트 배열 처리를 요구하지 않는 새로 결합된 PDF를 반환합니다.

헤더, 푸터 및 페이지 번호 매기기

동적 페이지 번호가 있는 헤더 및 바닥글 추가는 API 복잡성의 상당한 차이점을 보여줍니다.

TextControl 구현

TextControl은 명시적 유형 선언이 있는 섹션 기반의 헤더/바닥글 조작을 요구합니다.

// 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);
            }
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF구현

IronPDF는 텍스트 기반 헤더 및 바닥글 추가를 위한 간소화된 메서드를 제공합니다.

// 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");
        }
    }
}
$vbLabelText   $csharpLabel

더 복잡한 헤더 디자인의 경우 IronPDF는 전체 HTML 및 CSS 스타일을 허용하는 HtmlHeaderFooter 클래스도 지원합니다.

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

URL을 PDF로 변환

라이브 웹 페이지를 PDF로 변환하면 각 라이브러리가 웹 콘텐츠를 처리하는 방식에서 아키텍처 차이가 드러납니다.

TextControl 접근 방식

TextControl은 HTML 형식 핸들러를 통한 URL 수동 로딩을 요구하며, 이는 제한된 CSS 및 JavaScript 지원을 제공합니다.

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

IronPDF접근 방식

IronPDF는 JavaScript를 실행하고 모든 스타일을 적용하는 Chromium 엔진을 통해 네이티브 URL 렌더링을 제공합니다.

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

RenderUrlAsPdf 메서드는 React, Angular, 또는 Vue.js와 같은 프레임워크로 구축된 현대적인 웹 애플리케이션에 이상적인 방법으로 동적으로 생성된 콘텐츠를 포함한 완전한 렌더된 페이지를 캡처합니다.

페이지 설정 및 구성

페이지 크기, 여백 및 방향을 구성하면 문서 설정에 다른 접근 방식을 보여줍니다.

TextControl 구현

TextControl은 TWIPS 단위의 섹션 기반 페이지 설정을 사용합니다.

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

IronPDF구현

IronPDF는 직관적인 밀리미터 기반 측정으로 RenderingOptions에 페이지 설정을 중앙 집중화합니다.

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

암호 보호 및 보안

두 라이브러리는 PDF 보안 기능을 지원하지만 다른 API 패턴을 따릅니다.

TextControl 구현

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

IronPDF구현

IronPDF는 SecuritySettings 속성을 통해 세분화된 보안 제어를 제공합니다.

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

팀이 TextControl 대안을 고려할 때

여러 시나리오가 개발 팀이 TextControl 대안을 평가하도록 보통 자극합니다.

비용 최적화

개발자 당 $3,398+로 시작하고 매년 40% 갱신이 필수적인 TextControl 라이선스는 3년 기준 개발자 당 총 소유 비용이 $5,750+에 도달합니다. PDF 생성에 주로 집중하는 팀은 대안이 상당히 낮은 비용 포인트로 존재할 때 이 가격을 정당화하기 어려운 경우가 많습니다.

하드웨어 호환성 문제

11세대 Intel 프로세서에 영향을 미치는 Intel Iris Xe Graphics 버그가 TextControl 배포에 대한 레지스트리 해결책을 요구합니다. IronPDF의 Chromium 기반 렌더링은 이 하드웨어 특정 렌더링 문제를 완전히 제거합니다.

PDF-우선 요구 사항

PDF 생성을 문서 편집이 아닌 주요 사용 사례로 삼을 때, TextControl의 워드 프로세서 아키텍처는 불필요한 복잡성을 초래합니다. DOCX 편집 기능이나 내장 UI 컨트롤이 필요 없는 애플리케이션은 IronPDF의 집중적이고 PDF 우선 설계에서 이점을 얻습니다.

현대 웹 기술 통합

TextControl의 제한된 CSS 및 JavaScript 지원은 현대적인 프론트엔드 프레임워크를 사용하는 애플리케이션에 도전을 만듭니다. IronPDF의 전체 HTML5, CSS3, ES2024 JavaScript 지원은 현대 웹 콘텐츠의 정확한 렌더링을 보장합니다.

배포 간소화

TextControl의 ServerTextControl 컨텍스트 관리 및 UI 구성 요소 종속성은 배포 복잡성을 증가시킵니다. IronPDF는 외부 종속성이나 복잡한 초기화 패턴 없이 독립형 NuGet 패키지로 작동합니다.

템플릿 및 메일 병합 대안

TextControl의 독점 메일 병합 시스템은 병합 필드를 가진 DOCX 템플릿을 사용합니다. IronPDF는 이를 표준 HTML 템플릿 방식으로 교체합니다:

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

더 복잡한 템플릿 시나리오를 위해 IronPDF는 Razor 엔진 및 기타 템플릿 프레임워크와 통합됩니다. 자세한 구현 패턴은 Razor 템플릿 통합 가이드를 참조하십시오.

.NET 호환성 및 미래 준비

두 라이브러리 모두 현재 .NET 구현을 지원합니다. IronPDF는 정기적인 업데이트와 함께 적극적으로 개발이 진행되며, .NET 8, .NET 9 및 2026년에 예상되는 .NET 10을 포함한 향후 릴리스와의 호환성을 보장합니다. 라이브러리의 async/await 지원은 C# 13 및 예상되는 C# 14 기능을 포함한 현대적 C# 개발 관행에 맞춰져 있습니다.

추가 PDF 기능

생성 외에도, IronPDF는 그 유용성을 넓히는 문서 조작 기능을 제공합니다:

결론

TX Text Control과 IronPDF는 모두 PDF 출력을 생성하지만, 주요 목적이 다릅니다. TextControl은 DOCX 조작 및 내장 UI 컨트롤을 갖춘 종합 문서 편집기로서 모든 문서 내보내기 기능을 갖춘 애플리케이션에 이상적입니다.

IronPDF는 HTML 및 웹 콘텐츠에서 PDF 생성을 구체적으로 초점으로 하여, 전체 문서 편집 인프라의 오버헤드 없이 HTML, URL 또는 동적으로 생성된 콘텐츠를 PDF로 변환해야 하는 개발자에게 간소화된 솔루션을 제공합니다. 그의 Chromium 기반 렌더링은 브라우저 디스플레이에 일치하는 픽셀 완벽한 출력을 보장하며, 그의 API 설계는 표준 웹 개발 워크플로우와의 간단함과 통합을 우선시합니다.

이들 간의 선택은 프로젝트 요구 사항에 따라 다릅니다: PDF 내보내기가 포함된 종합 문서 편집이 필요한 경우 TextControl이 선호되고, 웹 콘텐츠에서 간단한 PDF 생성은 IronPDF의 강점에 맞습니다. 주로 PDF 생성을 위해 TextControl을 사용 중인 팀이라면, IronPDF를 평가하여 PDF 품질을 희생하지 않고도 상당한 비용 절감 및 배포 간소화를 달성할 수 있는 기회를 발견할 수 있습니다.

추가 구현 지침은 특정 사용 사례와 고급 기능을 다루는 IronPDF 문서튜토리얼을 탐색하세요.