IRONSOFTWAREHOME
동영상

Chrome에서 HTML을 디버깅하여 픽셀 단위까지 완벽한 PDF를 만드는 방법

Curtis Chau
Curtis Chau
Updated: 2026년 7월 19일

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.xIronPDF
라이선스AGPL (바이럴) 또는 상업용 연간 구독상업적, 영구적 옵션
HTML-to-PDF별도의 itext.pdfhtml 추가 기능 (6.3.2)내장 Chromium 렌더러
CSS 지원pdfHTML의 정의된 CSS 서브셋완전한 CSS3, Flexbox, Grid
렌더링 시 JavaScriptpdfHTML은 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()
Text

이 패러다임의 전환은 해방적입니다: 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
SHELL

라이선스 구성

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

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" .
SHELL

완전한 API 참조

클래스 매핑

iText 7+ 클래스iTextSharp 5.x 클래스IronPDF 동등
PdfWriterPdfWriterChromePdfRenderer
PdfDocumentDocumentPdfDocument
DocumentDocumentChromePdfRenderer.RenderHtmlAsPdf()
ParagraphParagraphHTML <p>, <h1>, 등
TablePdfPTableHTML <table>
CellPdfPCellHTML <td>, <th>
ImageImageHTML <img>
PdfReaderPdfReaderPdfDocument.FromFile()
PdfMerger해당 없음PdfDocument.Merge()

네임스페이스 매핑

iText 네임스페이스IronPDF 동등
iText.Kernel.PdfIronPdf
iText.LayoutIronPdf
iText.Layout.ElementHTML 요소 사용
iText.Html2pdfIronPdf (내장형)
iText.IO.ImageHTML <img> 사용
iText.Kernel.UtilsIronPdf

코드 마이그레이션 예제

예제 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);
        }
    }
}

이후 (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");
    }
}

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());
                }
            }
        }
    }
}

이후 (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");
    }
}

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);
        }
    }
}

이후 (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");
    }
}

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

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

IronPDF는 표준 HTML을 사용합니다: 제목에 대해 <h1>, 문단에 대해 <p>, width 속성이 있는 이미지에 대해 <img>. 웹 개발자는 즉시 기존 기술을 활용할 수 있으며, 디자이너는 이미 알고 있는 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

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

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 <table>
AddHeaderCell(new Cell().Add(new Paragraph()))HTML <th>
AddCell(new Cell().Add(new Paragraph()))HTML <td>

문제 해결

문제 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);

문제 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);

문제 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 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를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

...
더 읽어보기

관련 기사

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.