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

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

2025년 5월 27일, Apryse가 TallComponents를 인수했습니다. TallPDF.NET 및 PDFKit.NET의 신규 라이선스는 더 이상 제공되지 않으며, Apryse는 새로운 구매자를 iText SDK(역시 Apryse 소유)로 안내합니다. 기존 고객은 계속 지원을 받지만, 엔진은 유지 관리만 진행됩니다. 현재 TallComponents를 사용하는 팀은 지금 이주 계획을 세워 나중에 갑작스러운 전환을 피할 수 있습니다.

이 가이드는 TallComponents에서 IronPDF로의 이주 경로를 제공하며, .NET 개발자를 위한 계획에 필요한 단계별 지침, API 매핑 및 코드 예제도 포함하고 있습니다.

TallComponents이주 계획을 세워야 하는 이유

2001년에 설립된 TallComponents는 두 가지 주요 .NET PDF 제품을 출하했습니다: PDFKit.NET은 PDF 로딩 및 조작을 위한 것이고, TallPDF.NET은 레이아웃 지향 문서 생성을 위한 것입니다. Apryse 인수 이후 새로운 라이선스 판매가 종료되어 이를 의존하는 팀의 계획 수립의 시점을 변경했습니다.

오늘날의 주요TallComponents제한 사항

신규 라이선스에 폐쇄됨: Apryse의TallComponents페이지는 더 이상TallComponents제품에 대한 새로운 라이선스를 제공하지 않으며, 새로운 구매자를 iText SDK로 안내합니다. 기존 라이선스 보유자는 계속해서 지원을 받습니다.

XHTML 전용HTML파이프라인: TallPDF.NET은 XHTML 1.0 Strict / XHTML 1.1 + CSS 2.1을 파싱하는 XhtmlParagraph 클래스를 제공합니다. PDFKit.NET 자체에는HTML파이프라인이 없습니다. 최신 HTML5 + CSS3 +JavaScript콘텐츠는 안정적으로 렌더링되지 않으며, 박스 안에 헤드리스 브라우저 엔진이 없습니다.

동결된 플랫폼 대상: TallComponents.PDFKit5는 .NET Standard 2.0을 대상으로 합니다; 이전 버전인 TallComponents.PDFKit (4.x)는 .NET Framework 2.0을 대상으로 합니다. .NET 8/9 TFM은 출판되지 않았습니다.

유지 관리 전용 로드맵: Apryse의 개발 에너지가 Apryse SDK 및 iText에 집중되면서TallComponents브랜드 패키지는 유지 관리 업데이트는 받지만 새로운 기능 로드맵은 없습니다.

IronPDF: 현대적TallComponents대안

IronPDF는 현재 .NET 스택을 사용하는TallComponents사용자가 직면한 핵심 격차를 해결합니다:

기능 TallComponents IronPDF
현재 판매 상태 신규 라이선스에 폐쇄됨 (Apryse 2025-05-27 인수) 적극적인 판매
HTML-to-PDF 지원 XHTML 1.0/1.1 + CSS 2.1을 XhtmlParagraph (TallPDF.NET)를 통해 제공합니다 예 (Chromium과 함께하는 HTML5/CSS3)
HTML의JavaScript 아니요 전체 ES2024
설치 NuGet (TallComponents.PDFKit5, TallComponents.TallPDF5) NuGet (IronPdf)
고객 지원 기존 고객만; 신규 구매자는 iText로 안내 적극적인 지원 및 커뮤니티
미래 투자 유지 관리 전용 장기 로드맵

TallComponents는 초기 .NET 문서 생성 시대에 뿌리를 둔 XML/레이아웃 지향 모델을 사용하는 반면, IronPDF는 오늘날의 팀이 프론트엔드 애플리케이션을 구축하는 방식과 일치하는 크로뮴 구동HTML렌더링을 제공합니다.

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

단계 1: NuGet 패키지 교체

프로젝트가 참조하는TallComponents패키지를 제거하세요. nuget.org의 실제 패키지 ID는 TallComponents.PDFKit5 (또는 4.x의 경우 TallComponents.PDFKit) 및 TallComponents.TallPDF5 / TallPDF6 입니다:

# RemoveTallComponentspackages (whichever your project uses)
dotnet remove package TallComponents.PDFKit5
dotnet remove package TallComponents.TallPDF5
dotnet remove package TallComponents.PDFRasterizer4
# RemoveTallComponentspackages (whichever your project uses)
dotnet remove package TallComponents.PDFKit5
dotnet remove package TallComponents.TallPDF5
dotnet remove package TallComponents.PDFRasterizer4
SHELL

IronPDF 설치하세요:

dotnet add package IronPdf

특수화된 프레임워크의 경우, IronPDF는 전용 확장 패키지를 제공합니다:

Blazor 서버:

Install-Package IronPdf.Extensions.Blazor

MAUI:

Install-Package IronPdf.Extensions.Maui

MVC 프레임워크:

Install-Package IronPdf.Extensions.Mvc.Framework

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

TallComponents 네임스페이스를IronPDF네임스페이스로 교체하십시오:

// Before (TallComponents — real namespaces)
using TallComponents.PDF;                    // Document, Page (PDFKit.NET)
using TallComponents.PDF.Shapes;             // TextShape, ImageShape (PDFKit)
using TallComponents.PDF.Security;           // PasswordSecurity
using TallComponents.PDF.Layout;             // Document, Section (TallPDF.NET)
using TallComponents.PDF.Layout.Paragraphs;  // TextParagraph, XhtmlParagraph

// After (IronPDF)
using IronPdf;
// Before (TallComponents — real namespaces)
using TallComponents.PDF;                    // Document, Page (PDFKit.NET)
using TallComponents.PDF.Shapes;             // TextShape, ImageShape (PDFKit)
using TallComponents.PDF.Security;           // PasswordSecurity
using TallComponents.PDF.Layout;             // Document, Section (TallPDF.NET)
using TallComponents.PDF.Layout.Paragraphs;  // TextParagraph, XhtmlParagraph

// After (IronPDF)
using IronPdf;
Imports IronPdf

' Before (TallComponents — real namespaces)
' Imports TallComponents.PDF                    ' Document, Page (PDFKit.NET)
' Imports TallComponents.PDF.Shapes             ' TextShape, ImageShape (PDFKit)
' Imports TallComponents.PDF.Security           ' PasswordSecurity
' Imports TallComponents.PDF.Layout             ' Document, Section (TallPDF.NET)
' Imports TallComponents.PDF.Layout.Paragraphs  ' TextParagraph, XhtmlParagraph

' 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

TallComponents에서IronPDF API 매핑 참조

TallComponents 개념이 IronPDF에 어떻게 매핑되는지 이해하면 마이그레이션 과정을 가속화할 수 있습니다:

TallComponents IronPDF 노트
Document (TallPDF.NET: layout) ChromePdfRenderer PDF 생성을 위한 렌더러 생성
Document (PDFKit.NET: manipulate) PdfDocument 기존 PDFs 로드/편집
Section 자동 HTML구조에서 파생된 섹션
TextParagraph HTML텍스트 요소

,

,
등을 사용하십시오.

ImageParagraph 태그 표준HTML이미지
TableParagraph HTML
표준HTML테이블
XhtmlParagraph (XHTML 1.x + CSS 2.1) RenderHtmlAsPdf() (HTML5/CSS3 via Chromium) 현대HTML작동
Font CSS font-family 웹 글꼴 지원
document.Write(...) pdf.SaveAs() / pdf.BinaryData 파일 또는 byte[] 출력
page.Overlay.Add(shape) pdf.ApplyStamp(stamper) 워터마크 / 오버레이
outputDoc.Pages.Add(page.Clone()) PdfDocument.Merge(...) / pdf.AppendPdf(...) 여러 PDF 병합
Document.Security = new PasswordSecurity { ... } pdf.SecuritySettings PDF 보안 구성
PageLayout RenderingOptions 페이지 설정 및 여백

코드 마이그레이션 예제

HTML을 PDF로 변환

TallComponents는 TallPDF.NET의 XhtmlParagraph를 통해 HTML을 처리하며, 이는 XHTML 1.0/1.1 + CSS 2.1만 파싱합니다. 현대 HTML5, CSS3, Flexbox, Grid 및JavaScript기반 콘텐츠는 해당 문법의 밖에 있습니다:

TallComponents 접근 방식:

// NuGet: Install-Package TallComponents.TallPDF5
// (HTML/XHTML conversion lives in TallPDF.NET, not in PDFKit.NET.)
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Paragraphs;
using System.IO;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Section section = document.Sections.Add();

        // XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1 only.
        XhtmlParagraph xhtml = new XhtmlParagraph();
        xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>";
        section.Paragraphs.Add(xhtml);

        using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
        {
            document.Write(fs);
        }
    }
}
// NuGet: Install-Package TallComponents.TallPDF5
// (HTML/XHTML conversion lives in TallPDF.NET, not in PDFKit.NET.)
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Paragraphs;
using System.IO;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Section section = document.Sections.Add();

        // XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1 only.
        XhtmlParagraph xhtml = new XhtmlParagraph();
        xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>";
        section.Paragraphs.Add(xhtml);

        using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
        {
            document.Write(fs);
        }
    }
}
Imports TallComponents.PDF.Layout
Imports TallComponents.PDF.Layout.Paragraphs
Imports System.IO

Module Program
    Sub Main()
        Dim document As New Document()
        Dim section As Section = document.Sections.Add()

        ' XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1 only.
        Dim xhtml As New XhtmlParagraph()
        xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>"
        section.Paragraphs.Add(xhtml)

        Using fs As New FileStream("output.pdf", FileMode.Create)
            document.Write(fs)
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF 접근법:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a PDF fromHTMLstring
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Create a PDF fromHTMLstring
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        ' Create a PDF from HTML string
        Dim renderer As New ChromePdfRenderer()
        Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF의 ChromePdfRenderer는 진정한 Chromium 엔진을 사용하여 HTML5 및 CSS3를 완벽하게 지원합니다. 즉, PDF가 현대 브라우저에서 나타나는 것과 정확히 똑같이 렌더됩니다. HTML to PDF 튜토리얼에서 더 알아보세요.

여러 PDF 병합

PDF 병합은 TallComponents와IronPDF사이의 장황함 차이를 보여줍니다.

TallComponents 접근 방식:

// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using System.IO;

class Program
{
    static void Main()
    {
        // Create target document
        Document outputDoc = new Document();

        // Load first PDF and clone each page into the target
        using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open, FileAccess.Read))
        {
            Document doc1 = new Document(fs1);
            foreach (Page page in doc1.Pages)
            {
                outputDoc.Pages.Add(page.Clone()); // clone is required across documents
            }
        }

        // Load second PDF and append the whole page collection
        using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open, FileAccess.Read))
        {
            Document doc2 = new Document(fs2);
            outputDoc.Pages.AddRange(doc2.Pages.CloneToArray());
        }

        // Save merged document
        using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
        {
            outputDoc.Write(output);
        }
    }
}
// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using System.IO;

class Program
{
    static void Main()
    {
        // Create target document
        Document outputDoc = new Document();

        // Load first PDF and clone each page into the target
        using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open, FileAccess.Read))
        {
            Document doc1 = new Document(fs1);
            foreach (Page page in doc1.Pages)
            {
                outputDoc.Pages.Add(page.Clone()); // clone is required across documents
            }
        }

        // Load second PDF and append the whole page collection
        using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open, FileAccess.Read))
        {
            Document doc2 = new Document(fs2);
            outputDoc.Pages.AddRange(doc2.Pages.CloneToArray());
        }

        // Save merged document
        using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
        {
            outputDoc.Write(output);
        }
    }
}
Imports TallComponents.PDF
Imports System.IO

Class Program
    Shared Sub Main()
        ' Create target document
        Dim outputDoc As New Document()

        ' Load first PDF and clone each page into the target
        Using fs1 As New FileStream("document1.pdf", FileMode.Open, FileAccess.Read)
            Dim doc1 As New Document(fs1)
            For Each page As Page In doc1.Pages
                outputDoc.Pages.Add(page.Clone()) ' clone is required across documents
            Next
        End Using

        ' Load second PDF and append the whole page collection
        Using fs2 As New FileStream("document2.pdf", FileMode.Open, FileAccess.Read)
            Dim doc2 As New Document(fs2)
            outputDoc.Pages.AddRange(doc2.Pages.CloneToArray())
        End Using

        ' Save merged document
        Using output As New FileStream("merged.pdf", FileMode.Create)
            outputDoc.Write(output)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 접근법:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Load PDFs
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        // Merge PDFs
        var merged = PdfDocument.Merge(pdf1, pdf2);

        // Save merged document
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        // Load PDFs
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        // Merge PDFs
        var merged = PdfDocument.Merge(pdf1, pdf2);

        // Save merged document
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        ' Load PDFs
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")

        ' Merge PDFs
        Dim merged = PdfDocument.Merge(pdf1, pdf2)

        ' Save merged document
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

TallComponents 버전은 수동 페이지 반복 및 복제를 요구합니다. IronPDF는 이를 단일 PdfDocument.Merge() 호출로 줄였습니다. 고급 병합 시나리오에 대해서는 PDF 병합 문서를 참조하세요.

워터마크 추가

PDF에 워터마킹을 추가하는 것은 개발자 경험의 또 다른 중요한 차이를 나타냅니다.

TallComponents 접근 방식:

// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using TallComponents.PDF.Shapes;
using System.IO;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        using (FileStream fs = new FileStream("input.pdf", FileMode.Open, FileAccess.Read))
        {
            Document document = new Document(fs);

            foreach (Page page in document.Pages)
            {
                TextShape watermark = new TextShape();
                watermark.Text = "CONFIDENTIAL";
                watermark.Font = new Font("Arial", 60);
                watermark.Pen = new Pen(Color.FromArgb(128, 255, 0, 0));
                watermark.X = 200;
                watermark.Y = 400;
                // Rotation is applied via a transform on PDFKit.NET
                // (TextShape has no Rotate property in the PDFKit API).
                watermark.Transform = new RotateTransform(45);

                page.Overlay.Add(watermark);
            }

            using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
            {
                document.Write(output);
            }
        }
    }
}
// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using TallComponents.PDF.Shapes;
using System.IO;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        using (FileStream fs = new FileStream("input.pdf", FileMode.Open, FileAccess.Read))
        {
            Document document = new Document(fs);

            foreach (Page page in document.Pages)
            {
                TextShape watermark = new TextShape();
                watermark.Text = "CONFIDENTIAL";
                watermark.Font = new Font("Arial", 60);
                watermark.Pen = new Pen(Color.FromArgb(128, 255, 0, 0));
                watermark.X = 200;
                watermark.Y = 400;
                // Rotation is applied via a transform on PDFKit.NET
                // (TextShape has no Rotate property in the PDFKit API).
                watermark.Transform = new RotateTransform(45);

                page.Overlay.Add(watermark);
            }

            using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
            {
                document.Write(output);
            }
        }
    }
}
Imports TallComponents.PDF
Imports TallComponents.PDF.Shapes
Imports System.IO
Imports System.Drawing

Class Program
    Shared Sub Main()
        ' Load existing PDF
        Using fs As New FileStream("input.pdf", FileMode.Open, FileAccess.Read)
            Dim document As New Document(fs)

            For Each page As Page In document.Pages
                Dim watermark As New TextShape()
                watermark.Text = "CONFIDENTIAL"
                watermark.Font = New Font("Arial", 60)
                watermark.Pen = New Pen(Color.FromArgb(128, 255, 0, 0))
                watermark.X = 200
                watermark.Y = 400
                ' Rotation is applied via a transform on PDFKit.NET
                ' (TextShape has no Rotate property in the PDFKit API).
                watermark.Transform = New RotateTransform(45)

                page.Overlay.Add(watermark)
            Next

            Using output As New FileStream("watermarked.pdf", FileMode.Create)
                document.Write(output)
            End Using
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 접근법:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        var pdf = PdfDocument.FromFile("input.pdf");

        // Create watermark
        var watermark = new TextStamper()
        {
            Text = "CONFIDENTIAL",
            FontSize = 60,
            Opacity = 50,
            Rotation = 45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        // Apply watermark to all pages
        pdf.ApplyStamp(watermark);

        // Save watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        var pdf = PdfDocument.FromFile("input.pdf");

        // Create watermark
        var watermark = new TextStamper()
        {
            Text = "CONFIDENTIAL",
            FontSize = 60,
            Opacity = 50,
            Rotation = 45,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        // Apply watermark to all pages
        pdf.ApplyStamp(watermark);

        // Save watermarked PDF
        pdf.SaveAs("watermarked.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing

Class Program
    Shared Sub Main()
        ' Load existing PDF
        Dim pdf = PdfDocument.FromFile("input.pdf")

        ' Create watermark
        Dim watermark = New TextStamper() With {
            .Text = "CONFIDENTIAL",
            .FontSize = 60,
            .Opacity = 50,
            .Rotation = 45,
            .VerticalAlignment = VerticalAlignment.Middle,
            .HorizontalAlignment = HorizontalAlignment.Center
        }

        ' Apply watermark to all pages
        pdf.ApplyStamp(watermark)

        ' Save watermarked PDF
        pdf.SaveAs("watermarked.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF의 TextStamper 클래스는 직관적인 정렬 옵션과 자동 페이지 반복 작업을 제공합니다. 도장 및 워터마킹 가이드는 추가 사용자 정의 옵션을 다룹니다.

디지털 서명

문서 서명은 기업용 애플리케이션에서 매우 중요합니다.

TallComponents 접근 방식:

using TallComponents.PDF;
using TallComponents.PDF.Signing;
using System.IO;
using System.Security.Cryptography.X509Certificates;

using (FileStream fs = new FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read))
{
    Document document = new Document(fs);

    X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
    SignatureField field = new SignatureField("Signature1");
    field.Sign(cert);
    document.Fields.Add(field);

    using (FileStream output = new FileStream("signed.pdf", FileMode.Create))
    {
        document.Write(output);
    }
}
using TallComponents.PDF;
using TallComponents.PDF.Signing;
using System.IO;
using System.Security.Cryptography.X509Certificates;

using (FileStream fs = new FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read))
{
    Document document = new Document(fs);

    X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
    SignatureField field = new SignatureField("Signature1");
    field.Sign(cert);
    document.Fields.Add(field);

    using (FileStream output = new FileStream("signed.pdf", FileMode.Create))
    {
        document.Write(output);
    }
}
Imports TallComponents.PDF
Imports TallComponents.PDF.Signing
Imports System.IO
Imports System.Security.Cryptography.X509Certificates

Using fs As New FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read)
    Dim document As New Document(fs)

    Dim cert As New X509Certificate2("certificate.pfx", "password")
    Dim field As New SignatureField("Signature1")
    field.Sign(cert)
    document.Fields.Add(field)

    Using output As New FileStream("signed.pdf", FileMode.Create)
        document.Write(output)
    End Using
End Using
$vbLabelText   $csharpLabel

IronPDF 접근법:

using IronPdf;
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("unsigned.pdf");

// Sign with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningLocation = "New York",
    SigningReason = "Document Approval"
};

pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("unsigned.pdf");

// Sign with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "support@company.com",
    SigningLocation = "New York",
    SigningReason = "Document Approval"
};

pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing

Dim pdf = PdfDocument.FromFile("unsigned.pdf")

' Sign with certificate
Dim signature = New PdfSignature("certificate.pfx", "password") With {
    .SigningContact = "support@company.com",
    .SigningLocation = "New York",
    .SigningReason = "Document Approval"
}

pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

IronPDF의 서명 API는 감사 추적에 중요한 연락처 정보, 위치 및 서명 이유에 대한 추가 메타데이터 속성을 포함합니다. 완전한 구현 세부 정보를 보려면 디지털 서명 문서를 탐색하십시오.

기능 비교:TallComponents대 IronPDF

기능 TallComponents IronPDF
상태 신규 라이선스에 폐쇄됨 (Apryse 2025-05-27 인수) 활성
지원 기존 고객만 전체
업데이트 유지 관리 전용 정기 기능 출시
콘텐츠 생성
HTML to PDF XHTML 1.0/1.1 +CSS 2.1 (XhtmlParagraph) Chromium을 통한 전체 HTML5/CSS3
URL을 PDF로 변환 XHTML URL에 대해서는 예 (XhtmlParagraph.Path)
CSS 지원 CSS 2.1 전체 CSS3
JavaScript 아니요 전체 ES2024
XML / 레이아웃 DOM 템플릿 예 (TallPDF.NET) 필요 없음 (HTML)
PDF 작업
PDF 병합 예 (Pages.Add(page.Clone())) 예 (PdfDocument.Merge)
PDF 분할
워터마크 page.Overlay.Add(TextShape) pdf.ApplyStamp(...)
헤더/푸터 레이아웃 DOM HTML/CSS
보안
비밀번호 보호 예 (PasswordSecurity)
디지털 서명 예 (SignatureField.Sign)
암호화 RC4 /AES-128 / AES-256 AES-128 / AES-256
PDF/A PDF/A-1, PDF/A-2, PDF/A-3
플랫폼
대상 프레임워크 PDFKit5: .NET Standard 2.0; PDFKit (4.x): .NET Framework 2.0 .NET Framework 4.6.2+, .NET 6/7/8/9
개발
학습 곡선 XML / 레이아웃 DOM HTML
문서화 인수 시점에 고정됨; 새 문서는 Apryse / iText로 경로 설정 유지됨
Community 조용함 (신규 판매 없음) 활성

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

이동 전 작업

코드 베이스를 감사하여 모든TallComponents사용을 식별하십시오:

grep -r "using TallComponents" --include="*.cs" .
grep -rE "XhtmlParagraph|TextParagraph|PasswordSecurity|page\.Overlay" --include="*.cs" .
grep -r "using TallComponents" --include="*.cs" .
grep -rE "XhtmlParagraph|TextParagraph|PasswordSecurity|page\.Overlay" --include="*.cs" .
SHELL

기존 XML/레이아웃 템플릿을 문서화하십시오—이들은 HTML로 변환될 것입니다. 현재 사용 중인 보안 설정을 파악하고 비밀번호 구성 및 디지털 서명 구현을 기록하십시오.

코드 업데이트 작업

  1. NuGet를 통해TallComponents패키지 제거 2.IronPDF Install-Package
  2. XHTML / 레이아웃 DOM 템플릿을 HTML5로 변환
  3. Section/Paragraph 모델을HTML요소로 교체
  4. 표 코드를 표준HTML테이블로 업데이트
  5. 헤더/푸터를 HTML로 변환하여 HtmlHeaderFooter 사용
  6. 보안 설정을 갱신하여 pdf.SecuritySettings 사용
  7. 시작 시 라이선스 초기화를 추가

헤더 및 푸터 마이그레이션

TallPDF.NET은 페이지 헤더를 위해 레이아웃 DOM (Section.Header / Section.Footer)을 사용합니다. IronPDF는 동적 플레이스홀더가 포함된HTML기반 헤더를 제공합니다:

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
    MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
    MaxHeight = 25
};
Imports System

renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
    .MaxHeight = 25
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
    .MaxHeight = 25
}
$vbLabelText   $csharpLabel

IronPDF의 헤더 및 푸터에 대해 자세히 알아보기.

테스트 단계

1.TallComponents버전과IronPDF버전 간의 시각적 출력을 비교

  1. 모든 문서 템플릿 테스트
  2. PDF 병합 기능 유효성 검사
  3. 디지털 서명 테스트
  4. 보안 설정이 올바르게 적용되었는지 확인

권장 마이그레이션 일정

TallComponents는 신규 라이선스에 폐쇄되고 유지 관리 지원만 제공되므로, 자신의 페이스에 맞춰 이동을 계획하되 지연하지 마세요:

1주 차: 코드 베이스 감사 및 모든TallComponents사용 식별
주 2: XHTML / 레이아웃 템플릿을 HTML5로 변환
3주 차: 보안, 병합 및 서명 코드 업데이트
4주 차: 테스트 및 프로덕션 배포

스택이 TallComponents에 머무는 시간이 길어질수록 현재 .NET 타겟과 현재 HTML에서 멀어지게 됩니다.

참고해 주세요Apryse, PDFKit, Tall Components, iText는 각 소유자의 등록 상표입니다. 이 사이트는 Apryse, PDFKit, PDFTron, TallComponents, iText Group과 관련이 없으며, 그에 의해 보증 또는 후원받지 않습니다. 모든 제품명, 로고 및 브랜드는 각 소유자의 재산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

Curtis Chau
기술 문서 작성자

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

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

아이언 서포트 팀

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