마이그레이션 가이드 C#에서 GdPicture.NET SDK에서 IronPDF로 마이그레이션하는 방법 커티스 차우 업데이트됨:2월 1, 2026 다운로드 IronPDF NuGet 다운로드 DLL 다운로드 윈도우 설치 프로그램 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 GdPicture.NET SDK에서 IronPDF로의 마이그레이션은 .NET 개발자에게 PDF 생성에 집중된 간결한 접근 방식을 제공합니다. 이 가이드는 복잡한 문서 이미징 SDK 패턴을 현대적인 .NET 개발을 위한 PDF 전용 API로 교체하는 포괄적이고 단계적인 마이그레이션 경로를 제공합니다. GdPicture.NET SDK에서 IronPDF로 마이그레이션해야 하는 이유 GdPicture.NET SDK의 문제점 현재 Nutrient로 브랜드 변경된 GdPicture.NET SDK는 PDF 중심의 개발에 여러 도전 과제들이 있는 포괄적인 문서 이미징 SDK입니다: PDF 전용 프로젝트에 과도함: GdPicture.NET SDK는 OCR, 바코드 인식, 스캔 및 이미지 처리를 포함하는 완전한 문서 이미징 Suite입니다. PDF 기능만 필요하다면 절대 사용하지 않을 기능에 비용을 지불하는 것입니다. 복잡한 라이선스: 여러 제품 계층(GdPicture.NET 14, GdPicture.API, Ultimate, Professional)과 혼란스러운 SKU 조합 및 연간 구독 요구 사항. 기업 가격 정책: PDF 플러그인만으로도 라이선스 비용이 $2,999부터 시작하며, Ultimate 에디션은 $10,000 이상으로 증가할 수 있습니다. 개발자별 라이선스는 성장하는 팀에 상당한 오버헤드를 추가합니다. 학습 곡선의 높음: API는 현대적인 .NET 패턴이 아닌 문서 이미징 개념을 중심으로 설계되었습니다. 메서드 LicenseManager.RegisterKEY(), GdPictureStatus 열거형 확인, 1-인덱스 페이지는 현대 C# 관례와 비교할 때 구식으로 느껴집니다. 상태 코드 패턴: 모든 작업은 확인해야 하는 GdPictureStatus 열거형을 반환하며, 오류 시 예외가 발생하지 않아 오류 처리가 장황하고 반복적입니다. 수동 자원 관리: 명시적인 Dispose() 또는 Release() 호출이 필요합니다. SDK는 표준 .NET 폐기 패턴을 깨끗하게 따르지 않습니다. 버전 잠금: 네임스페이스 GdPicture14는 버전 번호를 포함하고 있어 주요 버전 업그레이드 시 전체 코드베이스에서 네임스페이스 변경이 필요합니다. 브랜드 변경 혼란: 최근 'Nutrient'로의 브랜드 변경은 gdpicture.com과 nutrient.io 간의 문서 분열을 일으켜 지원 및 학습을 복잡하게 만듭니다. GdPicture.NET SDK와IronPDF비교 측면 GdPicture.NET SDK IronPDF 초점 문서 이미지 처리 제품군 (PDF에는 과잉임) PDF 전용 라이브러리 가격 $2,999-$10,000+ Enterprise 계층 경쟁적이며 비즈니스와 함께 확장 API 스타일 상태 코드, 수동 관리 예외 처리, IDisposable, 현대 .NET 학습 곡선 가파른 (이미징 SDK 개념) 간단한 (HTML/CSS 친숙) HTML 렌더링 기본, 내부 엔진 최신 Chromium과 CSS3/JS 페이지 인덱싱 1-인덱스 0-인덱스 (표준 .NET) 스레드 안전성 수동 동기화 필요 설계상 스레드 안전 네임스페이스 버전별 (GdPicture14) 안정적 (IronPdf) 2025년과 2026년까지 .NET 10과 C# 14 채택을 계획하는 팀에게 IronPDF는 현대적인 .NET 패턴과 관습에 맞춰 긴 미래를 보장하는 기반을 제공합니다. 마이그레이션 복잡성 평가 기능별 예상 노력 기능 마이그레이션 복잡성 HTML to PDF 낮음 URL을 PDF로 변환 낮음 PDF 병합 낮음 PDF 분할 낮음 워터마크 낮음 텍스트 추출 낮음 비밀번호 보호 중간 양식 필드 중간 디지털 서명 중고 OCR 높음 바코드 인식 해당 없음 마이그레이션 의사결정 매트릭스 귀하의 상황 권장 사항 PDF 전용 작업 마이그레이션—상당한 단순화와 비용 절감 OCR 사용이 많음 IronOCR를 보조 제품으로 고려하십시오 바코드/스캐닝 필요 해당 기능에서는 GdPicture.NET SDK를 유지하고, PDF 용도로는 IronPDF를 사용하십시오. 전체 문서 이미징 실제로 모든 기능을 사용하는지 평가하십시오 시작하기 전에 필수 조건 .NET 버전: IronPDF는 .NET Framework 4.6.2+ 및 .NET Core 2.0+ / .NET 5/6/7/8/9+를 지원합니다. 라이선스 키: ironpdf.com에서IronPDF라이선스 키를 얻으세요. 백업: 마이그레이션 작업을 위한 분기를 생성하세요. 모든GdPicture.NET SDK사용 식별 # Find allGdPicture.NET SDKreferences in your codebase grep -r "GdPicture14\|GdPicturePDF\|GdPictureDocumentConverter\|GdPictureStatus\|LicenseManager\.RegisterKEY" --include="*.cs" . # Find all GdPicture package references grep -r "GdPicture" --include="*.csproj" . # Find allGdPicture.NET SDKreferences 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 패키지 변경 사항 # RemoveGdPicture.NET SDKpackages 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 # RemoveGdPicture.NET SDKpackages 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 anyGdPicture.NET SDKoperations LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY"); // Must be called before anyGdPicture.NET SDKoperations LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY"); ' Must be called before any GdPicture.NET SDK operations LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY") $vbLabelText $csharpLabel 이후 (IronPDF): // Set once at application startup IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"; // Or in appsettings.json: // { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" } // Set once at application startup IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"; // Or in appsettings.json: // { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" } ' Set once at application startup IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY" ' Or in appsettings.json: ' { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" } $vbLabelText $csharpLabel 2단계: 네임스페이스 가져오기 업데이트 // Before (GdPicture.NET SDK) using GdPicture14; // After (IronPDF) using IronPdf; using IronPdf.Editing; // Before (GdPicture.NET SDK) using GdPicture14; // After (IronPDF) using IronPdf; using IronPdf.Editing; Imports IronPdf Imports IronPdf.Editing $vbLabelText $csharpLabel 3단계: 기본 변환 패턴 GdPicture.NET SDK 마이그레이션에서 가장 중요한 변화는 자세한 상태 확인 패턴을 제거하는 것입니다: 이전 (GdPicture.NET SDK): using GdPicture14; LicenseManager.RegisterKEY("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}"); } } using GdPicture14; LicenseManager.RegisterKEY("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}"); } } Imports GdPicture14 LicenseManager.RegisterKEY("LICENSE-KEY") Using converter As New GdPictureDocumentConverter() Dim status As GdPictureStatus = converter.LoadFromHTMLString("<h1>Hello World</h1>") If status = GdPictureStatus.OK Then status = converter.SaveAsPDF("output.pdf") If status <> GdPictureStatus.OK Then Console.WriteLine($"Error: {status}") End If Else Console.WriteLine($"Load error: {status}") End If End Using $vbLabelText $csharpLabel 이후 (IronPDF): using IronPdf; IronPdf.License.LicenseKey = "LICENSE-KEY"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>"); pdf.SaveAs("output.pdf"); using IronPdf; IronPdf.License.LicenseKey = "LICENSE-KEY"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>"); pdf.SaveAs("output.pdf"); Imports IronPdf IronPdf.License.LicenseKey = "LICENSE-KEY" Dim renderer As New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>") pdf.SaveAs("output.pdf") $vbLabelText $csharpLabel 주요 차이점: 오류 시 예외 처리—상태 확인 필요 없음 렌더러에 대한 명시적 해제 필요 없음 최신 유창한 API 향상된 HTML/CSS 지원을 위한 Chromium 기반 렌더링 완전한 API 참조 네임스페이스 매핑 GdPicture.NET SDK IronPDF GdPicture14 IronPdf GdPicture14.PDF IronPdf GdPicture14.Imaging 해당 없음 (필요 없음) 핵심 클래스 매핑 GdPicture.NET SDK IronPDF 설명 GdPicturePDF PdfDocument 주요 PDF 문서 클래스 GdPictureDocumentConverter ChromePdfRenderer HTML/URL을 PDF로 변환 LicenseManager IronPdf.License 라이선스 관리 GdPictureStatus 예외 오류 처리 문서 로딩 메소드 GdPicture.NET SDK IronPDF 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 SDK IronPDF pdf.GetPageCount() pdf.PageCount pdf.SelectPage(pageNo) pdf.Pages[index] pdf.GetPageWidth() pdf.Pages[i].Width pdf.GetPageHeight() pdf.Pages[i].Height 병합 및 분할 작업 GdPicture.NET SDK IronPDF pdf1.MergePages(pdf2) PdfDocument.Merge(pdf1, pdf2) pdf.ExtractPages(start, end) pdf.CopyPages(indices) 워터마크 작업 GdPicture.NET SDK IronPDF 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"); } } } } // 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"); } } } } Imports GdPicture14 Imports System Class Program Shared Sub Main() Using converter As New GdPictureDocumentConverter() Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>" Dim status As GdPictureStatus = converter.LoadFromHTMLString(htmlContent) If status = GdPictureStatus.OK Then converter.SaveAsPDF("output.pdf") End If End Using End Sub End Class $vbLabelText $csharpLabel 이후 (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"); } } // 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"); } } Imports IronPdf Imports System Class Program Shared Sub Main() Dim renderer = New ChromePdfRenderer() Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>" Dim pdf = renderer.RenderHtmlAsPdf(htmlContent) pdf.SaveAs("output.pdf") End Sub End Class $vbLabelText $csharpLabel 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"); } } } // 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"); } } } Imports GdPicture14 Imports System Class Program Shared Sub Main() Using pdf1 As New GdPicturePDF(), pdf2 As New GdPicturePDF() pdf1.LoadFromFile("document1.pdf", False) pdf2.LoadFromFile("document2.pdf", False) pdf1.MergePages(pdf2) pdf1.SaveToFile("merged.pdf") 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 pdf1 = PdfDocument.FromFile("document1.pdf"); var pdf2 = PdfDocument.FromFile("document2.pdf"); var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 }); merged.SaveAs("merged.pdf"); } } // 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"); } } Imports IronPdf Imports System.Collections.Generic Class Program Shared Sub Main() Dim pdf1 = PdfDocument.FromFile("document1.pdf") Dim pdf2 = PdfDocument.FromFile("document2.pdf") Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2}) merged.SaveAs("merged.pdf") End Sub End Class $vbLabelText $csharpLabel 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"); } } } // 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"); } } } Imports GdPicture14 Imports System Imports System.Drawing Module Program Sub Main() Using pdf As New GdPicturePDF() pdf.LoadFromFile("input.pdf", False) For i As Integer = 1 To pdf.GetPageCount() pdf.SelectPage(i) pdf.SetTextColor(Color.Red) pdf.SetTextSize(48) pdf.DrawText("CONFIDENTIAL", 200, 400) Next pdf.SaveToFile("watermarked.pdf") End Using End Sub End Module $vbLabelText $csharpLabel 이후 (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"); } } // 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"); } } Imports IronPdf Imports IronPdf.Editing Class Program Shared Sub Main() Dim pdf = PdfDocument.FromFile("input.pdf") pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center) pdf.SaveAs("watermarked.pdf") End Sub End Class $vbLabelText $csharpLabel GdPicture.NET SDK 마이그레이션의 랜더링 기반 텍스트 그리기에서 HTML 기반 워터마킹으로의 전환은 코드를 크게 단순화합니다. IronPDF의 ApplyWatermark 메서드는 HTML/CSS 스타일링을 사용하여 수동 페이지 반복 및 좌표 계산의 필요성을 제거합니다. 추가 옵션을 보려면 전체 워터마킹 문서를 참조하십시오. 예제 4: 암호 보호 및 보안 이전 (GdPicture.NET SDK): using GdPicture14; class Program { static void Main() { LicenseManager.RegisterKEY("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 ); } } } using GdPicture14; class Program { static void Main() { LicenseManager.RegisterKEY("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 ); } } } Imports GdPicture14 Class Program Shared Sub Main() LicenseManager.RegisterKEY("LICENSE-KEY") Using pdf As New GdPicturePDF() Dim status As GdPictureStatus = pdf.LoadFromFile("document.pdf", False) If status <> GdPictureStatus.OK Then 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 ) End Using End Sub End Class $vbLabelText $csharpLabel 이후 (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"); } } 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"); } } Imports IronPdf Class Program Shared Sub Main() Dim 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") End Sub End Class $vbLabelText $csharpLabel IronPDF의 SecuritySettings 프로퍼티는 위치 기반의 부울 매개변수 대신 이름이 있는 자체 문서화 프로퍼티를 제공합니다. 중요한 마이그레이션 노트 페이지 인덱싱 변환 이GdPicture.NET SDK마이그레이션에서 가장 중요한 변화 중 하나는 페이지 인덱싱의 차이입니다: // GdPicture.NET SDK:1-인덱스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 } // GdPicture.NET SDK:1-인덱스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 } ' GdPicture.NET SDK: 1-indexed pages For i As Integer = 1 To pdf.GetPageCount() pdf.SelectPage(i) ' process page Next ' IronPDF: 0-indexed pages (standard .NET) For i As Integer = 0 To pdf.PageCount - 1 Dim page = pdf.Pages(i) ' process page Next $vbLabelText $csharpLabel 상태 코드에서 예외로 상세한 상태 확인을 표준 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 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 Dim status As GdPictureStatus = converter.LoadFromHTMLString(html) If status <> GdPictureStatus.OK Then Console.WriteLine($"Error: {status}") Return End If ' IronPDF Try Dim pdf = renderer.RenderHtmlAsPdf(html) pdf.SaveAs("output.pdf") Catch ex As Exception Console.WriteLine($"Error: {ex.Message}") End Try $vbLabelText $csharpLabel 단위 변환 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; // 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; ' 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 $vbLabelText $csharpLabel 변환 공식: 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; } // 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; } Imports System Public Class PdfService Private Shared ReadOnly _renderer As New ChromePdfRenderer() Public Function Generate(html As String) As Byte() Return _renderer.RenderHtmlAsPdf(html).BinaryData End Function ' BAD - Creates new instance each time Public Function GenerateBad(html As String) As Byte() Dim renderer As New ChromePdfRenderer() ' Wasteful Return renderer.RenderHtmlAsPdf(html).BinaryData End Function End Class $vbLabelText $csharpLabel 적절한 리소스 폐기 // Use using statements for automatic cleanup using (var pdf = PdfDocument.FromFile("large.pdf")) { string text = pdf.ExtractAllText(); } // pdf is disposed automatically // Use using statements for automatic cleanup using (var pdf = PdfDocument.FromFile("large.pdf")) { string text = pdf.ExtractAllText(); } // pdf is disposed automatically Imports PdfDocument ' Use Using blocks for automatic cleanup Using pdf = PdfDocument.FromFile("large.pdf") Dim text As String = pdf.ExtractAllText() End Using ' pdf is disposed automatically $vbLabelText $csharpLabel 마이그레이션 체크리스트 사전 마이그레이션 코드베이스에서 모든GdPicture.NET SDK사용을 인벤토리화 실제로 사용되는 기능 식별 (PDF 대OCR대 바코드) OCR/바코드 기능이 필요한지 여부 결정 (IronOCR/IronBarcode 고려) 현재 라이선스를 검토하고IronPDF가격과 비교 -IronPDF라이센스 키를 받으세요 버전 컨트롤에 마이그레이션 분기를 생성 코드 마이그레이션 -GdPicture.NET SDKNuGet 패키지 제거: dotnet remove package GdPicture.NET IronPdf NuGet Install-Package: dotnet add package IronPdf 네임스페이스 가져오기 업데이트 (GdPicture14 → IronPdf) LicenseManager.RegisterKEY()를 IronPdf.License.LicenseKey로 대체 상태 코드 확인을 try-catch 블록으로 변환 페이지 인덱싱 업데이트 (1-기준 → 0-기준) GdPicturePDF를 PdfDocument로 대체 GdPictureDocumentConverter를 ChromePdfRenderer로 대체 좌표 기반 텍스트를 HTML 스탬핑으로 변환 단위 변환 업데이트 (인치 → 밀리미터) 테스트 모든 PDF 생성 경로에 대한 단위 테스트 HTML 렌더링 품질이 일치하거나 뛰어난지 확인 모든 보안/암호화 시나리오 테스트 양식 채우기 기능 확인 병합/나누기 작업 테스트 워터마크 표시 여부 확인 중요 경로 성능 벤치마크 마이그레이션 이후 -GdPicture.NET SDK라이센스 파일/키 제거 문서 업데이트 -IronPDFAPI 패턴에 대한 팀 교육 생산에서 문제 여부 모니터 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다. 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다. 관련 기사 업데이트됨 2월 1, 2026 C#에서 ZetPDF에서 IronPDF로 마이그레이션하는 방법 이 완전한 C# 가이드로 ZetPDF에서 IronPDF로의 마이그레이션을 마스터하세요. 좌표 기반 라이브러리에서 현대적인 HTML-to-PDF 솔루션으로 전환하십시오. HTML 변환, PDF 병합 및 PDFSharp 종속성 제거에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기 업데이트됨 2월 1, 2026 Scryber.Core에서 IronPDF로의 마이그레이션 방법 (C#) 이 완벽한 C# 가이드를 통해 Scryber.Core에서 IronPDF로의 마이그레이션을 완전히 이해하십시오. 사용자 지정 XML/HTML 파싱에서 현대적인 Chromium 렌더러로 전환하십시오. HTML 변환, URL 렌더링 및 독점 바인딩 교체를 위한 코드 예제가 포함됩니다. 더 읽어보기 업데이트됨 2월 1, 2026 C#에서 XFINIUM.PDF에서 IronPDF로 마이그레이션하는 방법 이 완전한 C# 가이드로 XFINIUM.PDF에서 IronPDF로의 마이그레이션을 마스터하세요. 수동적인 좌표 기반 위치에서 선언적인 HTML/CSS 렌더링으로 전환하십시오. 그래픽 프리미티브 교체 및 자동 레이아웃에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기 C#에서 GemBox PDF에서 IronPDF로 마이그레이션하는 방법C#에서 FastReport에서 IronPDF...
업데이트됨 2월 1, 2026 C#에서 ZetPDF에서 IronPDF로 마이그레이션하는 방법 이 완전한 C# 가이드로 ZetPDF에서 IronPDF로의 마이그레이션을 마스터하세요. 좌표 기반 라이브러리에서 현대적인 HTML-to-PDF 솔루션으로 전환하십시오. HTML 변환, PDF 병합 및 PDFSharp 종속성 제거에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기
업데이트됨 2월 1, 2026 Scryber.Core에서 IronPDF로의 마이그레이션 방법 (C#) 이 완벽한 C# 가이드를 통해 Scryber.Core에서 IronPDF로의 마이그레이션을 완전히 이해하십시오. 사용자 지정 XML/HTML 파싱에서 현대적인 Chromium 렌더러로 전환하십시오. HTML 변환, URL 렌더링 및 독점 바인딩 교체를 위한 코드 예제가 포함됩니다. 더 읽어보기
업데이트됨 2월 1, 2026 C#에서 XFINIUM.PDF에서 IronPDF로 마이그레이션하는 방법 이 완전한 C# 가이드로 XFINIUM.PDF에서 IronPDF로의 마이그레이션을 마스터하세요. 수동적인 좌표 기반 위치에서 선언적인 HTML/CSS 렌더링으로 전환하십시오. 그래픽 프리미티브 교체 및 자동 레이아웃에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기