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

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

PDFBolt에서 IronPDF로의 이전은 외부 문서 처리를 사용하는 클라우드 전용 SaaS 서비스에서 완전한 데이터 개인 정보 보호와 무제한 로컬 생성을 제공하는 자체 호스팅 라이브러리로 .NET PDF 워크플로를 이동합니다. 이 가이드는 네트워크 종속성, 사용 제한 및 외부 데이터 전송을 제거하는 포괄적이고 단계별 이동 경로를 제공하며 PDFBolt에서 제공할 수 없는 PDF 조작 기능에 액세스할 수 있습니다.

PDFBolt에서 IronPDF로 이전하는 이유

클라우드 전용 문제

PDFBolt는 문서를 외부 서버에서 처리하는 클라우드 전용 SaaS 플랫폼입니다. 빠른 프로토타이핑에는 편리하지만, 이 아키텍처는 프로덕션 애플리케이션에 상당한 문제를 만듭니다:

  1. 클라우드 전용 처리: 모든 문서가 외부 서버를 통과합니다. 자체 호스팅 옵션이 없으며 이로 인해 데이터와 프로세스에 대한 더 많은 통제를 필요로 하는 기업을 저해할 수 있습니다.

  2. 데이터 개인정보 침해 위험: 민감한 문서(계약서, 의무 기록, 금융 데이터)가 외부로 전송되어야 합니다. 민감한 정보를 다루는 회사는 정당한 우려를 가질 것입니다.

  3. 사용 제한: 무료 요금제는 월 100개의 문서로 제한되며, 더 큰 기업에게는 충분하지 않을 수 있습니다. 문서별 과금은 프로덕션 작업에 대해 빠르게 발생할 수 있습니다.

  4. 네트워크 종속성: 인터넷이 끊기거나 PDFBolt가 중단되면 PDF 생성이 완전히 멈춥니다.

  5. 지연 시간: 네트워크 왕복으로 인해 로컬 처리에 비해 변환 시 몇 초가 추가됩니다.

  6. 컴플라이언스 문제: GDPR, HIPAA 및 SOC2 감사는 외부 문서 처리로 인해 복잡해집니다.

  7. API 키 보안: 유출된 API 키는 계정에 요금 부과를 초래할 수 있습니다.

  8. 벤더 종속: PDFBolt가 약관을 변경하거나 중단되면 애플리케이션이 실패합니다.

PDFBolt대IronPDF비교

문제 PDFBolt IronPDF
데이터 위치 외부 서버 귀하의 서버만
사용 제한 100개 무료, 이후 문서당 과금 무제한
인터넷 필수 항상 필요 아니요
지연 시간 네트워크 왕복 밀리초
규정 준수 복잡함 (외부 처리) 간단함 (로컬 처리)
비용 모델 문서당 일회성 또는 연간
오프라인 작동 불가능 완전히 지원
API 키 위험 유출됨 = 요금 부과 라이선스 키, 요금 부과 위험 없음

2025년과 2026년에 걸쳐 .NET 10과 C# 14 도입을 계획하는 팀들에게 IronPDF는 완전한 데이터 프라이버시를 보장하고 외부 클라우드 서비스에 대한 종속성을 제거하는 자체 호스팅 기반을 제공합니다.


시작하기 전에

필수 조건

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

# Install IronPDF
dotnet add package IronPdf
# Remove PDFBolt
dotnet remove package PDFBolt

# 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

PDFBolt사용 알아보기

# Find allPDFBoltreferences
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .

# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
# Find allPDFBoltreferences
grep -r "PDFBolt\|HtmlToPdfConverter\|ConvertHtmlString\|ConvertUrl" --include="*.cs" .

# Find API key references
grep -r "PDFBOLT\|ApiKey" --include="*.cs" --include="*.json" --include="*.config" .
SHELL

완전한 API 참조

핵심 클래스 매핑

PDFBolt IronPDF
new HtmlToPdfConverter() new ChromePdfRenderer()
PageSize PdfPaperSize
(바이트 배열 반환) PdfDocument

변환 방법 매핑

PDFBolt IronPDF
converter.ConvertHtmlString(html) renderer.RenderHtmlAsPdf(html)
converter.ConvertUrl(url) renderer.RenderUrlAsPdf(url)

출력 방법 매핑

PDFBolt IronPDF
File.WriteAllBytes(path, pdf) pdf.SaveAs(path)
(pdf는 바이트 배열) pdf.BinaryData
(수동 스트림) pdf.Stream

페이지 구성 매핑

PDFBolt IronPDF
converter.PageSize = PageSize.A4 renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
converter.MarginTop = 20 renderer.RenderingOptions.MarginTop = 20
converter.MarginBottom = 20 renderer.RenderingOptions.MarginBottom = 20
converter.MarginLeft = 15 renderer.RenderingOptions.MarginLeft = 15
converter.MarginRight = 15 renderer.RenderingOptions.MarginRight = 15

헤더/푸터 플레이스홀더 매핑

PDFBolt IronPDF
{pageNumber} {page}
{totalPages} {total-pages}
{date} {date}
{title} {html-title}

코드 마이그레이션 예제

예제 1: 기본 HTML에서 PDF로

이전 (PDFBolt):

// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
Imports PDFBolt
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = converter.ConvertHtmlString(html)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.IO;

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

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html = "<html><body><h1>Hello World</h1></body></html>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

여기서의 근본적인 차이는 반환 유형과 저장 방식입니다. PDFBolt의 HtmlToPdfConverter.ConvertHtmlString()byte[]를 반환하며, 이는 File.WriteAllBytes()를 사용하여 수동으로 디스크에 작성해야 합니다. 이는 System.IO을(를) 가져오고 파일 작업을 직접 처리해야 합니다.

IronPDF의 ChromePdfRenderer.RenderHtmlAsPdf()는 내장된 SaveAs() 메서드를 가진 PdfDocument 객체를 반환합니다. 이 객체 지향 접근 방식은 추가적인 이점을 제공합니다: 저장 전에 PDF를 조작(워터마크 추가, 문서 병합, 보안 추가)할 수 있습니다. 기존 코드와의 호환성을 위한 원시 바이트가 필요한 경우 pdf.BinaryData을(를) 사용하세요. HTML to PDF 문서에서 추가 렌더링 옵션을 참조하십시오.

예제 2: URL에서 PDF로 변환

이전 (PDFBolt):

// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://www.example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var pdf = converter.ConvertUrl("https://www.example.com");
        File.WriteAllBytes("webpage.pdf", pdf);
    }
}
Imports PDFBolt
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter = New HtmlToPdfConverter()
        Dim pdf = converter.ConvertUrl("https://www.example.com")
        File.WriteAllBytes("webpage.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

URL 변환을 위한PDFBolt패턴은 HTML 변환과 동일한 접근 방식을 따릅니다: ConvertUrl()byte[]를 반환하며, 저장을 위해 File.WriteAllBytes()이(가) 필요합니다. PDFBolt는 이미 URL에서 가져온 경우에도 서버로의 네트워크 왕복이 여전히 필요하다는 점에 주목하세요.

IronPDF의 RenderUrlAsPdf() 메서드는 내장된 SaveAs() 메서드를 가진 PdfDocument을(를) 반환합니다. 여기서 주요 장점은 IronPDF가 URL 가져오기 및 PDF 렌더링을 로컬에서 수행한다는 것입니다. 데이터가 인프라를 떠나지 않습니다. IronPDF 버전은 이 간단한 경우에 using System.IO;가 필요하지 않습니다. URL에서 PDF로 변환에 대해 더 알아보세요.

예제 3: 사용자 정의 페이지 설정이 있는 HTML 파일

이전 (PDFBolt):

// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.MarginTop = 20;
        converter.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
// NuGet: Install-Package PDFBolt
using PDFBolt;
using System.IO;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.PageSize = PageSize.A4;
        converter.MarginTop = 20;
        converter.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = converter.ConvertHtmlString(html);
        File.WriteAllBytes("output.pdf", pdf);
    }
}
Imports PDFBolt
Imports System.IO

Class Program
    Shared Sub Main()
        Dim converter As New HtmlToPdfConverter()
        converter.PageSize = PageSize.A4
        converter.MarginTop = 20
        converter.MarginBottom = 20
        Dim html As String = File.ReadAllText("input.html")
        Dim pdf As Byte() = converter.ConvertHtmlString(html)
        File.WriteAllBytes("output.pdf", pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System.IO;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        var html = File.ReadAllText("input.html");
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        Dim html = File.ReadAllText("input.html")
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

이 예제는 페이지 구성 차이점을 보여줍니다. PDFBolt는 변환기 객체에 직접 속성을 설정합니다 (converter.PageSize, converter.MarginTop). IronPDF는 렌더러에 RenderingOptions 객체를 사용합니다 (renderer.RenderingOptions.PaperSize, renderer.RenderingOptions.MarginTop).

주요 매핑:

  • PageSize.A4PdfPaperSize.A4 (다른 열거형 이름)
  • MarginTop = 20RenderingOptions.MarginTop = 20 (RenderingOptions 통해서)

둘 다 여백 값에 밀리미터를 사용하므로 기존 여백 값이 직접 전송될 수 있습니다. IronPdf.Rendering 네임스페이스는 PdfPaperSize 열거형에 접근하기 위해 필요합니다. 추가 페이지 구성 옵션은 렌더링 옵션 문서를 참조하십시오.


중요한 마이그레이션 노트

반환 타입 변경

PDFBolt는 byte[]를 직접 반환합니다; IronPDF는 PdfDocument를 반환합니다:

//PDFBoltpattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);

//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
//PDFBoltpattern:
byte[] pdf = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);

//IronPDFpattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

// Or if you need bytes:
byte[] pdfBytes = renderer.RenderHtmlAsPdf(html).BinaryData;
'PDFBoltpattern:
Dim pdf As Byte() = converter.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdf)

'IronPDFpattern:
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")

' Or if you need bytes:
Dim pdfBytes As Byte() = renderer.RenderHtmlAsPdf(html).BinaryData
$vbLabelText   $csharpLabel

클래스 이름 변경

주요 클래스 이름이 변환기 중심에서 렌더러 중심으로 변경됩니다:

// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
' PDFBolt
Dim converter As New HtmlToPdfConverter()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

구성 패턴 변경

PDFBolt는 직접 속성을 사용합니다; IronPDF는 RenderingOptions를 사용합니다:

// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;

// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
// PDFBolt: Direct properties
converter.PageSize = PageSize.A4;
converter.MarginTop = 20;

// IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
' PDFBolt: Direct properties
converter.PageSize = PageSize.A4
converter.MarginTop = 20

' IronPDF: Via RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 20
$vbLabelText   $csharpLabel

API 키 제거

PDFBolt는 요청당 API 키 관리가 필요합니다; IronPDF는 일회성 라이선스 키를 사용합니다:

// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);

// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
// PDFBolt: API key per client (security risk if leaked)
var apiKey = config["PDFBolt:ApiKey"];
var client = new Client(apiKey);

// IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
' PDFBolt: API key per client (security risk if leaked)
Dim apiKey = config("PDFBolt:ApiKey")
Dim client = New Client(apiKey)

' IronPDF: License key once at startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer = New ChromePdfRenderer()
$vbLabelText   $csharpLabel

네트워크 오류 처리 제거

로컬 처리는 처리할 네트워크 오류가 없음을 의미합니다:

// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)

// IronPDF: Remove network-specific catches entirely
// PDFBolt: Network error handling required
catch (HttpRequestException ex)
catch (TaskCanceledException)
catch (TimeoutException)

// IronPDF: Remove network-specific catches entirely
$vbLabelText   $csharpLabel

새로운 기능 제공

IronPDF로 마이그레이션 후에는 PDFBolt에서 제공할 수 없는 기능을 제공합니다:

// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);

// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");

// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";

// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();

// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
// PDF Merging (not available in PDFBolt)
var merged = PdfDocument.Merge(pdf1, pdf2);

// Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>");

// Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret";

// Text Extraction (not available in PDFBolt)
string text = pdf.ExtractAllText();

// PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png");
' PDF Merging (not available in PDFBolt)
Dim merged = PdfDocument.Merge(pdf1, pdf2)

' Watermarks (not available in PDFBolt)
pdf.ApplyWatermark("<h1 style='opacity:0.3;'>DRAFT</h1>")

' Password Protection (not available in PDFBolt)
pdf.SecuritySettings.UserPassword = "secret"

' Text Extraction (not available in PDFBolt)
Dim text As String = pdf.ExtractAllText()

' PDF to Images (not available in PDFBolt)
pdf.RasterizeToImageFiles("page_*.png")
$vbLabelText   $csharpLabel

문제 해결

이슈 1: HtmlToPdfConverter를 찾을 수 없음

문제: HtmlToPdfConverter 클래스는 IronPDF에 존재하지 않습니다.

해결책: ChromePdfRenderer를 사용하세요:

// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFBolt
var converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
' PDFBolt
Dim converter As New HtmlToPdfConverter()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

문제 2: ConvertHtmlString을 찾을 수 없음

문제: ConvertHtmlString() 메서드는 존재하지 않습니다.

해결책: RenderHtmlAsPdf()를 사용하세요:

// PDFBolt
var pdf = converter.ConvertHtmlString(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
// PDFBolt
var pdf = converter.ConvertHtmlString(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
' PDFBolt
Dim pdf = converter.ConvertHtmlString(html)

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

문제 3: ConvertUrl을 찾을 수 없음

문제: ConvertUrl() 메서드는 존재하지 않습니다.

해결책: RenderUrlAsPdf()를 사용하세요:

// PDFBolt
var pdf = converter.ConvertUrl(url);

// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
// PDFBolt
var pdf = converter.ConvertUrl(url);

// IronPDF
var pdf = renderer.RenderUrlAsPdf(url);
' PDFBolt
Dim pdf = converter.ConvertUrl(url)

' IronPDF
Dim pdf = renderer.RenderUrlAsPdf(url)
$vbLabelText   $csharpLabel

문제 4: PageSize 열거형을 찾을 수 없음

문제: PageSize 열거형은 존재하지 않습니다.

해결책: IronPdf.Rendering로부터 PdfPaperSize를 사용하세요:

// PDFBolt
converter.PageSize = PageSize.A4;

// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDFBolt
converter.PageSize = PageSize.A4;

// IronPDF
using IronPdf.Rendering;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
' PDFBolt
converter.PageSize = PageSize.A4

' IronPDF
Imports IronPdf.Rendering
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
$vbLabelText   $csharpLabel

문제 5: 첫 번째 PDF 생성이 느림

문제: 초기 렌더링이 예상보다 오래 걸립니다.

해결책: Chromium 엔진은 처음 사용할 때 초기화됩니다. 필요시 사전 가열:

// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
// Warm up during application startup
var renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf("<html><body></body></html>");
' Warm up during application startup
Dim renderer As New ChromePdfRenderer()
renderer.RenderHtmlAsPdf("<html><body></body></html>")
$vbLabelText   $csharpLabel

마이그레이션 체크리스트

사전 마이그레이션

  • 코드 기반 내 모든PDFBolt사용 조사
  • 현재 페이지 구성 설정 문서화 (PageSize, 여백)
  • 제거할 API 키 관리 코드 식별
  • 삭제할 요금 제한 또는 네트워크 오류 처리 나열 -IronPDF라이센스 키를 받으세요

패키지 변경 사항

  • PDFBolt NuGet 패키지 제거
  • IronPdf NuGet Install-Package: dotnet add package IronPdf
  • using IronPdf; 네임스페이스 추가
  • 용지 크기 열거형을 위해 using IronPdf.Rendering; 추가

코드 변경 사항

  • 시작 시 라이선스 키 구성 추가
  • HtmlToPdfConverterChromePdfRenderer로 대체
  • ConvertHtmlString()RenderHtmlAsPdf()로 대체
  • ConvertUrl()RenderUrlAsPdf()로 대체
  • File.WriteAllBytes()pdf.SaveAs()로 대체
  • PageSizeRenderingOptions.PaperSize로 업데이트
  • 여백 속성을 RenderingOptions.MarginTop 등으로 업데이트
  • API 키 관리 코드 제거
  • 요금 제한 처리 코드 제거
  • 네트워크 오류 처리 제거

마이그레이션 이후

  • 구성 파일에서 API 키 삭제
  • 비밀 관리자에서 API 키 제거
  • PDF 출력 비교 모든 테스트 실행
  • 페이지 크기와 여백이 정확하게 렌더링 되는지 확인
  • 새로운 기능 추가 고려 (워터마크, 보안, 병합)

커티스 차우
기술 문서 작성자

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

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

아이언 서포트 팀

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