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

C#에서 iText에서 IronPDF로 마이그레이션하는 방법

iText에서 IronPDF로 마이그레이션하면 .NET PDF 워크플로를 코드 내에서 Paragraph, Table, Cell 객체를 작성하는 프로그래밍 API에서 CSS3 및 JavaScript 지원이 포함된 HTML 우선 접근 방식으로 이동합니다. 이 지침은 AGPL 노출과 별도의 pdfHTML 추가 기능의 필요성을 제거하는 점진적 마이그레이션 경로를 제공합니다.

iText에서 IronPDF로의 이주 이유

AGPL 라이선스 고려 사항

iText (iText Group / Apryse Group NV 소유)는 상업 팀이 사전에 고려해야 할 라이선스 특성을 포함하고 있습니다:

  1. AGPL 바이럴 라이선스: 웹 응용 프로그램에서 iText를 오픈 소스 라이선스로 사용하는 경우, AGPL은 일반적으로 네트워크를 통해 상호 작용하는 모든 사람에게 응용 프로그램의 소스를 공개해야 한다고 해석됩니다. 폐쇄형 상용 소프트웨어의 경우 보통 상업용 라이선스를 구매해야 함을 의미합니다.

  2. 구독 전용 상용 라이선싱: iText의 상용 라이선스는 PDF 처리량을 기준으로 연간 구독으로 판매됩니다; 영구 옵션은 공공 가격 페이지에 광고되지 않으며 (사용자 정의 OEM 조건은 견적 전용입니다).

  3. pdfHTML 추가 비용: HTML을 PDF로 변환하려면 별도로 판매되는 itext.pdfhtml 추가 기능(현재 6.3.2)이 필요하며, 이는 핵심 itext 패키지(현재 9.6.0) 위에 판매됩니다.

  4. 복잡한 라이선스 감사: Enterprise 배포는 라이선스 복잡성과 감사 위험에 직면해 있습니다.

  5. 프로그램 우선 API: 코어 iText는 코드 내에서 Paragraph, Table, Cell 객체를 구성하여 PDF를 생성합니다. pdfHTML은 HTML에서 시작할 수 있게 합니다.

  6. 정의된 CSS 서브셋, 렌더링 시 JS 없음: pdfHTML은 CSS의 정의된 서브셋을 지원하며 HTML을 PDF로 변환하는 동안 JavaScript를 실행하지 않습니다 (PDF 수준의 JS 양식 작업은 별도의 지원 기능입니다).

iText vsIronPDF비교

기능 iText 9 / iTextSharp 5.x IronPDF
라이선스 AGPL (바이럴) 또는 상업용 연간 구독 상업적, 영구적 옵션
HTML-to-PDF 별도의 itext.pdfhtml 추가 기능 (6.3.2) 내장 Chromium 렌더러
CSS 지원 pdfHTML의 정의된 CSS 서브셋 완전한 CSS3, Flexbox, Grid
렌더링 시 JavaScript pdfHTML은 HTML→PDF 변환 중 JS를 실행하지 않습니다 렌더링 시 전체 JS 실행
API 패러다임 프로그래매틱 (단락, 표, 셀) HTML 우선, CSS 포함
학습 곡선 가파름 (PDF 좌표계) 웹 개발자 친화적
오픈 소스 위험 AGPL 하에 웹 앱을 오픈 소스로 공개해야 함 바이러스성 요구 사항 없음
가격 모델 연간 구독 (볼륨 기반) 또는 사용자 정의 OEM 영구적 또는 구독

현대적인 .NET을 표준화하는 팀에게는 IronPDF의 HTML 우선 접근 방식이 팀이 이미 보유한 웹 개발 기술에 의존합니다.


마이그레이션 복잡성 평가

기능별 예상 노력

기능 마이그레이션 복잡성
HTML to PDF 매우 낮음
PDF 병합 낮음
텍스트 및 이미지 낮음
중간
헤더/푸터 중간
보안/암호화 낮음

패러다임 전환

이 iText 마이그레이션의 근본적인 변화는 프로그래매틱 PDF 구성에서 HTML 우선 렌더링으로 입니다:

iText:    PdfWriter → PdfDocument → Document → Add(Paragraph) → Add(Table)
IronPDF:  ChromePdfRenderer → RenderHtmlAsPdf(htmlString) → SaveAs()

이 패러다임의 전환은 해방적입니다: iText의 객체 모델을 배우는 대신, 웹 개발자가 이미 보유한 HTML 및 CSS 기술을 사용합니다.


시작하기 전에

필수 조건

  1. .NET 환경: .NET Framework 4.6.2+ 또는 .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet 접근 권한: NuGet 패키지를 설치할 수 있는 능력
  3. IronPDF 라이선스: ironpdf.com에서 라이선스 키를 획득하세요

NuGet 패키지 변경 사항

# Remove iText packages (current naming is 'itext'; 'itext7' is the deprecated alias)
dotnet remove package itext
dotnet remove package itext.pdfhtml
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp

# Install IronPDF
dotnet add package IronPdf
# Remove iText packages (current naming is 'itext'; 'itext7' is the deprecated alias)
dotnet remove package itext
dotnet remove package itext.pdfhtml
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp

# Install IronPDF
dotnet add package IronPdf
SHELL

라이선스 구성

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

iText 사용 식별

# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
SHELL

완전한 API 참조

클래스 매핑

iText 7+ 클래스 iTextSharp 5.x 클래스 IronPDF 동등
PdfWriter PdfWriter ChromePdfRenderer
PdfDocument Document PdfDocument
Document Document ChromePdfRenderer.RenderHtmlAsPdf()
Paragraph Paragraph HTML <p>, <h1>, 등
Table PdfPTable HTML
Cell PdfPCell HTML ,
Image Image HTML
PdfReader PdfReader PdfDocument.FromFile()
PdfMerger 해당 없음 PdfDocument.Merge()

네임스페이스 매핑

iText 네임스페이스 IronPDF 동등
iText.Kernel.Pdf IronPdf
iText.Layout IronPdf
iText.Layout.Element HTML 요소 사용
iText.Html2pdf IronPdf (내장형)
iText.IO.Image HTML 사용
iText.Kernel.Utils IronPdf

코드 마이그레이션 예제

예제 1: HTML에서 PDF로 변환

이전 (iText):

// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
        string outputPath = "output.pdf";

        using (FileStream fs = new FileStream(outputPath, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, fs);
        }
    }
}
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
        string outputPath = "output.pdf";

        using (FileStream fs = new FileStream(outputPath, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, fs);
        }
    }
}
Imports iText.Html2pdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
        Dim outputPath As String = "output.pdf"

        Using fs As FileStream = New FileStream(outputPath, FileMode.Create)
            HtmlConverter.ConvertToPdf(html, fs)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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

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

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

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

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

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

iText 접근 방식은 별도의 itext.pdfhtml 패키지(pdfHTML 추가 기능, 현재 6.3.2, itext 9.6.0 위에 별도 판매), FileStream 생성, 적절한 처리를 위해 모든 항목을 using 구문으로 감싸는 것을 요구합니다. HtmlConverter.ConvertToPdf() 메소드는 스트림에 직접 기록합니다.

IronPDF 접근 방식이 더 깔끔합니다: ChromePdfRenderer 생성, HTML 문자열로 RenderHtmlAsPdf() 호출, 결과 PdfDocumentSaveAs() 호출. 별도의 패키지나 스트림 관리가 필요 없으며, Chromium 렌더링 엔진은 우수한 CSS3 및 JavaScript 지원을 제공합니다. HTML to PDF 문서에서 추가 렌더링 옵션을 참조하십시오.

예제 2: 여러 PDF 병합

이전 (iText):

// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;

class Program
{
    static void Main()
    {
        string outputPath = "merged.pdf";
        string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdfDoc = new PdfDocument(writer))
        {
            PdfMerger merger = new PdfMerger(pdfDoc);

            foreach (string file in inputFiles)
            {
                using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
                {
                    merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                }
            }
        }
    }
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;

class Program
{
    static void Main()
    {
        string outputPath = "merged.pdf";
        string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdfDoc = new PdfDocument(writer))
        {
            PdfMerger merger = new PdfMerger(pdfDoc);

            foreach (string file in inputFiles)
            {
                using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
                {
                    merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                }
            }
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Utils
Imports System.IO

Class Program
    Shared Sub Main()
        Dim outputPath As String = "merged.pdf"
        Dim inputFiles As String() = {"document1.pdf", "document2.pdf", "document3.pdf"}

        Using writer As New PdfWriter(outputPath)
            Using pdfDoc As New PdfDocument(writer)
                Dim merger As New PdfMerger(pdfDoc)

                For Each file As String In inputFiles
                    Using sourcePdf As New PdfDocument(New PdfReader(file))
                        merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
                    End Using
                Next
            End Using
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfDocuments = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        };

        var merged = PdfDocument.Merge(pdfDocuments);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfDocuments = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        };

        var merged = PdfDocument.Merge(pdfDocuments);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic

Class Program
    Shared Sub Main()
        Dim pdfDocuments As New List(Of PdfDocument) From {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        }

        Dim merged = PdfDocument.Merge(pdfDocuments)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

iText 병합 작업은 상당한 보일러플레이트가 필요합니다: 출력용 PdfWriter 생성, 이것을 PdfDocument에 감싸고 PdfMerger 생성, 소스 파일을 통해 각 PdfDocumentPdfReader에 중첩된 using 구문으로 반복. merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())로 페이지 범위도 지정해야 합니다.

IronPDF는 이를 세 단계로 줄입니다: PdfDocument.FromFile()로 문서 로드, 리스트로 정적 PdfDocument.Merge() 메소드 호출, 저장. 전체 병합 작업이 읽기 쉽고 유지 관리 가능합니다. PDF 병합 및 분할에 대해 더 알아보세요.

예제 3: 텍스트 및 이미지를 포함한 PDF 생성

이전 (iText):

// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;

class Program
{
    static void Main()
    {
        string outputPath = "document.pdf";

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdf = new PdfDocument(writer))
        using (Document document = new Document(pdf))
        {
            document.Add(new Paragraph("Sample PDF Document"));
            document.Add(new Paragraph("This document contains text and an image."));

            Image img = new Image(ImageDataFactory.Create("image.jpg"));
            img.SetWidth(200);
            document.Add(img);
        }
    }
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;

class Program
{
    static void Main()
    {
        string outputPath = "document.pdf";

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdf = new PdfDocument(writer))
        using (Document document = new Document(pdf))
        {
            document.Add(new Paragraph("Sample PDF Document"));
            document.Add(new Paragraph("This document contains text and an image."));

            Image img = new Image(ImageDataFactory.Create("image.jpg"));
            img.SetWidth(200);
            document.Add(img);
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.IO.Image

Class Program
    Shared Sub Main()
        Dim outputPath As String = "document.pdf"

        Using writer As New PdfWriter(outputPath),
              pdf As New PdfDocument(writer),
              document As New Document(pdf)

            document.Add(New Paragraph("Sample PDF Document"))
            document.Add(New Paragraph("This document contains text and an image."))

            Dim img As New Image(ImageDataFactory.Create("image.jpg"))
            img.SetWidth(200)
            document.Add(img)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />";

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />";

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

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />"

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

이 예제는 패러다임 변화를 가장 명확하게 보여줍니다. iText는 다음이 필요합니다:

  • 삼중 중첩 using 구문 (PdfWriter, PdfDocument, Document)
  • new Paragraph()로 각 텍스트 요소에 대해 Paragraph 객체 생성
  • 이미지를 로드하기 위해 ImageDataFactory.Create() 사용
  • Image 객체 생성 및 SetWidth()를 별도로 호출
  • 각 요소에 대해 document.Add() 호출

IronPDF는 표준 HTML을 사용합니다: 제목에 대해

, 문단에 대해

, width 속성이 있는 이미지에 대해 . 웹 개발자는 즉시 기존 기술을 활용할 수 있으며, 디자이너는 이미 알고 있는 CSS로 문서를 디자인할 수 있습니다.


중요한 마이그레이션 노트

패러다임 전환: 프로그래밍 방식에서 HTML 우선으로

이 iText 마이그레이션에서 가장 큰 변화는 개념적입니다. iText는 프로그래밍 방식으로 PDF를 빌드합니다:

// iText approach
document.Add(new Paragraph("Title")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(24)
    .SetBold());

var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
// iText approach
document.Add(new Paragraph("Title")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(24)
    .SetBold());

var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
' iText approach
document.Add(New Paragraph("Title") _
    .SetTextAlignment(TextAlignment.CENTER) _
    .SetFontSize(24) _
    .SetBold())

Dim table = New Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth()
table.AddHeaderCell(New Cell().Add(New Paragraph("ID")))
table.AddHeaderCell(New Cell().Add(New Paragraph("Name")))
' ... many more lines
$vbLabelText   $csharpLabel

IronPDF는 HTML과 CSS를 사용합니다:

//IronPDF approach
string html = @"
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>";

var pdf = renderer.RenderHtmlAsPdf(html);
//IronPDF approach
string html = @"
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>";

var pdf = renderer.RenderHtmlAsPdf(html);
Imports IronPdf

Dim html As String = "
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

AGPL 노출 제거됨

iText의 AGPL 약관에 따라 iText를 사용하는 웹 응용 프로그램은 일반적으로 네트워크를 통해 상호 작용하는 모든 사람에게 소스를 공개해야 함이 예상됩니다; 상업적 라이센스가 대안 경로입니다. IronPDF의 상용 라이선스는 독점 소프트웨어에 바이럴 라이선스 요구 사항 없이 배포할 수 있게 합니다.

pdfHTML 추가 기능이 필요하지 않음

iText는 HTML을 PDF로 변환하기 위해 별도의 itext.pdfhtml 추가 기능(현재 6.3.2)이 필요하며, 이는 핵심 itext 패키지 위에 판매됩니다. IronPDF는 기본 패키지에 Chromium 기반 HTML 렌더링을 포함합니다.

메서드 교체 패턴

iText 패턴 IronPDF 교체
SetTextAlignment(TextAlignment.CENTER) CSS text-align: center
SetFontSize(24) CSS font-size: 24px
SetBold() CSS font-weight: bold
new Table(3) HTML
AddHeaderCell(new Cell().Add(new Paragraph())) HTML
AddCell(new Cell().Add(new Paragraph())) HTML

문제 해결

문제 1: PdfWriter/문서 패턴

문제: 코드가 PdfWriterPdfDocumentDocument 중첩 패턴을 사용합니다.

해결책: ChromePdfRenderer 로 교체:

// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
$vbLabelText   $csharpLabel

문제 2: HtmlConverter를 찾을 수 없음

문제: 코드가 별도로 구매한 itext.pdfhtml 추가 기능에 iText.Html2pdf.HtmlConverter 사용.

해결책: IronPDF의 내장 HTML 렌더링을 사용하세요:

// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);

//IronPDF(built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);

//IronPDF(built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
' iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream)

' IronPDF(built-in)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
$vbLabelText   $csharpLabel

문제 3: PdfMerger 복잡성

문제: iText의 PdfMerger은 중첩된 리더와 페이지 범위 지정을 필요로 합니다.

해결책: IronPDF의 정적 병합 메서드를 사용하세요:

// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
//     PdfMerger merger = new PdfMerger(pdfDoc);
//     foreach (string file in inputFiles)
//     {
//         using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
//         {
//             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//         }
//     }
// }

//IronPDF(simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
//     PdfMerger merger = new PdfMerger(pdfDoc);
//     foreach (string file in inputFiles)
//     {
//         using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
//         {
//             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//         }
//     }
// }

//IronPDF(simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
Imports System.Collections.Generic

' iText merger pattern (delete this)
' Using pdfDoc As New PdfDocument(writer)
'     Dim merger As New PdfMerger(pdfDoc)
'     For Each file As String In inputFiles
'         Using sourcePdf As New PdfDocument(New PdfReader(file))
'             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
'         End Using
'     Next
' End Using

' IronPDF(simple)
Dim merged = PdfDocument.Merge(pdfDocuments)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

마이그레이션 체크리스트

사전 마이그레이션

  • 코드베이스에서 모든 iText API 호출을 인벤토리화
  • 프로그래젝트 PDF 생성 패턴 식별 (문단, 테이블, 셀)
  • HtmlConverter 사용 문서화 (pdfHTML 애드온)
  • AGPL 준수 위험 평가 -IronPDF라이센스 키를 받으세요

코드 마이그레이션

  • iText NuGet 패키지 제거: dotnet remove package itext (및 더 이상 사용되지 않는 itext7 별칭, itext.pdfhtml / iTextSharp 포함된 경우) -IronPDF NuGet Install-Package: dotnet add package IronPdf
  • 네임스페이스 임포트 업데이트 (using iText.*using IronPdf)
  • Document 패턴을 ChromePdfRenderer로 교체
  • Cell을 HTML 요소로 변환
  • HtmlConverter.ConvertToPdf()RenderHtmlAsPdf()로 교체
  • 병합 작업을 PdfDocument.Merge()로 업데이트
  • 시작 시 라이선스 키 초기화 추가

테스트

  • 모든 PDF 생성 경로 테스트
  • 시각적 출력이 기대와 일치하는지 확인
  • 복잡한 HTML/CSS 콘텐츠로 테스트
  • 성능 벤치마크

마이그레이션 이후

  • iText 라이선스 파일 및 참조 제거
  • 문서 업데이트
  • iText 구독 취소 (해당되는 경우)
  • 레거시 iText 코드 아카이브

참고해 주세요iText는 해당 소유자의 등록 상표입니다. 이 사이트는 iText Group과 관련이 없으며, 승인되거나 후원되지 않았습니다. 모든 제품 이름, 로고, 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

Curtis Chau
기술 문서 작성자

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

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

아이언 서포트 팀

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