푸터 콘텐츠로 바로가기
마이그레이션 가이드

TextControl에서 IronPDF로의 마이그레이션 방법 (C#)

TX Text Control은 .NET 생태계에서 포괄적인 문서 편집기 구성 요소로 자리 잡고 있으며, UI 컨트롤이 포함된 강력한 DOCX 편집 기능을 제공합니다. 그러나 각 팀의 주요 요구 사항이 전체 문서 편집이 아닌 PDF 생성인 경우 TextControl의 아키텍처는 라이선스 비용, 복잡성 및 런타임 종속성에서 큰 부담이 됩니다.

이 가이드는 TextControl에서 IronPDF로의 완전한 마이그레이션 경로를 제공하며, 전문 .NET 개발자가 이 전환을 평가하기 위한 단계별 지침, 코드 비교, 실제 예제를 포함하고 있습니다.

TextControl에서 마이그레이션하는 이유

TextControl에서 마이그레이션을 결정하는 것은 일반적으로 툴링을 실제 요구 사항에 맞추는 것에 중점을 둡니다. TX Text Control은 기본적으로 PDF 생성을 부수적인 기능으로 취급하는 문서 편집기입니다. 개발 팀이 마이그레이션을 고려하는 주요 이유는 다음과 같습니다:

비싼 라이선스: TextControl은 개발자당 최소 $3,398의 상업용 라이선스로 운영됩니다. 한 팀이 연 $6,749 정도의 투자를 예상할 수 있으며, 서버 배포 런타임 라이선스에는 추가 비용이 발생합니다. 갱신 비용은 연 40%로, 업데이트 접근을 유지하기 위해 필수적입니다.

PDF 부수적 고려사항: 핵심 아키텍처는 문서 작성이며, PDF가 아닙니다. PDF 생성이 가능하지만, 이는 핵심 초점이라기보다는 부가적인 기능에 가까워 최적의 출력 품질을 제공하지 않습니다.

하드웨어 버그: Intel Iris Xe Graphics 버그는 새로운 Intel 프로세서(11세대)에서 문서 렌더링에 영향을 미치며, 레지스트리 우회 조치를 필요로 합니다.

과도한 종속성: TextControl은 문서 편집 UI 구성 요소를 포함하고 있으며, 순수한 PDF 생성에 집중할 경우 필요하지 않을 수 있습니다.

문서 프로세서 아키텍처: 현대 웹 애플리케이션이 요구하는 HTML-to-PDF 작업에 최적화되지 않았습니다.

복잡한 API: ServerTextControl 문맥 관리 및 선택 모델은 단순한 PDF 생성 작업에 불필요한 복잡성을 더하고 있습니다.

비용 비교

측면 TX Text Control IronPDF
기본 라이센스 $3,398+ 상당히 낮음
연간 갱신 40% 필수 선택적 지원
개발자 당
UI 구성 요소 번들(과잉) PDF 중심
총 3년 비용 $5,750+ 훨씬 낮음

IronPDF대 TextControl: 기능 비교

구조적 차이를 이해하면 기술 결정을 내리는데 이주 투자를 평가하는데 도움이 됩니다:

기능 TX Text Control IronPDF
주된 초점 DOCX 편집 PDF 생성
라이선스 비용 연 개발자 당 $3,398 개발자당 $749 한 번
PDF 품질 기본, 부가 기능 고품질, 핵심 기능
하드웨어 호환성 Intel Iris와의 알려진 문제 모든 기기에서 안정적임
UI와의 통합 UI 구성 요소 필요 UI 구성 요소 과잉 없음
HTML/CSS 렌더링 HTML과의 버그 최신 HTML5/CSS3
HTML to PDF 예 (부차적) 예 (주요한)
CSS 지원 제한적 전체 CSS3
JavaScript 제한적 전체 ES2024
URL을 PDF로 변환 복잡한 설정 내부 지원
헤더/푸터 복잡한 API 간단한 HTML
메일 머지 독점적 HTML 템플릿
PDF/A
비밀번호 보호
디지털 서명
PDF 병합 제한적
PDF 분할 제한적
문맥 관리 필요함 필요 없음
크로스 플랫폼 Windows 초점

빠른 시작: TextControl에서 IronPDF로의 마이그레이션

이러한 기본 단계를 통해 즉시 이주를 시작할 수 있습니다.

단계 1: NuGet 패키지 교체

모든 TextControl 패키지 제거:

# Remove TX Text Control
dotnet remove package TXTextControl.TextControl
dotnet remove package TXTextControl.DocumentServer
# Remove TX Text Control
dotnet remove package TXTextControl.TextControl
dotnet remove package TXTextControl.DocumentServer
SHELL

IronPDF 설치하세요:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

단계 2: 네임스페이스 업데이트

TextControl 네임스페이스를 IronPdf 네임스페이스로 교체:

// Before (TextControl)
using TXTextControl;
using TXTextControl.DocumentServer;

// After (IronPDF)
using IronPdf;
// Before (TextControl)
using TXTextControl;
using TXTextControl.DocumentServer;

// After (IronPDF)
using IronPdf;
Imports TXTextControl
Imports TXTextControl.DocumentServer

' After (IronPDF)
Imports IronPdf
$vbLabelText   $csharpLabel

단계 3: 라이선스 초기화

애플리케이션 시작 시 라이선스 초기화를 추가합니다:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

코드 마이그레이션 예제

HTML을 PDF로 변환

가장 일반적인 사용 사례는 이러한 .NET PDF 라이브러리 간의 아키텍처적 차이를 보여줍니다.

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>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

IronPDF 접근법:

// 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

TextControl 버전은 ServerTextControl 인스턴스를 생성하고, Create()를 호출하여 컨텍스트를 초기화하며, StreamType.HTMLFormat로 HTML을 로드하고, StreamType.AdobePDF로 저장해야 합니다. 적절한 리소스 처리를 위해 using 블록이 필수적입니다.

IronPDF는 컨텍스트 관리를 완전히 제거합니다. ChromePdfRenderer는 초기화 과정이 필요하지 않습니다. 생성하여 HTML을 렌더링하고 저장하세요. 이 아키텍처 단순화는 인지 부하와 잠재적 리소스 관리 버그를 줄입니다.

고급 HTML에서 PDF로의 시나리오는 HTML to PDF 변환 가이드를 참조하십시오.

여러 PDF 병합

PDF 병합은 이 라이브러리들 간의 또 다른 중요한 복잡성 차이를 보여줍니다.

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);
            }
        }
    }
}
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 접근법:

// 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

TextControl은 파일을 바이트 배열로 읽고, ServerTextControl 컨텍스트를 관리하며, LoadAppendMode.Append를 사용해 문서를 병합해야 합니다. IronPDF의 PdfDocument.Merge() 메소드는 단일 명시적 호출로 모든 것을 처리합니다.

선택적 페이지 추출을 포함한 고급 병합 시나리오에 대해서는 병합 및 분할 PDF 가이드를 참조하십시오.

헤더 및 풋터 추가

동적 페이지 번호가 있는 헤더와 푸터는 API 복잡성 차이를 보여줍니다.

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);
            }
        }
    }
}
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 접근법:

// 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

TextControl은 특정 HeaderFooterType 열거형을 가진 HeaderFooter 객체를 생성하고, textControl.Sections[0]를 통해 문서 섹션에 접근하며, HeadersAndFooters 컬렉션에 추가해야 합니다. IronPDF는 단순한 플레이스홀더 구문을 사용하여 직접적인 AddTextHeaderAddTextFooter 메소드를 제공합니다.

IronPDF는 모든 스타일 제어가 가능한 HTML 기반 헤더를 위한 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
};
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

더 많은 헤더와 푸터 옵션에 대해 알아보세요 헤더와 푸터 문서에서.

TextControl API에서 IronPDF로의 매핑 참조

이 매핑은 직접적인 API 대응을 보여주어 마이그레이션을 가속화합니다:

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 템플릿 + Razor
DocumentTarget.HeadersAndFooters HtmlHeaderFooter
LoadSettings RenderingOptions
StreamType.AdobePDF 기본 출력

일반적인 마이그레이션 문제와 해결책

문제 1: ServerTextControl 문맥

TextControl은 모든 작업에 대해 Create()using 블록이 필요합니다.

해결책: IronPDF는 문맥 관리가 필요 없습니다:

// Just create and use
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
// Just create and use
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
' Just create and use
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

문제 2: StreamType 변환

TextControl은 다양한 형식을 로드하고 StreamType 열거형을 통해 PDF로 변환합니다.

해결책: IronPDF는 중간 형식 변환 없이 HTML을 직접 렌더링합니다:

// No format conversion needed
var pdf = renderer.RenderHtmlAsPdf(html);
// No format conversion needed
var pdf = renderer.RenderHtmlAsPdf(html);
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

문제 3: DOCX 템플릿

TextControl은 메일 머지가 있는 템플릿에 DOCX 파일을 사용합니다.

해결책: C# 문자열 보간법 또는 Razor를 사용하여 HTML 템플릿으로 변환하세요:

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");
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");
Option Strict On



Dim data = New With {Key .CustomerName = "John Doe", Key .InvoiceNumber = "12345", Key .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 = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

문제 4: Intel Iris Xe 그래픽 버그

TextControl은 11세대 인텔 프로세서와 관련된 렌더링 문제를 문서화했으며, 레지스트리 해결 방법이 필요합니다.

해결책: IronPDF는 Chromium 렌더링을 사용하기 때문에 하드웨어 가속 버그 또는 레지스트리 수정이 필요 없습니다.

TextControl 마이그레이션 체크리스트

이동 전 작업

모든 TextControl 사용을 식별하기 위해 코드베이스를 감사하세요:

grep -r "using TXTextControl" --include="*.cs" .
grep -r "ServerTextControl\|Load\|Save" --include="*.cs" .
grep -r "using TXTextControl" --include="*.cs" .
grep -r "ServerTextControl\|Load\|Save" --include="*.cs" .
SHELL

메일 병합 템플릿을 HTML로 변환하기 위해 문서화하세요. HtmlHeaderFooter로 구현할 때 헤더/푸터 요구사항을 참조하세요. 대체 솔루션이 필요할 수 있는 DOCX 편집 기능을 식별하세요.

코드 업데이트 작업

1.TX Text ControlNuGet 패키지를 제거하세요

  1. IronPdf NuGet 패키지를 설치하세요
  2. ServerTextControl 컨텍스트 관리를 제거합니다 (더 이상 Create() 호출이 필요 없습니다)
  3. StreamType.HTMLFormat 로드를 RenderHtmlAsPdf로 변환합니다
  4. 문자열 보간법 또는 Razor로 메일 병합을 HTML 템플릿으로 변환하세요
  5. 헤더/푸터를 HtmlHeaderFooter 또는 AddTextFooter를 사용하도록 업데이트합니다
  6. RenderingOptions을 사용하여 페이지 설정을 단순화합니다
  7. 시작 시 라이선스 초기화를 추가

마이그레이션 후 테스트

마이그레이션 후 다음 측면을 검증:

  • 모든 문서 템플릿이 올바르게 렌더링되는지 테스트하세요
  • 필요 시PDF/A준수를 확인하세요
  • 비밀번호 보호 기능을 테스트하세요
  • 모든 페이지에 헤더/바닥글이 나타나는지 확인하세요
  • Intel 11세대 하드웨어에서 확인하세요—IronPDF를 사용하면 더 이상 레지스트리 해결 방법이 필요 없습니다

IronPDF로 마이그레이션할 때의 주요 이점

TextControl에서 IronPDF로 이동하는 것은 PDF 생성에 집중하는 팀에게 여러 가지 장점을 제공합니다:

PDF 우선 아키텍처: IronPDF는 PDF 생성을 위해 특별히 맞춤화되어 있으며, 최신 HTML5 및 CSS3 표준을 활용하여 강력한 문서 생성 및 렌더링 기능을 제공합니다.

비용 효율성: IronPDF의 일회성 가격은 시간이 지남에 따라 훨씬 더 저렴하며, 특히 40% 연간 갱신이 필수적인 TextControl의 구독 기반 서비스와 비교됩니다.

입증된 안정성: 다양한 하드웨어에서 문서화된 신뢰성으로 인해 Intel 그래픽과 관련된 TextControl의 문제를 피할 수 있습니다.

컨텍스트 관리 없음: ServerTextControl 생성 절차 및 리소스 처리 패턴을 제거합니다. IronPDF의 무상태 렌더링은 코드를 간소화하고 잠재적인 메모리 누수를 줄입니다.

최신 렌더링 엔진: .NET 10과 C# 14 채택이 2026년까지 증가함에 따라, IronPDF의 Chromium 기반 렌더링은 현재 및 미래의 웹 표준과 호환을 보장합니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해