IRONSOFTWAREHOME
동영상

C#을 사용하여 XML을 PDF로 변환하는 방법

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

PdfPig에서 IronPDF로의 마이그레이션은 좌표 기반 저작 및 기본 병합을 위한 좁은 작성 표면이 있는 읽기 중심의 라이브러리에서 생성, 변조, 텍스트 추출 및 보안 기능을 처리하는 종합적인 PDF 솔루션으로 PDF 기능을 확장합니다. 이 가이드는 PdfPig가 제공하지 않는 HTML 변환, 고급 문서 조작, 워터마킹 및 보안 저작을 추가하면서 기존 추출 워크플로를 유지하는 완전하고 단계적인 마이그레이션 경로를 제공합니다.

왜 PdfPig에서 IronPDF로 마이그레이션해야 하는가

PdfPig이해하기

PdfPig (NuGet 패키지 PdfPig, 네임스페이스 UglyToad.PdfPig)은 오픈 소스 .NET PDF 읽기 및 추출 라이브러리로, 원래 Apache PDFBox Java 프로젝트에서 영감을 받아 부분적으로 포팅되었습니다. 개발자가 PDF의 구조적 콘텐츠에 고정밀로 접근할 수 있도록 합니다. PdfPig는 추출에서 뛰어나지만 그 범위는 전체 수명주기의 상업 라이브러리보다 좁습니다. 프로젝트는 여전히 1.0 이전 단계에 있으며(현재 안정 버전은 0.1.14), README에서 "버전이 1.0.0 이하일 때는 경고 없이 공용 API가 변경될 수 있습니다"라고 명시합니다.

PdfPig는 텍스트 추출용 신뢰할 수 있는 도구 (문자 및 단어 수준의 위치 포함), 이미지, 읽기 전용 양식 데이터, 주석 및 메타데이터를 제공합니다. 또한 제한된 작성자 인터페이스 — 낮은 수준의 신규 문서 작성용 PdfDocumentBuilder 및 기존 PDF를 연결하기 위한 PdfMerger (UglyToad.PdfPig.Writer 안에 있음)도 제공합니다. 이는 주로 문서 분석, 데이터 마이닝 및 기본 연결에 중점을 둔 애플리케이션에 적합한 선택입니다.

읽기 중심의 제한

PdfPig는 읽기를 우선시하며, 작성 표면이 의도적으로 좁습니다. 애플리케이션이 추출 및 기본 병합을 넘어 성장해야 할 때, PdfPig는 도움이 되지 않습니다:

  1. 제한된 PDF 생성: 신규 문서에는 PdfDocumentBuilder를 통한 수동 PdfPoint 좌표 배치가 필요하며, 고수준 레이아웃이 없습니다.

  2. HTML-에서-PDF 없음: PdfPig는 PDF 생성 라이브러리가 아니라 PDF 읽기/파싱 라이브러리입니다. HTML을 PDF로 변환하려면 다른 라이브러리를 사용해야 합니다.

  3. 제한된 문서 조작: PdfMerger가 연결을 가능하게 하지만, 고수준의 분할/회전/편집 API가 없습니다.

  4. 보안 저작 불가: 암호화된 PDF를 읽을 수 있지만 (비밀번호 포함) 암호, 암호화, 디지털 서명을 추가할 수 없습니다.

  5. 워터마크/스탬프 없음: 기존 문서에 시각적 오버레이를 위한 고급 API가 없습니다.

  6. 양식 채우기 불가: 양식은 읽기 전용이며 값을 변경하거나 추가할 수 없습니다.

PdfPig대IronPDF비교

기능PdfPigIronPDF
라이선스오픈 소스 (Apache 2.0)상업적
NuGet 패키지PdfPig (v0.1.14, pre-1.0)IronPdf
PDF 읽기/추출우수함우수함
PDF 생성제한적(좌표 기반 PdfDocumentBuilder 통해)포괄적
HTML to PDF지원되지 않음지원됨
텍스트 추출우수 (단어 경계 박스로)우수 (텍스트 전용)
PDF 병합지원됨 (PdfMerger)지원됨 (PdfDocument.Merge)
분할 / 회전 / 편집지원되지 않음 (고급)지원됨
워터마크지원되지 않음지원됨
보안/암호화 저작지원되지 않음지원됨
지원 및 문서커뮤니티 지원전용 지원
페이지 색인1 기반0 기반

IronPDF는 PDF를 생성, 읽기, 편집 및 서명하는 데 필요한 완전한 기능 세트를 지원합니다. 이 유연성은 개발자가 현대 .NET에서 PDF 파일을 처음부터 끝까지 관리할 수 있게 하여 PdfPig의 읽기 기능을 넘어서는 완전한 PDF 수명 주기 솔루션을 제공합니다.


시작하기 전에

필수 조건

  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 PdfPig
dotnet remove package PdfPig

# Install IronPDF
dotnet add package IronPdf
SHELL

라이선스 구성

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

PdfPig사용 식별

# FindPdfPigusage
grep -r "UglyToad\.PdfPig\|PdfDocument\.Open\|GetPages\(\)" --include="*.cs" .

# Find page index references (may need 1→0 conversion)
grep -r "GetPage(\|NumberOfPages" --include="*.cs" .
SHELL

완전한 API 참조

네임스페이스 변경

// Before: PdfPig
using UglyToad.PdfPig;
using UglyToad.PdfPig.Content;
using UglyToad.PdfPig.DocumentLayoutAnalysis.WordExtractor;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

문서 로딩 매핑

PdfPigIronPDF
PdfDocument.Open(path)PdfDocument.FromFile(path)
PdfDocument.Open(bytes)PdfDocument.FromBinaryData(bytes)
PdfDocument.Open(stream)PdfDocument.FromStream(stream)
using (var doc = ...)var pdf = ...

페이지 접근 및 속성 매핑

PdfPigIronPDF
document.NumberOfPagespdf.PageCount
document.GetPages()pdf.Pages
document.GetPage(1)pdf.Pages[0]

텍스트 추출 매핑

PdfPigIronPDF
page.Textpdf.Pages[i].Text
page.GetWords()pdf.ExtractTextFromPage(i)
(manual loop)pdf.ExtractAllText()

메타데이터 접근 매핑

PdfPigIronPDF
document.Information.Titlepdf.MetaData.Title
document.Information.Authorpdf.MetaData.Author
document.Information.Subjectpdf.MetaData.Subject
document.Information.Creatorpdf.MetaData.Creator
document.Information.Producerpdf.MetaData.Producer

PdfPig에서 사용할 수 없는 새로운 기능

IronPDF기능설명
renderer.RenderHtmlAsPdf(html)HTML을 PDF로 변환
renderer.RenderUrlAsPdf(url)URL을 PDF로 변환
pdf.ApplyWatermark(html)워터마크 추가
pdf.SecuritySettings.UserPassword암호 보호
pdf.Sign(certificate)디지털 서명

참고: PDF 병합은 두 라이브러리에서 사용할 수 있습니다(PdfPig에서 PdfMerger, IronPDF에서 PdfDocument.Merge).


코드 마이그레이션 예제

예제 1: PDF에서 텍스트 추출

이전 (PdfPig):

// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;
using System.Text;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var text = new StringBuilder();
            foreach (var page in document.GetPages())
            {
                text.AppendLine(page.Text);
            }
            Console.WriteLine(text.ToString());
        }
    }
}

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}

PdfPig와IronPDF둘 다 뛰어난 텍스트 추출 기능을 제공합니다. 주요 차이점은 코드 패턴에 있습니다. PdfPig은 using 문을 PdfDocument.Open()와 함께 사용해 페이지를 수동으로 반복하고, 각 page.Text 속성에서 텍스트를 축적하기 위해 StringBuilder가 필요합니다.

IronPDF는 이 과정을 간단하게 처리하여: PdfDocument.FromFile()가 문서를 로드하고, ExtractAllText()가 모든 텍스트 내용을 한 번에 반환합니다. using 문이 필요 없으며, 수동 반복이나 StringBuilder가 필요 없습니다. 추가 옵션은 텍스트 추출 문서를 참조하세요.

예제 2: HTML을 PDF로 변환

이전 (PdfPig):

PdfPig는 HTML을 PDF로 변환하는 것을 지원하지 않습니다. PdfPig는 PDF를 읽고 구문 분석하는 라이브러리이며, PDF 생성 라이브러리가 아닙니다. HTML을 PDF로 변환하려면 다른 라이브러리를 사용해야 합니다.

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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

이 예제는 가장 중요한 기능 격차를 강조합니다. PdfPig는 명시적으로 'HTML을 PDF로 변환 지원하지 않음' 및 'PDF를 읽고/구문 분석하는 라이브러리, PDF 생성 라이브러리가 아님'을 명시합니다. PdfPig를 사용하여 HTML에서 PDF를 생성해야 하는 경우 완전히 다른 라이브러리를 사용해야 할 것입니다.

IronPDF는 ChromePdfRenderer를 통해 네이티브 HTML에서 PDF로의 변환을 제공합니다. RenderHtmlAsPdf() 메서드는 HTML 문자열을 받아 이를 PDF 문서로 변환하며, 내부에서 Chromium 엔진을 사용하여 HTML, CSS, JavaScript를 정확하게 렌더링합니다. 결과 PdfDocumentSaveAs()로 저장할 수 있으며 저장하기 전에 추가로 조작할 수 있습니다. HTML에서 PDF로의 문서에서 포괄적인 예제를 참조하세요.

예제 3: PDF 메타데이터 읽기

이전 (PdfPig):

// NuGet: Install-Package PdfPig
using UglyToad.PdfPig;
using System;

class Program
{
    static void Main()
    {
        using (var document = PdfDocument.Open("input.pdf"))
        {
            var info = document.Information;
            Console.WriteLine($"Title: {info.Title}");
            Console.WriteLine($"Author: {info.Author}");
            Console.WriteLine($"Subject: {info.Subject}");
            Console.WriteLine($"Creator: {info.Creator}");
            Console.WriteLine($"Producer: {info.Producer}");
            Console.WriteLine($"Number of Pages: {document.NumberOfPages}");
        }
    }
}

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        var info = pdf.MetaData;
        Console.WriteLine($"Title: {info.Title}");
        Console.WriteLine($"Author: {info.Author}");
        Console.WriteLine($"Subject: {info.Subject}");
        Console.WriteLine($"Creator: {info.Creator}");
        Console.WriteLine($"Producer: {info.Producer}");
        Console.WriteLine($"Number of Pages: {pdf.PageCount}");
    }
}

두 라이브러리 모두 거의 동일한 패턴으로 메타데이터 접근을 제공합니다. PdfPig은 document.Information를 통해 메타데이터에 접근하고 document.NumberOfPages를 통해 페이지 수를 확인합니다. IronPDF는 메타데이터에 pdf.MetaData를 사용하고 페이지 수에 pdf.PageCount를 사용합니다.

마이그레이션은 간단합니다: PdfDocument.Open()PdfDocument.FromFile()로, document.Informationpdf.MetaData로, document.NumberOfPagespdf.PageCount로 대체하십시오. IronPDF는 using 문이 필요 없으므로 제거하십시오.


중요한 마이그레이션 노트

페이지 색인 변경

PdfPig는 1-기반 인덱싱을 사용합니다; IronPDF는 0-기반을 사용합니다:

// PdfPig:1 기반indexing
var firstPage = document.GetPage(1);  // First page

// IronPDF:0 기반indexing
var firstPage = pdf.Pages[0];  // First page

// Migration helper
int pdfPigIndex = 1;
int ironPdfIndex = pdfPigIndex - 1;

사용 명령문이 필요 없습니다

// PdfPig: Requires using for disposal
using (var document = PdfDocument.Open("input.pdf"))
{
    // ...
}

// IronPDF: No using required (but can use for cleanup)
var pdf = PdfDocument.FromFile("input.pdf");
// ...
// pdf.Dispose(); // Optional

문서 로딩 변경

// PdfPig: PdfDocument.Open()
using (var document = PdfDocument.Open("input.pdf"))

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("input.pdf");

메타데이터 속성명 변경

// PdfPig: document.Information
var info = document.Information;

// IronPDF: pdf.MetaData
var info = pdf.MetaData;

페이지 수 속성 변경

// PdfPig: document.NumberOfPages
Console.WriteLine($"Pages: {document.NumberOfPages}");

// IronPDF: pdf.PageCount
Console.WriteLine($"Pages: {pdf.PageCount}");

이동 후 새로운 기능

IronPDF로 마이그레이션한 후에는 PdfPig가 제공할 수 없는 기능을 얻게 됩니다:

PDF 병합

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");

워터마크

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");

비밀번호 보호

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";

디지털 서명

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

기능 비교 요약

기능PdfPigIronPDF
텍스트 추출
메타데이터 접근
이미지 추출
PDF 생성제한 (좌표 기반)
HTML to PDF
URL을 PDF로 변환
PDF 병합✓(PdfMerger)
PDF 분할
워터마크
폼 채우기
비밀번호 보호
디지털 서명
단어 위치 데이터

마이그레이션 체크리스트

사전 마이그레이션

  • 코드베이스에서 모든PdfPig사용을 인벤토리하십시오
  • 단어 수준 위치 데이터가 필요한지 식별하세요 (혼합 접근 방식 고려)
  • 모든 페이지 인덱스 참조를 주의하세요 (1-기반에서 0-기반으로 변환) -IronPDF라이선스 키 저장 계획 (환경 변수 권장) -IronPDF체험판 라이선스로 먼저 테스트

패키지 변경 사항

  • PdfPig NuGet 패키지 제거: dotnet remove package PdfPig
  • IronPdf NuGet Install-Package: dotnet add package IronPdf

코드 변경 사항

  • 네임스페이스 가져오기 업데이트 (using UglyToad.PdfPig;using IronPdf;)
  • PdfDocument.Open()PdfDocument.FromFile()로 대체하십시오.
  • document.Informationpdf.MetaData로 대체하십시오.
  • document.NumberOfPagespdf.PageCount로 대체하십시오.
  • 페이지 인덱스를 1 기반에서 0 기반으로 변환합니다
  • using 문 제거(선택 사항, IronPDF는 필요하지 않음)
  • 응용 프로그램 시작 시IronPDF라이선스 키를 추가합니다

마이그레이션 이후

  • 텍스트 추출 출력이 예상과 일치하는지 테스트합니다
  • 모든 PDF 생성 시나리오를 테스트합니다
  • 필요에 따라 새로운 기능 추가 (병합, 워터마크, 보안)
  • 리눅스에 배포하는 경우 리눅스 종속성을 설치합니다

참고해 주세요: Apache PDFBox 및 PdfPig는 해당 소유자의 등록 상표입니다. 이 사이트는 Apache Software Foundation 또는 UglyToad와 관련이 없으며, 이들로부터 승인이나 후원을 받지 않습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.
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일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.