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

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

FastReport.NET은 .NET 생태계를 위해 만들어진 강력한 보고 솔루션으로, 복잡한 데이터 기반 보고서를 생성하기 위한 시각적 보고서 디자이너와 밴드 기반 아키텍처를 특징으로 합니다. 그러나 FastReport는 현대 PDF 생성 워크플로우에 상당한 도전을 제시합니다: 보고서 디자이너 의존도는 코드 우선 개발을 제한하고, DataBand, PageHeaderBand와 같은 밴드 기반 개념에 대한 급격한 학습 곡선을 유발하며, RegisterData() 보일러플레이트를 사용하는 복잡한 데이터 바인딩과 제한된 CSS 지원을 사용하고, 여러 설치가 필요한 분산된 NuGet 패키지를 필요로 합니다. 이 포괄적인 가이드는 FastReport에서 IronPDF로의 단계별 마이그레이션 경로를 제공합니다. IronPDF는 HTML/CSS 웹 기술을 활용하여 유연하고 프로그래밍 방식으로 문서를 생성할 수 있는 범용 PDF 라이브러리입니다.

FastReport에서 IronPDF로 마이그레이션 해야 하는 이유?

FastReport.NET의 보고서 전문화는 다양한 PDF 생성을 필요로 하는 개발 팀에게 마찰을 일으킵니다. 이러한 아키텍처 차이를 이해하는 것은 마이그레이션을 계획하는 데 필수적입니다.

FastReport의 도전 과제

  1. 보고서 디자이너 의존성: 복잡한 레이아웃을 생성하려면 시각적 디자이너나 .frx 파일 구조에 대한 깊은 지식이 필요합니다. 이는 코드 우선 개발 접근 방식에 적합하지 않습니다.

  2. 가파른 학습 곡선: FastReport의 밴드 기반 아키텍처(DataBand, PageHeaderBand, PageFooterBand)는 다른 기술로 전환되지 않는 보고서 전용 개념을 이해해야 합니다.

  3. 제한된 CSS 지원: 웹 표준 스타일링은 기본적으로 지원되지 않으며, 스타일링은 익숙한 CSS 대신 FastReport의 독점 형식을 통해 이루어집니다.

  4. 복잡한 데이터 바인딩: RegisterData() 및 DataSource 연결은 간단한 PDF 생성 시나리오에도 상용구를 추가합니다.

  5. 단편화된 패키지: 전체 기능을 위해 여러 NuGet 패키지가 필요합니다(FastReport.OpenSource, FastReport.OpenSource.Export.PdfSimple 등).

  6. 라이선스 복잡성: 오픈 소스 버전은 기능이 제한되어 있으며, PDF 암호화, 디지털 서명 및 폰트 임베딩을 위해 상용 버전이 필요합니다.

아키텍처 비교

측면 FastReport IronPDF
설계 접근 방식 시각적 디자이너 + .frx 파일 HTML/CSS (웹 기술)
학습 곡선 가파름 (밴드 기반 개념) 부드러움 (HTML/CSS 지식)
데이터 바인딩 RegisterData(), DataBand 문자열 보간, Razor, 템플릿
CSS 지원 제한적 전체 CSS3와 Flexbox/Grid 제공
패키지 모델 다중 패키지 단일 패키지 (모든 기능 포함)
렌더링 엔진 사용자 정의 최신 Chromium
PDF 조작 내보내기 중심 전체(병합, 분할, 보안, 양식)
최신 .NET .NET Standard 2.0 .NET 6/7/8/9+ 네이티브

주요 마이그레이션 혜택

  1. 웹 기술: 독점적인 밴드 기반 레이아웃 대신 익숙한 HTML/CSS를 사용하세요.
  2. 코드 우선 개발: 시각적 디자이너에 의존하지 않고 프로그래밍 방식으로 PDF를 생성하세요.
  3. 단일 패키지: 하나의 NuGet 패키지에 모든 PDF 기능이 포함되어 있습니다.
  4. 최신 렌더링: 픽셀 완벽한 CSS3 출력을 위한 최신 Chromium 엔진
  5. 전체 PDF 조작: 병합, 분할, 보안, 양식—단순한 내보내기에 그치지 않습니다.

이전 준비

필수 조건

환경이 다음 요구 사항을 충족하는지 확인하세요:

  • .NET Framework 4.6.2+ 또는 .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ 또는 VS Code와 C# 확장
  • NuGet 패키지 관리자 접근 -IronPDF라이선스 키 (ironpdf.com에서 무료 체험판 제공)

FastReport사용 감사

FastReport 참조 전체를 식별하기 위해 솔루션 디렉터리에서 이러한 명령어를 실행하세요:

# Find allFastReportreferences
grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep FastReport
# Find allFastReportreferences
grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep FastReport
SHELL

보고서 템플릿 문서화

마이그레이션 전에, 모든 .frx 파일과 그 목적을 카탈로그하십시오:

  • 보고서 이름 및 목적
  • 사용된 데이터 소스
  • 헤더/푸터 구성
  • 페이지 번호 요구사항
  • 특별한 포맷팅 또는 스타일링

패러다임 변화 이해

FastReport에서 IronPDF로 마이그레이션할 때 가장 중요한 변화는 근본적인 설계 접근 방식입니다. FastReport는 .frx 템플릿 파일과 DataBand, PageHeaderBand, RegisterData()와 같은 고유 개념을 사용하는 밴드 기반 시각적 디자인을 사용합니다. IronPDF는 대부분의 개발자가 이미 알고 있는 웹 기술인 HTML/CSS를 사용합니다.

이는FastReport밴드 구성을 HTML 템플릿으로 변환하고, RegisterData()를 문자열 보간 또는 Razor 템플릿을 통한 직접 데이터 바인딩으로 대체하며, PageHeaderBand/PageFooterBand를 HTML 기반의 헤더와 푸터로 변환한다는 의미입니다.

단계별 마이그레이션 프로세스

1단계: NuGet 패키지 업데이트

모든FastReport패키지를 제거하고 IronPDF를 설치하세요:

# Remove allFastReportpackages
dotnet remove package FastReport.OpenSource
dotnet remove package FastReport.OpenSource.Export.PdfSimple
dotnet remove package FastReport.OpenSource.Web
dotnet remove package FastReport.OpenSource.Data.MsSql

# InstallIronPDF(includes all features)
dotnet add package IronPdf
# Remove allFastReportpackages
dotnet remove package FastReport.OpenSource
dotnet remove package FastReport.OpenSource.Export.PdfSimple
dotnet remove package FastReport.OpenSource.Web
dotnet remove package FastReport.OpenSource.Data.MsSql

# InstallIronPDF(includes all features)
dotnet add package IronPdf
SHELL

2단계: 네임스페이스 참조 업데이트

FastReport 네임스페이스를 IronPDF로 대체하세요:

// Remove these
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

// Add this
using IronPdf;
// Remove these
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

// Add this
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

3단계: 라이선스 구성

// 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

완전한 API 마이그레이션 참조

핵심 클래스 매핑

FastReport 클래스 IronPDF 동등
Report ChromePdfRenderer
PDFExport ChromePdfRenderer + SecuritySettings
PDFSimpleExport ChromePdfRenderer
ReportPage HTML <body> 또는 <div>
TextObject HTML <p>, <span>, <div>
HTMLObject 직접 HTML 렌더링
PageHeaderBand HtmlHeaderFooter
PageFooterBand HtmlHeaderFooter

메서드 매핑

FastReport 메서드 IronPDF 동등
report.Load("template.frx") HTML 템플릿 파일 또는 문자열
report.RegisterData(data, "name") 문자열 보간 또는 Razor
report.Prepare() 해당 없음
report.Export(export, stream) pdf.SaveAs(path)

페이지 번호 자리 표시자 변환

FastReport와 IronPDF는 페이지 번호를 위한 다른 자리 표시자 구문을 사용합니다:

FastReport IronPDF
[Page] {page}
[TotalPages] {total-pages}

코드 마이그레이션 예제

HTML을 PDF로 변환

이 예시는 FastReport의 HTMLObject 접근 방식과 IronPDF의 직접 렌더링 간의 근본적인 차이를 설명합니다.

FastReport 구현:

// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            // Create HTML object
            FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
            htmlObject.Width = 500;
            htmlObject.Height = 300;
            htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>";

            // Prepare report
            report.Prepare();

            // Export to PDF
            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            // Create HTML object
            FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
            htmlObject.Width = 500;
            htmlObject.Height = 300;
            htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>";

            // Prepare report
            report.Prepare();

            // Export to PDF
            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.IO

Class Program
    Shared Sub Main()
        Using report As New Report()
            ' Create HTML object
            Dim htmlObject As New FastReport.HTMLObject()
            htmlObject.Width = 500
            htmlObject.Height = 300
            htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>"

            ' Prepare report
            report.Prepare()

            ' Export to PDF
            Dim pdfExport As New PDFSimpleExport()
            Using fs As New FileStream("output.pdf", FileMode.Create)
                report.Export(pdfExport, fs)
            End Using
        End Using
    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.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

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

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

FastReport는 보고서 개체를 생성하고, 고정 크기의 HTMLObject를 생성하며, 보고서를 준비하고, 스트림을 통해 내보내는 작업이 필요합니다—사용 구문을 포함하여 7줄의 코드입니다. IronPDF는 직접 HTML 렌더링을 통해 세 줄로 동일한 결과를 달성합니다. 더 많은 옵션을 보려면 HTML to PDF 문서를 참조하세요.

URL을 PDF로 변환

이 예시는 FastReport가 수동 HTML 다운로드를 요구하는 반면 IronPDF는 URL 렌더링을 기본적으로 처리하는 방식을 강조합니다.

FastReport 구현:

// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        // Download HTML content from URL
        string htmlContent;
        using (WebClient client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }

        using (Report report = new Report())
        {
            FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
            htmlObject.Width = 800;
            htmlObject.Height = 600;
            htmlObject.Text = htmlContent;

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        // Download HTML content from URL
        string htmlContent;
        using (WebClient client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }

        using (Report report = new Report())
        {
            FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
            htmlObject.Width = 800;
            htmlObject.Height = 600;
            htmlObject.Text = htmlContent;

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.IO
Imports System.Net

Class Program
    Shared Sub Main()
        ' Download HTML content from URL
        Dim htmlContent As String
        Using client As New WebClient()
            htmlContent = client.DownloadString("https://example.com")
        End Using

        Using report As New Report()
            Dim htmlObject As New FastReport.HTMLObject()
            htmlObject.Width = 800
            htmlObject.Height = 600
            htmlObject.Text = htmlContent

            report.Prepare()

            Dim pdfExport As New PDFSimpleExport()
            Using fs As New FileStream("webpage.pdf", FileMode.Create)
                report.Export(pdfExport, fs)
            End Using
        End Using
    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://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://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf

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

FastReport는 WebClient로 HTML 콘텐츠를 수동으로 다운로드한 후, 고정 크기의 HTMLObject에 포함해야 하며, 이는 JavaScript 실행이나 상대 리소스 URL을 제대로 처리하지 못하는 해결책입니다. IronPDF의 RenderUrlAsPdf는 Chromium 엔진을 사용하여 전체 JavaScript 실행으로 라이브 웹페이지를 직접 렌더링합니다. 더 많은 옵션은 URL to PDF documentation를 참조하세요.

페이지 번호가 있는 헤더 및 푸터

이 예시는 FastReport의 밴드 기반 시스템과 IronPDF의 HTML 기반 접근 방식 간의 복잡성 차이를 설명합니다.

FastReport 구현:

// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            report.Load("template.frx");

            // Set report page properties
            FastReport.ReportPage page = report.Pages[0] as FastReport.ReportPage;

            // Add page header
            FastReport.PageHeaderBand header = new FastReport.PageHeaderBand();
            header.Height = 50;
            FastReport.TextObject headerText = new FastReport.TextObject();
            headerText.Text = "Document Header";
            header.Objects.Add(headerText);
            page.Bands.Add(header);

            // Add page footer
            FastReport.PageFooterBand footer = new FastReport.PageFooterBand();
            footer.Height = 50;
            FastReport.TextObject footerText = new FastReport.TextObject();
            footerText.Text = "Page [Page]";
            footer.Objects.Add(footerText);
            page.Bands.Add(footer);

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("report.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            report.Load("template.frx");

            // Set report page properties
            FastReport.ReportPage page = report.Pages[0] as FastReport.ReportPage;

            // Add page header
            FastReport.PageHeaderBand header = new FastReport.PageHeaderBand();
            header.Height = 50;
            FastReport.TextObject headerText = new FastReport.TextObject();
            headerText.Text = "Document Header";
            header.Objects.Add(headerText);
            page.Bands.Add(header);

            // Add page footer
            FastReport.PageFooterBand footer = new FastReport.PageFooterBand();
            footer.Height = 50;
            FastReport.TextObject footerText = new FastReport.TextObject();
            footerText.Text = "Page [Page]";
            footer.Objects.Add(footerText);
            page.Bands.Add(footer);

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("report.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
Imports FastReport
Imports FastReport.Export.PdfSimple
Imports System.IO

Class Program
    Shared Sub Main()
        Using report As New Report()
            report.Load("template.frx")

            ' Set report page properties
            Dim page As FastReport.ReportPage = TryCast(report.Pages(0), FastReport.ReportPage)

            ' Add page header
            Dim header As New FastReport.PageHeaderBand()
            header.Height = 50
            Dim headerText As New FastReport.TextObject()
            headerText.Text = "Document Header"
            header.Objects.Add(headerText)
            page.Bands.Add(header)

            ' Add page footer
            Dim footer As New FastReport.PageFooterBand()
            footer.Height = 50
            Dim footerText As New FastReport.TextObject()
            footerText.Text = "Page [Page]"
            footer.Objects.Add(footerText)
            page.Bands.Add(footer)

            report.Prepare()

            Dim pdfExport As New PDFSimpleExport()
            Using fs As New FileStream("report.pdf", FileMode.Create)
                report.Export(pdfExport, fs)
            End Using
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 구현:

// NuGet: Install-Package IronPdf
using IronPdf;

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

        // Configure header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>");
        pdf.SaveAs("report.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

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

        // Configure header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>");
        pdf.SaveAs("report.pdf");
    }
}
Imports IronPdf

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

        ' Configure header and footer
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Document Header</div>"
        }

        renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        }

        Dim pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>")
        pdf.SaveAs("report.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

FastReport는 템플릿 파일을 로드하고, 페이지 개체를 캐스팅하며, 밴드 개체를 생성하고, 높이를 설정하고, 텍스트 객체를 생성하고, 밴드 컬렉션에 추가하며, 밴드를 페이지에 추가해야 합니다. IronPDF는 간단한 HTML 조각으로 HtmlHeaderFooter 를 사용합니다—헤더와 푸터를 전체 CSS로 스타일링할 수 있습니다. 페이지 번호 구문 변경 사항에 유의하십시오: [Page]{page} 로, [TotalPages]{total-pages} 로 변경됩니다. 더 많은 옵션은 헤더 및 푸터 문서를 참조하세요.

중요한 마이그레이션 노트

프레임워크(.frx) 템플릿 파일 없음

.frxFastReport템플릿은 IronPDF와 작동하지 않습니다. 레이아웃을 HTML/CSS 템플릿으로 변환하십시오:

//FastReport- loads .frx template
report.Load("report.frx");

//IronPDF- use HTML template
var html = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(html);
//FastReport- loads .frx template
report.Load("report.frx");

//IronPDF- use HTML template
var html = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(html);
' FastReport - loads .frx template
report.Load("report.frx")

' IronPDF - use HTML template
Dim html As String = File.ReadAllText("template.html")
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

데이터 바인딩 변환

RegisterData()를 직접 HTML 생성으로 교체하십시오:

// FastReport
report.RegisterData(dataSet, "Data");
report.GetDataSource("Data").Enabled = true;

//IronPDF- use string interpolation or StringBuilder
var html = new StringBuilder();
foreach (var item in data)
{
    html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>");
}
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
// FastReport
report.RegisterData(dataSet, "Data");
report.GetDataSource("Data").Enabled = true;

//IronPDF- use string interpolation or StringBuilder
var html = new StringBuilder();
foreach (var item in data)
{
    html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>");
}
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
Imports System.Text

' FastReport
report.RegisterData(dataSet, "Data")
report.GetDataSource("Data").Enabled = True

' IronPDF - use string interpolation or StringBuilder
Dim html As New StringBuilder()
For Each item In data
    html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>")
Next
Dim pdf = renderer.RenderHtmlAsPdf(html.ToString())
$vbLabelText   $csharpLabel

보안 설정

//IronPDFsecurity
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "password";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
//IronPDFsecurity
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "password";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
'IronPDFsecurity
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "password"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
$vbLabelText   $csharpLabel

포괄적인 보안 옵션은 암호화 문서를 참조하십시오.

마이그레이션 후 점검 목록

코드 마이그레이션을 완료한 후, 다음을 확인하십시오:

  • 생성된 PDF의 시각적 비교
  • 헤더/푸터 및 페이지 번호 확인
  • 프로덕션 데이터 볼륨으로 테스트하십시오
  • 보안/암호화 기능을 검증하십시오
  • 성능 벤치마킹
  • 사용하지 않는 .frx 템플릿 파일 제거 -FastReport관련 코드를 삭제하십시오
  • 문서 업데이트

PDF 인프라의 미래 대비

.NET 10의 도래와 C# 14의 새로운 언어 기능 도입으로 현대 웹 기술을 수용하는 PDF 라이브러리를 선택하면 장기적으로 유지 관리가 가능합니다. IronPDF의 HTML/CSS 접근 방식은 웹 개발 전체에서 사용되는 동일한 기술을 활용한다는 것을 의미하며, 다른 기술로 전달되지 않는 독점적인 밴드 기반 개념이 없습니다. 프로젝트가 2025년 및 2026년까지 확장됨에 따라 Flexbox 및 Grid와 같은 CSS3 기능을 사용한 표준 HTML 템플릿의 사용 가능성은 FastReport의 독점 형식이 따라갈 수 없는 설계 유연성을 제공합니다.

추가 리소스


FastReport에서 IronPDF로의 마이그레이션은 시각적 디자이너 의존성, 밴드 기반 학습 곡선 및 분열된 패키지 모델을 제거합니다. HTML/CSS 기반의 PDF 생성으로의 전환은 친숙한 웹 기술을 활용하면서 단일 패키지 내에서 병합, 분할, 보안 및 양식을 포함한 완벽한 PDF 조작 기능을 제공합니다.

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

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

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

아이언 서포트 팀

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