IRONSOFTWAREHOME
동영상

C#에서 PDF 메타데이터를 설정하고 편집하는 방법

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

GdPicture.NET SDK에서 IronPDF로의 마이그레이션은 .NET 개발자에게 PDF 생성에 집중된 간결한 접근 방식을 제공합니다. 이 가이드는 복잡한 문서 이미징 SDK 패턴을 현대적인 .NET 개발을 위한 PDF 전용 API로 교체하는 포괄적이고 단계적인 마이그레이션 경로를 제공합니다.

GdPicture.NET SDK에서 IronPDF로 마이그레이션해야 하는 이유

GdPicture.NET SDK의 문제점

현재 Nutrient로 브랜드 변경된 GdPicture.NET SDK는 PDF 중심의 개발에 여러 도전 과제들이 있는 포괄적인 문서 이미징 SDK입니다:

  1. PDF 전용 프로젝트에 과도함: GdPicture.NET SDK는 OCR, 바코드 인식, 스캔 및 이미지 처리를 포함하는 완전한 문서 이미징 Suite입니다. PDF 기능만 필요하다면 절대 사용하지 않을 기능에 비용을 지불하는 것입니다.

  2. 복잡한 라이선스: 여러 제품 계층(GdPicture.NET 14, GdPicture.API, Ultimate, Professional)과 혼란스러운 SKU 조합 및 연간 구독 요구 사항.

  3. 기업 가격 정책: PDF 플러그인만으로도 라이선스 비용이 $2,999부터 시작하며, Ultimate 에디션은 $10,000 이상으로 증가할 수 있습니다. 개발자별 라이선스는 성장하는 팀에 상당한 오버헤드를 추가합니다.

  4. 학습 곡선의 높음: API는 현대적인 .NET 패턴이 아닌 문서 이미징 개념을 중심으로 설계되었습니다. 개별 메소드들, GdPictureStatus 열거형 확인, 1-인덱스 페이지 같은 방식은 현대 C# 관례에 비해 구시대적으로 느껴집니다.

  5. 상태 코드 패턴: 모든 작업은 GdPictureStatus 열거형을 반환하며, 오류 시 예외를 발생시키지 않아 오류 처리가 장황하고 반복적입니다.

  6. 수동 리소스 관리: 명시적으로 Dispose() 또는 Release() 호출이 필요합니다. SDK는 표준 .NET 폐기 패턴을 깨끗하게 따르지 않습니다.

  7. 버전 잠금: 네임스페이스 GdPicture14는 버전 번호를 포함하고 있어, 주요 버전 업그레이드는 전체 코드베이스에서 네임스페이스 변경이 필요합니다.

  8. 브랜드 변경 혼란: 최근 'Nutrient'로의 브랜드 변경은 gdpicture.com과 nutrient.io 간의 문서 분열을 일으켜 지원 및 학습을 복잡하게 만듭니다.

GdPicture.NET SDK와 IronPDF 비교

측면GdPicture.NET SDKIronPDF
초점문서 이미지 처리 제품군 (PDF에는 과잉임)PDF 전용 라이브러리
가격$2,999-$10,000+ Enterprise 계층경쟁적이며 비즈니스와 함께 확장
API 스타일상태 코드, 수동 관리예외 처리, IDisposable, 현대 .NET
학습 곡선가파른 (이미징 SDK 개념)간단한 (HTML/CSS 친숙)
HTML 렌더링기본, 내부 엔진최신 Chromium과 CSS3/JS
페이지 인덱싱1-인덱스0-인덱스 (표준 .NET)
스레드 안전성수동 동기화 필요설계상 스레드 안전
네임스페이스버전 특정 (GdPicture14)안정적 (IronPdf)

IronPDF는 현대적인 .NET 패턴 및 규칙과 일치하여, 최신 .NET 버전을 사용하는 팀에게 간편하게 적합합니다.


마이그레이션 복잡성 평가

기능별 예상 노력

기능마이그레이션 복잡성
HTML to PDF낮음
URL을 PDF로 변환낮음
PDF 병합낮음
PDF 분할낮음
워터마크낮음
텍스트 추출낮음
비밀번호 보호중간
양식 필드중간
디지털 서명중고
OCR높음
바코드 인식해당 없음

마이그레이션 의사결정 매트릭스

귀하의 상황권장 사항
PDF 전용 작업마이그레이션—상당한 단순화와 비용 절감
OCR 사용이 많음IronOCR를 보조 제품으로 고려하십시오
바코드/스캐닝 필요해당 기능에서는 GdPicture.NET SDK를 유지하고, PDF 용도로는 IronPDF를 사용하십시오.
전체 문서 이미징실제로 모든 기능을 사용하는지 평가하십시오

시작하기 전에

필수 조건

  1. .NET 버전: IronPDF는 .NET Framework 4.6.2+ 및 .NET Core 2.0+/ .NET 5+를 지원합니다.
  2. 라이선스 키: ironpdf.com에서 IronPDF 라이선스 키를 얻으세요.
  3. 백업: 마이그레이션 작업을 위한 분기를 생성하세요.

모든 GdPicture.NET SDK 사용 식별

# Find all GdPicture.NET SDK references in your codebase
grep -r "GdPicture14\|GdPicturePDF\|GdPictureDocumentConverter\|GdPictureStatus\|LicenseManager\.RegisterKEY" --include="*.cs" .

# Find all GdPicture package references
grep -r "GdPicture" --include="*.csproj" .
SHELL

NuGet 패키지 변경 사항

# Remove GdPicture.NET SDK packages
dotnet remove package GdPicture.NET.14
dotnet remove package GdPicture.NET.14.API
dotnet remove package GdPicture
dotnet remove package GdPicture.API

# Install IronPDF
dotnet add package IronPdf
SHELL

빠른 시작 마이그레이션

1단계: 라이선스 구성 업데이트

이전 (GdPicture.NET SDK):

// Must be called before any GdPicture.NET SDK operations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
C#

이후 (IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }

2단계: 네임스페이스 가져오기 업데이트

// Before (GdPicture.NET SDK)
using GdPicture14;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;

3단계: 기본 변환 패턴

GdPicture.NET SDK 마이그레이션에서 가장 중요한 변화는 자세한 상태 확인 패턴을 제거하는 것입니다:

이전 (GdPicture.NET SDK):

using GdPicture14;

LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");

using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
    GdPictureStatus status = converter.LoadFromHTMLString("<h1>Hello World</h1>");

    if (status == GdPictureStatus.OK)
    {
        status = converter.SaveAsPDF("output.pdf");

        if (status != GdPictureStatus.OK)
        {
            Console.WriteLine($"Error: {status}");
        }
    }
    else
    {
        Console.WriteLine($"Load error: {status}");
    }
}

이후 (IronPDF):

using IronPdf;

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");

주요 차이점:

  • 오류 시 예외 처리—상태 확인 필요 없음
  • 렌더러에 대한 명시적 해제 필요 없음
  • 최신 유창한 API
  • 향상된 HTML/CSS 지원을 위한 Chromium 기반 렌더링

완전한 API 참조

네임스페이스 매핑

GdPicture.NET SDKIronPDF
GdPicture14IronPdf
GdPicture14.PDFIronPdf
GdPicture14.Imaging해당 없음 (필요 없음)

핵심 클래스 매핑

GdPicture.NET SDKIronPDF설명
GdPicturePDFPdfDocument주요 PDF 문서 클래스
GdPictureDocumentConverterChromePdfRendererHTML/URL을 PDF로 변환
LicenseManagerIronPdf.License라이선스 관리
GdPictureStatus예외오류 처리

문서 로딩 메소드

GdPicture.NET SDKIronPDF
pdf.LoadFromFile(path, loadInMemory)PdfDocument.FromFile(path)
pdf.LoadFromFile(path, password, loadInMemory)PdfDocument.FromFile(path, password)
converter.LoadFromHTMLString(html)renderer.RenderHtmlAsPdf(html)
converter.LoadFromURL(url)renderer.RenderUrlAsPdf(url)

페이지 작업

GdPicture.NET SDKIronPDF
pdf.GetPageCount()pdf.PageCount
pdf.SelectPage(pageNo)pdf.Pages[index]
pdf.GetPageWidth()pdf.Pages[i].Width
pdf.GetPageHeight()pdf.Pages[i].Height

병합 및 분할 작업

GdPicture.NET SDKIronPDF
pdf1.MergePages(pdf2)PdfDocument.Merge(pdf1, pdf2)
pdf.ExtractPages(start, end)pdf.CopyPages(indices)

워터마크 작업

GdPicture.NET SDKIronPDF
pdf.DrawText(...) 루프pdf.ApplyWatermark(html)
pdf.SetTextColor(color)CSS 스타일링
pdf.SetTextSize(size)CSS 스타일링

코드 마이그레이션 예제

예제 1: HTML에서 PDF로 변환

이전 (GdPicture.NET SDK):

// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;

class Program
{
    static void Main()
    {
        using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
        {
            string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
            GdPictureStatus status = converter.LoadFromHTMLString(htmlContent);
            
            if (status == GdPictureStatus.OK)
            {
                converter.SaveAsPDF("output.pdf");
            }
        }
    }
}

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}

IronPDF의 ChromePdfRenderer은 현대식 Chromium 엔진을 사용하여 정확한 HTML/CSS 렌더링을 구현하여 상태 코드 확인이 필요 없습니다. 더 많은 HTML 렌더링 옵션을 보려면 HTML to PDF 문서를 참조하십시오.

예제 2: 여러 PDF 병합

이전 (GdPicture.NET SDK):

// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf1 = new GdPicturePDF())
        using (GdPicturePDF pdf2 = new GdPicturePDF())
        {
            pdf1.LoadFromFile("document1.pdf", false);
            pdf2.LoadFromFile("document2.pdf", false);
            
            pdf1.MergePages(pdf2);
            pdf1.SaveToFile("merged.pdf");
        }
    }
}

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        
        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}

IronPDF의 정적 Merge 메소드는 문서 목록을 받아들여 여러 개의 PDF를 단일 작업에서 쉽게 결합할 수 있습니다. PDF 병합 및 분할에 대해 더 알아보세요.

예제 3: 모든 페이지에 워터마크 추가

이전 (GdPicture.NET SDK):

// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            pdf.LoadFromFile("input.pdf", false);
            
            for (int i = 1; i <= pdf.GetPageCount(); i++)
            {
                pdf.SelectPage(i);
                pdf.SetTextColor(Color.Red);
                pdf.SetTextSize(48);
                pdf.DrawText("CONFIDENTIAL", 200, 400);
            }
            
            pdf.SaveToFile("watermarked.pdf");
        }
    }
}

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("input.pdf");
        
        pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center);
        
        pdf.SaveAs("watermarked.pdf");
    }
}

GdPicture.NET SDK 마이그레이션의 랜더링 기반 텍스트 그리기에서 HTML 기반 워터마킹으로의 전환은 코드를 크게 단순화합니다. IronPDF의 ApplyWatermark 메소드는 HTML/CSS 스타일을 사용하여 수동 페이지 반복 및 좌표 계산의 필요를 없애줍니다. 추가 옵션을 보려면 전체 워터마킹 문서를 참조하십시오.

예제 4: 암호 보호 및 보안

이전 (GdPicture.NET SDK):

using GdPicture14;

class Program
{
    static void Main()
    {
        LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");

        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            GdPictureStatus status = pdf.LoadFromFile("document.pdf", false);

            if (status != GdPictureStatus.OK) return;

            // Save with encryption - many boolean parameters
            status = pdf.SaveToFile(
                "protected.pdf",
                PdfEncryption.PdfEncryption256BitAES,
                "user123",      // User password
                "owner456",     // Owner password
                true,           // Can print
                false,          // Cannot copy
                false,          // Cannot modify
                false,          // Cannot add notes
                true,           // Can fill forms
                false,          // Cannot extract
                false,          // Cannot assemble
                true            // Can print high quality
            );
        }
    }
}

이후 (IronPDF):

using IronPdf;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        // Configure security settings with clear property names
        pdf.SecuritySettings.OwnerPassword = "owner456";
        pdf.SecuritySettings.UserPassword = "user123";

        // Set permissions
        pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
        pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
        pdf.SecuritySettings.AllowUserAnnotations = false;
        pdf.SecuritySettings.AllowUserFormData = true;

        pdf.SaveAs("protected.pdf");
    }
}

IronPDF의 SecuritySettings 속성은 위치 기반 불리언 매개변수 대신 명명된 자체 문서화 속성을 제공합니다.


중요한 마이그레이션 노트

페이지 인덱싱 변환

이 GdPicture.NET SDK 마이그레이션에서 가장 중요한 변화 중 하나는 페이지 인덱싱의 차이입니다:

// GdPicture.NET SDK: 1-indexed pages
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
    pdf.SelectPage(i);
    // process page
}

// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    // process page
}
C#

상태 코드에서 예외로

상세한 상태 확인을 표준 try-catch로 교체:

// GdPicture.NET SDK
GdPictureStatus status = converter.LoadFromHTMLString(html);
if (status != GdPictureStatus.OK)
{
    Console.WriteLine($"Error: {status}");
    return;
}

// IronPDF
try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}

단위 변환

GdPicture.NET SDK는 여백에 대해 인치를 사용합니다; IronPDF는 밀리미터를 사용합니다:

// GdPicture.NET SDK: 0.5 inches margin
converter.HtmlSetMargins(0.5f, 0.5f, 0.5f, 0.5f);

// IronPDF: 0.5 inches = 12.7 mm
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;

변환 공식: millimeters = inches × 25.4

스레드 안전성

GdPicture.NET SDK는 동시 작업을 위해 수동 동기화가 필요합니다. IronPDF의 ChromePdfRenderer은 설계상 스레드 안전하여 멀티 스레드 PDF 생성을 단순화합니다.


성능 고려 사항

ChromePdfRenderer 재사용

최적의 성능을 위해 렌더러 인스턴스를 재사용하세요:

// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
    private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}

// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
    var renderer = new ChromePdfRenderer();  // Wasteful
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}

적절한 리소스 폐기

// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically

마이그레이션 체크리스트

사전 마이그레이션

  • 코드베이스에서 모든 GdPicture.NET SDK 사용을 인벤토리화
  • 실제로 사용되는 기능 식별 (PDF 대 OCR 대 바코드)
  • OCR/바코드 기능이 필요한지 여부 결정 (IronOCR/IronBarcode 고려)
  • 현재 라이선스를 검토하고 IronPDF 가격과 비교
  • IronPDF 라이센스 키를 받으세요
  • 버전 컨트롤에 마이그레이션 분기를 생성

코드 마이그레이션

  • GdPicture.NET SDK NuGet 패키지 제거: dotnet remove package GdPicture.NET
  • IronPDF NuGet Install-Package: dotnet add package IronPdf
  • 네임스페이스 임포트 업데이트 (GdPicture14IronPdf)
  • LicenseManager.RegisterKEY()IronPdf.License.LicenseKey으로 대체
  • 상태 코드 확인을 try-catch 블록으로 변환
  • 페이지 인덱싱 업데이트 (1-기준 → 0-기준)
  • GdPicturePDFPdfDocument으로 대체
  • GdPictureDocumentConverterChromePdfRenderer으로 대체
  • 좌표 기반 텍스트를 HTML 스탬핑으로 변환
  • 단위 변환 업데이트 (인치 → 밀리미터)

테스트

  • 모든 PDF 생성 경로에 대한 단위 테스트
  • HTML 렌더링 품질이 일치하거나 뛰어난지 확인
  • 모든 보안/암호화 시나리오 테스트
  • 양식 채우기 기능 확인
  • 병합/나누기 작업 테스트
  • 워터마크 표시 여부 확인
  • 중요 경로 성능 벤치마크

마이그레이션 이후

  • GdPicture.NET SDK 라이센스 파일/키 제거
  • 문서 업데이트
  • IronPDF API 패턴에 대한 팀 교육
  • 생산에서 문제 여부 모니터

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