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

PDFreactor에서 IronPDF로의 마이그레이션 방법 (C#)

PDFreactor에서 IronPDF로 마이그레이션하면 Java 종속성과 서버 인프라를 제거하면서 네이티브 .NET 라이브러리를 통한 HTML-to-PDF 변환 기능을 제공합니다. 이 가이드는 Java 기반 서버 아키텍처를 .NET 애플리케이션에 원활하게 통합되는 인프로세스 라이브러리로 대체하는 전체 단계별 마이그레이션 경로를 제공합니다.

PDFreactor에서 IronPDF로 마이그레이션하는 이유

PDFreactor이해하기

PDFreactor는 다양한 플랫폼과 통합되는 강력한 HTML-to-PDF 변환 서버입니다. 상업용 솔루션으로서 PDFreactor는 HTML 및 CSS 콘텐츠를 고품질 PDF 문서로 변환하기 위해 독자적인 기술을 활용합니다. 눈에 띄는 속성 중 PDFreactor는 복잡한 레이아웃 렌더링에 적합한 다양한 CSS 속성을 지원합니다.

그러나, PDFreactor는 Java에 의존하여 비토박스 환경에서는 배포 및 통합이 복잡할 수 있는 .NET 환경에서 몇 가지 문제를 제시합니다. Java 종속성은 .NET 애플리케이션에서 추가 통합 작업이 필요하여 부가적인 오버헤드를 유발합니다.

Java 종속성 문제

PDFreactor의 아키텍처는 .NET 환경에서 여러 문제를 만듭니다:

  1. Java 런타임 필수: 모든 서버에 JRE/JDK 설치가 필요합니다.

  2. 서버 아키텍처: 별도 서비스로 실행되어 추가 인프라가 필요합니다. 서버 기반 솔루션으로서 PDFreactor는 각 변환마다 REST API 호출이 필요합니다.

  3. 복잡한 배포: 주로 .NET 생태계에서 Java 종속성을 관리하면 설정이 복잡해지고 유지 관리 비용이 증가할 수 있습니다. CI/CD 파이프라인에서 Java + .NET 두 런타임을 관리해야 합니다.

  4. 프로세스 간 통신: REST API 또는 소켓 통신이 지연을 추가시킵니다. 모든 PDF 변환은 서버로의 HTTP 왕복이 필요합니다.

  5. 별도의 라이선스 관리: 라이선스는 애플리케이션이 아닌 서버 인스턴스에 귀속됩니다. Java 서비스 인스턴스에 연결된 서버당 라이선싱.

  6. 자원 격리: 별도의 프로세스 메모리 및 CPU 관리. 추가 서버 모니터링, 규모 조정 및 유지 관리.

PDFreactor대비IronPDF비교

기능/측면 PDFreactor IronPDF
네이티브 .NET 라이브러리 아니요 (Java 기반)
런타임 Java (외부 서버) 네이티브 .NET (인프로세스)
아키텍처 REST API 서비스 NuGet 라이브러리
배포 Java + 서버 구성 단일 NuGet 패키지
종속성 JRE + HTTP 클라이언트 자급자족
지연 시간 네트워크 왕복 직접 메서드 호출
크로스 플랫폼 기능 예 (Java 의존) 예 (번들 Chromium)
CSS 지원 CSS3, CSS Paged Media에 대한 고급 지원 포괄적인 HTML5/CSS3 지원
배포 복잡성 Java로 인해 더 복잡 쉽고, .NET과 직접 통합
PDF 조작 기능 기본 (생성만) 병합, 분할, 편집 및 주석 추가를 포함한 광범위한 기능

PDFreactor와 달리 IronPDF는 .NET 프로젝트에 외부 종속성 없이 매끄럽게 통합되도록 특별히 설계된 본래의 .NET 라이브러리로 자리잡고 있습니다. IronPDF는 번들된 Chromium 렌더링 엔진을 사용하여 몇 줄의 코드로 HTML을 PDF로 변환할 수 있습니다.

2025년 및 2026년 동안 .NET 10 및 C# 14 채택을 계획하는 팀에게 IronPDF는 Java 서버 복잡성을 제거하면서 포괄적인 PDF 생명주기 관리를 제공하는 본래의 .NET 솔루션을 제공합니다.


시작하기 전에

필수 조건

  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 패키지 변경 사항

# RemovePDFreactorNuGet packages
dotnet remove package PDFreactor.NET
dotnet remove package PDFreactor.Native.Windows.x64

# StopPDFreactorserver service (if running locally)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor

# Install IronPDF
dotnet add package IronPdf
# RemovePDFreactorNuGet packages
dotnet remove package PDFreactor.NET
dotnet remove package PDFreactor.Native.Windows.x64

# StopPDFreactorserver service (if running locally)
# Windows: net stop PDFreactor
# Linux: sudo systemctl stop pdfreactor

# Install IronPDF
dotnet add package IronPdf
SHELL

라이선스 구성

PDFreactor (서버 기반):

// License configured on server via config file or command line
// Client connects to licensed server
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423");
// License configured on server via config file or command line
// Client connects to licensed server
var pdfReactor = new PDFreactor("http://pdfreactor-server:9423");
' License configured on server via config file or command line
' Client connects to licensed server
Dim pdfReactor = New PDFreactor("http://pdfreactor-server:9423")
$vbLabelText   $csharpLabel

IronPDF (애플리케이션 수준):

// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
// One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";
' One-time setup at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"
$vbLabelText   $csharpLabel

PDFreactor사용 식별

# FindPDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .

# Find CSS 분할 미디어rules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
# FindPDFreactorusage
grep -r "PDFreactor\|RealObjects\|Configuration.*Document" --include="*.cs" .

# Find CSS 분할 미디어rules to convert
grep -r "@page\|counter(page)\|counter(pages)" --include="*.cs" --include="*.css" .
SHELL

완전한 API 참조

네임스페이스 변경

// Before: PDFreactor
using RealObjects.PDFreactor;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PDFreactor
using RealObjects.PDFreactor;
using System.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
$vbLabelText   $csharpLabel

핵심 클래스 매핑

PDFreactor IronPDF
PDFreactor ChromePdfRenderer
Configuration ChromePdfRenderOptions
Result PdfDocument
config.Document = html renderer.RenderHtmlAsPdf(html)
result.Document (byte[]) pdf.BinaryData

설정 속성 매핑

PDFreactor구성 IronPDF RenderingOptions
config.Document = html renderer.RenderHtmlAsPdf(html)
config.Document = url renderer.RenderUrlAsPdf(url)
config.PageFormat = PageFormat.A4 RenderingOptions.PaperSize = PdfPaperSize.A4
config.PageOrientation RenderingOptions.PaperOrientation
config.PageMargins RenderingOptions.MarginTop/Bottom/Left/Right
config.EnableJavaScript = true RenderingOptions.EnableJavaScript = true
config.AddUserStyleSheet(css) HTML에 CSS 포함
config.Title pdf.MetaData.Title
config.Encryption pdf.SecuritySettings

PDFreactor에 없는 새로운 기능

IronPDF기능 설명
PdfDocument.Merge() 여러 PDF 병합
pdf.ApplyWatermark() 워터마크 추가
pdf.ExtractAllText() 텍스트 추출
pdf.Form 양식 채우기
pdf.Sign() 디지털 서명

코드 마이그레이션 예제

예제 1: HTML 문자열을 PDF로 변환

이전 (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        Configuration config = new Configuration();
        config.Document = html;

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("output.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor
Imports System.IO

Module Program
    Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim config As New Configuration()
        config.Document = html

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("output.pdf", result.Document)
    End Sub
End Module
$vbLabelText   $csharpLabel

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

근본적인 차이점은 아키텍처 패턴입니다. PDFreactor는 PDFreactor 인스턴스를 생성해야 하며(Java 서버에 연결됨), 설정 및 HTML 콘텐츠를 보관할 별도의 Configuration 객체, Convert() 호출하여 Result 객체를 반환받고, 마지막으로 File.WriteAllBytes()를 사용하여 result.Document 바이트를 파일에 작성합니다.

IronPDF는 ChromePdfRenderer를 생성하고, HTML 문자열을 사용하여 직접 RenderHtmlAsPdf()를 호출하며, 반환된 PdfDocument에 내장된 SaveAs() 메서드를 사용하여 이를 간소화합니다. 서버 연결, 구성 객체, 수동 바이트 처리 불필요. HTML에서 PDF로의 문서에서 포괄적인 예제를 참조하세요.

예제 2: URL에서 PDF로 변환

이전 (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        Configuration config = new Configuration();
        config.Document = "https://www.example.com";

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("webpage.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor
Imports System.IO

Class Program
    Shared Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim config As New Configuration()
        config.Document = "https://www.example.com"

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("webpage.pdf", result.Document)
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (IronPDF):

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

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;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");

        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")

        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

PDFreactor는 HTML 문자열과 URL에 대해 동일한 config.Document 속성을 사용하여 유형을 자동으로 결정합니다. IronPDF는 HTML 문자열을 위한 명시적 메서드 RenderHtmlAsPdf()와 URL을 위한 RenderUrlAsPdf()를 제공합니다. 이 명시적인 접근 방식은 코드 명확성과 IntelliSense 지원을 향상시킵니다. 더 많은 정보를 보려면 튜토리얼을 참조하세요.

예제 3: 페이지 번호가 있는 헤더와 푸터

이전 (PDFreactor):

// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
// NuGet: Install-Package PDFreactor.Native.Windows.x64
using RealObjects.PDFreactor;
using System.IO;

class Program
{
    static void Main()
    {
       PDFreactorpdfReactor = new PDFreactor();

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        Configuration config = new Configuration();
        config.Document = html;
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }");

        Result result = pdfReactor.Convert(config);

        File.WriteAllBytes("document.pdf", result.Document);
    }
}
Imports RealObjects.PDFreactor
Imports System.IO

Module Program
    Sub Main()
        Dim pdfReactor As New PDFreactor()

        Dim html As String = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>"

        Dim config As New Configuration()
        config.Document = html
        config.AddUserStyleSheet("@page { @top-center { content: 'Header Text'; } @bottom-center { content: 'Page ' counter(page); } }")

        Dim result As Result = pdfReactor.Convert(config)

        File.WriteAllBytes("document.pdf", result.Document)
    End Sub
End Module
$vbLabelText   $csharpLabel

이후 (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Header Text"
        };

        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page}"
        };

        string html = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Module Program
    Sub Main()
        Dim renderer As New ChromePdfRenderer()

        renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
            .CenterText = "Header Text"
        }

        renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
            .CenterText = "Page {page}"
        }

        Dim html As String = "<html><body><h1>Document with Headers</h1><p>Content here</p></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("document.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

이 예제는 가장 중요한 구문 차이를 보여줍니다. PDFreactor는 @page 규칙, @bottom-center 영역, counter(page)를 사용하여 AddUserStyleSheet()를 통해 주입된 페이지 번호에 CSS 분할 미디어구문을 사용합니다.

IronPDF는 TextHeaderFooter 객체가 RenderingOptions.TextHeaderRenderingOptions.TextFooter에 할당되는 네이티브 .NET API를 사용합니다. 페이지 번호는 CSS counter(page) 대신 {page} 플레이스홀더를 사용합니다. IronPDF는 또한 헤더/푸터 클래스에 대해 IronPdf.Rendering 네임스페이스를 가져와야 함을 주의하세요.


중요한 마이그레이션 노트

서버 필요 없음

IronPDF는 프로세스 내에서 실행됩니다—설정할 Java 서버가 필요 없음:

// PDFreactor: Requires server connection
var pdfReactor = new PDFreactor("http://localhost:9423");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
// PDFreactor: Requires server connection
var pdfReactor = new PDFreactor("http://localhost:9423");

// IronPDF: No server URL needed
var renderer = new ChromePdfRenderer();
' PDFreactor: Requires server connection
Dim pdfReactor = New PDFreactor("http://localhost:9423")

' IronPDF: No server URL needed
Dim renderer = New ChromePdfRenderer()
$vbLabelText   $csharpLabel

CSS Paged Media에서IronPDFAPI로

CSS @page 규칙을 RenderingOptions로 대체하십시오:

//PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
//PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
//IronPDFequivalent:
renderer.RenderingOptions.TextFooter = new TextHeaderFooter 
{ 
    CenterText = "Page {page}" 
};
'PDFreactorCSS: @page { @bottom-center { content: 'Page ' counter(page); } }
'IronPDFequivalent:
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .CenterText = "Page {page}"
}
$vbLabelText   $csharpLabel

페이지 번호 플레이스홀더 문법

//PDFreactorCSS: counter(page)
// IronPDF: {page}

//PDFreactorCSS: counter(pages)  
// IronPDF: {total-pages}
//PDFreactorCSS: counter(page)
// IronPDF: {page}

//PDFreactorCSS: counter(pages)  
// IronPDF: {total-pages}
'PDFreactorCSS: counter(page)
' IronPDF: {page}

'PDFreactorCSS: counter(pages)  
' IronPDF: {total-pages}
$vbLabelText   $csharpLabel

결과 처리 변경

구성 + 결과 패턴은 직접 PdfDocument로 변경:

// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);

// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
// PDFreactor: Configuration → Convert → Result → bytes
Result result = pdfReactor.Convert(config);
byte[] bytes = result.Document;
File.WriteAllBytes("output.pdf", bytes);

// IronPDF: Direct PdfDocument with built-in methods
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or: byte[] bytes = pdf.BinaryData;
' PDFreactor: Configuration → Convert → Result → bytes
Dim result As Result = pdfReactor.Convert(config)
Dim bytes As Byte() = result.Document
File.WriteAllBytes("output.pdf", bytes)

' IronPDF: Direct PdfDocument with built-in methods
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' Or: Dim bytes As Byte() = pdf.BinaryData
$vbLabelText   $csharpLabel

여백 단위 변경

PDFreactor는 문자열을 사용합니다; IronPDF는 밀리미터를 사용합니다:

// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4  // 1 inch in mm
// PDFreactor: config.PageMargins.Top = "1in"
// IronPDF: renderer.RenderingOptions.MarginTop = 25.4  // 1 inch in mm
' PDFreactor: config.PageMargins.Top = "1in"
' IronPDF: renderer.RenderingOptions.MarginTop = 25.4  ' 1 inch in mm
$vbLabelText   $csharpLabel

이동 후 새로운 기능

IronPDF로 이전 후, PDFreactor가 제공할 수 없는 기능을 얻게 됩니다:

PDF 병합

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

워터마크

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

텍스트 추출

string text = pdf.ExtractAllText();
string text = pdf.ExtractAllText();
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

비밀번호 보호

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
$vbLabelText   $csharpLabel

기능 비교 요약

기능 PDFreactor IronPDF
HTML to PDF
URL을 PDF로 변환
헤더/푸터 CSS 분할 미디어 본래의 API
페이지 설정
JavaScript 지원
네이티브 .NET
프로세스 내
PDF 병합
PDF 분할
워터마크
텍스트 추출
폼 채우기
디지털 서명

마이그레이션 체크리스트

사전 마이그레이션

  • 코드베이스에서 모든PDFreactor사용 인벤토리
  • 사용된 모든 CSS 분할 미디어규칙 문서화
  • 모든 구성 설정(여백, 페이지 크기, JavaScript) 기록 -IronPDF라이선스 키 저장 계획 (환경 변수 권장) -IronPDF체험판 라이선스로 먼저 테스트

패키지 변경 사항

  • PDFreactor.NET NuGet 패키지 제거
  • PDFreactor.Native.Windows.x64 NuGet 패키지 제거
  • IronPdf NuGet Install-Package: dotnet add package IronPdf

코드 변경 사항

  • 네임스페이스 가져오기 업데이트 (using RealObjects.PDFreactor;using IronPdf;)
  • 헤더/푸터 클래스를 위해 using IronPdf.Rendering; 추가
  • PDFreactor 클래스를 ChromePdfRenderer로 교체
  • Configuration 객체를 RenderingOptions 속성으로 변환
  • config.Document = htmlrenderer.RenderHtmlAsPdf(html)로 교체
  • config.Document = urlrenderer.RenderUrlAsPdf(url)로 교체
  • File.WriteAllBytes(path, result.Document)pdf.SaveAs(path)로 교체
  • CSS @page 규칙을 TextFooter 객체로 변환
  • 페이지 번호 플레이스홀더 업데이트 (counter(page){page})
  • 여백 단위를 문자열에서 밀리미터로 변환

인프라 마이그레이션

  • Java 런타임 요구사항 제거 -PDFreactor서버 사용 중단
  • Docker/배포 구성 업데이트
  • CI/CD 파이프라인을 업데이트하세요

마이그레이션 이후

  • PDF 출력 품질이 기대에 부합하는지 테스트하세요
  • 헤더/푸터 렌더링 검증
  • 사용했다면 JavaScript 실행 확인
  • 필요에 따라 새로운 기능 추가 (병합, 워터마크, 보안)

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

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

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

아이언 서포트 팀

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