IRONSOFTWAREHOME
동영상

VB .NET 라이브러리를 사용하여 PDF 파일을 생성하는 방법 | IronPDF

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

SQL Server Reporting Services (SSRS)에서 IronPDF로의 마이그레이션은 PDF 생성 워크플로를 대규모 서버 기반 인프라에서 모든 .NET 애플리케이션에 직접 임베드될 수 있는 경량의 프로세스 내 라이브러리로 변환합니다. 이 가이드는 SQL Server 종속성, 보고 서버 오버헤드 및 Microsoft 생태계 락인을 제거하는 완전하고 단계적인 마이그레이션 경로를 제공합니다.

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

SSRS이해하기

SQL Server Reporting Services (SSRS)는 Microsoft의 Enterprise 보고 플랫폼이며, SQL Server 생태계와 긴밀히 통합된 보고서 생성, 배포 및 관리를 위한 완벽한 제품군입니다. Microsoft는 SSRS 2022가 최종 독립 버전임을 확인했습니다: SQL Server 2025부터는 서버 내부 보고서가 Power BI 보고서 서버(PBIRS)로 통합되며, 새로운SSRS릴리스가 출시되지 않습니다.SSRS2022는 2033년 1월 11일까지 보안 업데이트를 받습니다. 이는 SQL Server 2022 라이프사이클과 일치합니다 (자세한 내용은 보고 서비스 통합 FAQ 참조).

여러 PDF 생성 시나리오에서SSRS인프라는 과도합니다. 이주를 위한 주요한 이유는 다음과 같습니다:

  1. SSRS 라인의 종료: SQL Server 2025는SSRS없이 출시됩니다; PBIRS가 이를 대체합니다. SSRS를 목표로 하는 새로운 작업은 막다른 길입니다.
  2. 무거운 인프라: SQL Server, 리포트 서버 및 (구형 웹 폼 뷰어의 경우) IIS 구성이 필요
  3. Microsoft 생태계 고립: SQL Server 라이센싱 및 Windows Server에 종속
  4. 복잡한 배포: 리포트 배포, 보안 구성 및 구독 관리
  5. 비싼 라이센싱: 특히 Enterprise 기능의 경우 SQL Server 라이센스
  6. 정식 .NET Core 지원 부재: Microsoft의 Microsoft.ReportingServices.ReportViewerControl.WebForms / .Winforms 패키지는 .NET Framework 4.0–4.8.1만을 대상으로 합니다. .NET Core / .NET 5+ 사용자는 커뮤니티 포트 ReportViewerCore.NETCore에 의존합니다.
  7. 유지보수 오버헤드: 서버 패칭, 데이터베이스 유지보수, 보고서 관리
  8. 클라우드 네이티브 옵션 없음: 온프레미스를 위해 설계되었으며, 클라우드 지원이 어색함

SSRS가 과도할 때

필요SSRS오버헤드
송장 생성전체 보고서 서버
데이터 테이블 내보내기SQL Server 라이선스
데이터로부터 PDF 생성Windows Server
간단한 문서 생성보고서 구독

IronPDF는 서버 인프라 없이 프로세스 내 PDF 생성을 제공합니다.

SSRS대IronPDF비교

기능SSRSIronPDF
의존성SQL Server가 필요함특정 데이터베이스 종속성 없음
배포서버 기반라이브러리 (애플리케이션에 내장됨)
통합Microsoft와의 긴밀한 통합모든 데이터 소스와 작동
데이터 시각화광범위한 네이티브 옵션PDF 중심의 시각화
복잡성높음 (서버 설정 필요)보통에서 낮음 (라이브러리 설정)
비용SQL Server 라이선스 비용개발자당 라이선스 비용
HTML to PDF아니요전체 Chromium
URL을 PDF로아니요
CSS 지원제한적전체 CSS3
JavaScript아니요전체 ES2024

IronPDF는 SSRS와 달리 특정 데이터베이스 또는 서버 생태계에 종속되지 않습니다. 개발자가 C#에서 PDF 문서를 동적으로 생성, 편집 및 조작할 수 있는 유연한 라이브러리를 제공합니다. 이 서버 기반 인프라에서의 분리는 명확한 장점을 제공하며, 보고서 외의 다양한 애플리케이션에 적합한 단순성과 적응성을 갖추고 있습니다.

현대 .NET을 채택하는 팀에게 IronPDF는 SSRS의 인프라 복잡성을 없애주는 Chromium 렌더링 엔진을 제공합니다.


시작하기 전에

필수 조건

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

#SSRSitself is server-based, but the in-process LocalReport API
# ships via Microsoft's ReportViewerControl packages (latest 150.1652.0,
# June 2024 — .NET Framework 4.0–4.8.1 only).
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.Winforms

# If your project used the community .NET Core port, remove it too:
# dotnet remove package ReportViewerCore.NETCore

# Install IronPDF
dotnet add package IronPdf
SHELL

라이선스 구성

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

완전한 API 참조

네임스페이스 변경

// Before: SSRS
using Microsoft.Reporting.WebForms;
using Microsoft.Reporting.WinForms;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

핵심 API 매핑

SSRS 개념IronPDF 동등노트
LocalReportChromePdfRenderer코어 렌더링
ServerReportRenderUrlAsPdf()URL 기반 렌더링
.rdlc 파일HTML/CSS 템플릿템플릿 형식
ReportParameter문자열 보간매개변수
ReportDataSourceC# 데이터 + HTML데이터 바인딩
LocalReport.Render("PDF")RenderHtmlAsPdf()PDF 출력
SubReport병합된 PDFs중첩 보고서
Report Server URL필요 없음서버 필요 없음
ReportViewer 제어필요 없음직접 PDF 생성
내보내기 형식PDF가 네이티브집중된 출력

코드 마이그레이션 예제

예제 1: HTML에서 PDF로 변환

이전 (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSHtmlToPdf
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        
        // Load RDLC report definition
        reportViewer.LocalReport.ReportPath = "Report.rdlc";
        
        // Add HTML content as a parameter or dataset
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var param = new ReportParameter("HtmlContent", htmlContent);
        reportViewer.LocalReport.SetParameters(param);
        
        // Render the report to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;
        
        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF",
            null,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);
        
        File.WriteAllBytes("output.pdf", bytes);
    }
}
C#

이후 (IronPDF):

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

class IronPdfHtmlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();
        
        // Convert HTML string to PDF
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        
        // Save the PDF file
        pdf.SaveAs("output.pdf");
    }
}

이 예제는 근본적인 아키텍처 차이를 보여줍니다. SSRS는 ReportViewer 인스턴스 생성, .rdlc 보고서 정의 파일 로드, 매개변수 설정, 그런 다음 메타데이터를 위한 다중 out 매개변수와 함께 LocalReport.Render("PDF") 호출을 필요로 합니다.

IronPDF는 단 세 줄의 코드에서 ChromePdfRendererRenderHtmlAsPdf()을 사용합니다. 보고서 정의 파일, 매개변수 개체, 메타데이터 처리 필요 없음. HTML에서 PDF로의 문서에서 포괄적인 예제를 참조하세요.

예제 2: 헤더 및 푸터를 포함한 URL을 PDF로 변환

이전 (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.IO;
using System.Net;
using Microsoft.Reporting.WebForms;

class SSRSUrlToPdf
{
    static void Main()
    {
        // Download HTML content from URL
        string url = "https://example.com";
        string htmlContent;
        
        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString(url);
        }
        
        // Create RDLC report with header/footer configuration
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "WebReport.rdlc";
        
        // Set parameters for header and footer
        var parameters = new ReportParameter[]
        {
            new ReportParameter("HeaderText", "Company Report"),
            new ReportParameter("FooterText", "Page " + DateTime.Now.ToString()),
            new ReportParameter("HtmlContent", htmlContent)
        };
        reportViewer.LocalReport.SetParameters(parameters);
        
        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;
        
        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);
        
        File.WriteAllBytes("webpage.pdf", bytes);
    }
}
C#

이후 (IronPDF):

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

class IronPdfUrlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();
        
        // Configure rendering options with header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };
        
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages} - " + DateTime.Now.ToString("MM/dd/yyyy") + "</div>"
        };
        
        // Convert URL to PDF
        string url = "https://example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        
        // Save the PDF file
        pdf.SaveAs("webpage.pdf");
    }
}

SSRS는 URL을 직접 PDF로 변환할 수 없습니다. HTML 콘텐츠를 WebClient.DownloadString()로 수동으로 다운로드하고, 별도의 .rdlc 보고서 파일을 생성하고, HTML과 헤더/푸터 텍스트를 ReportParameter 배열로 전달한 다음 복잡한 Render() 메서드 시그니처로 렌더링 해야 합니다.

IronPDF의 RenderUrlAsPdf()은 전체 과정을 한 번의 호출로 처리합니다. 헤더와 푸터는 HtmlHeaderFooter 객체로 구성되며, 전체 HTML/CSS와 {page}{total-pages} 같은 플레이스홀더를 지원합니다. 더 많은 정보를 보려면 튜토리얼을 참조하세요.

예제 3: 데이터베이스 기반 보고서

이전 (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSDatabaseReport
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "SalesReport.rdlc";
        
        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            var dataSet = new DataSet();
            adapter.Fill(dataSet, "Sales");
            
            // Bind data to report
            var dataSource = new ReportDataSource("SalesDataSet", dataSet.Tables[0]);
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.LocalReport.DataSources.Add(dataSource);
        }
        
        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;
        
        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);
        
        File.WriteAllBytes("sales-report.pdf", bytes);
    }
}
C#

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;

class IronPdfDatabaseReport
{
    static void Main()
    {
        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        var dataTable = new DataTable();
        
        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            adapter.Fill(dataTable);
        }
        
        // Build HTML table from data
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<h1>Sales Report</h1><table border='1'><tr>");
        
        foreach (DataColumn column in dataTable.Columns)
            htmlBuilder.Append($"<th>{column.ColumnName}</th>");
        htmlBuilder.Append("</tr>");
        
        foreach (DataRow row in dataTable.Rows)
        {
            htmlBuilder.Append("<tr>");
            foreach (var item in row.ItemArray)
                htmlBuilder.Append($"<td>{item}</td>");
            htmlBuilder.Append("</tr>");
        }
        htmlBuilder.Append("</table>");
        
        // Convert to PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
        pdf.SaveAs("sales-report.pdf");
    }
}

SSRS는 사전 설계된 .rdlc 보고서 파일('SalesReport.rdlc'), DataSet 채우기, 보고서 정의와 일치해야 하는 특정 이름('SalesDataSet')의 ReportDataSource 생성, 기존 데이터 소스 지우기, 새 데이터 소스 추가 후 렌더링이 필요합니다.

IronPDF는 기존 데이터 액세스 코드(같은 SqlDataAdapter 패턴)를 사용한 후 StringBuilder로 HTML을 동적으로 생성합니다. 표준 HTML/CSS를 사용하여 레이아웃을 완전히 제어할 수 있으며, 독점적인 보고서 정의 파일이 필요하지 않습니다.


기능 비교

기능SSRSIronPDF
:인프라스트럭처:
SQL 서버 라이선스필요함필요 없음
Windows Server필요함모든 플랫폼
데이터베이스 필요예 (ReportServer DB)아니요
:개발:
템플릿 포맷RDLC/RDLHTML/CSS/Razor
데이터 소스내장 DSN모든 C# 데이터
:렌더링:
URL을 PDF로 변환아니요
CSS 지원제한적전체 CSS3
JavaScript아니요전체 ES2024
차트내장형JS 라이브러리를 통해
:배포:
구성복잡함간단함
유지보수높음낮음

일반적인 마이그레이션 문제

문제 1: RDLC 보고서 정의

SSRS: 독점 .rdlc XML 형식 사용.

해결 방법: HTML 템플릿으로 변환:

  1. Visual Studio에서 .rdlc 열기
  2. 레이아웃 구조 문서화
  3. HTML/CSS로 다시 생성
  4. 데이터 바인딩에 Razor 사용

문제 2: 공유 데이터 소스

SSRS: 리포트 서버의 연결 문자열.

해결 방법: 애플리케이션의 데이터 액세스 레이어 사용:

var data = await _dbContext.Sales.ToListAsync();
// Then bind to HTML template

문제 3: 보고서 매개변수 UI

SSRS: 기본 매개변수 프롬프트.

해결 방법: 애플리케이션 내 매개변수 UI 구축:

// Your own parameter form, then:
var pdf = GenerateReport(startDate, endDate, region);

문제 4: 구독/예약 보고서

SSRS: 기본 구독 엔진.

해결 방법: 백그라운드 작업 프레임워크 사용:

// Using Hangfire or similar
RecurringJob.AddOrUpdate("weekly-report",
    () => GenerateAndEmailReport(), Cron.Weekly);

마이그레이션 체크리스트

사전 마이그레이션

  • 모든SSRS보고서(.rdlc 파일) 목록 작성
  • 데이터 소스 및 연결 문서화
  • 보고서 레이아웃의 시각적 참조를 위한 스크린샷
  • 각 보고서의 보고서 매개변수 목록
  • 구독 일정 메모
  • ironpdf.com에서IronPDF라이선스 키 획득

코드 업데이트

  • ReportViewer 패키지 제거
  • IronPdf NuGet Install-Package
  • .rdlc 파일을 HTML 템플릿으로 변환
  • LocalReportChromePdfRenderer로 대체
  • ReportDataSource을 C# 데이터 + HTML 템플릿으로 대체
  • ReportParameter을 문자열 보간법으로 대체
  • LocalReport.Render("PDF")RenderHtmlAsPdf()로 대체
  • HtmlHeaderFooter으로 헤더/푸터 구현
  • 애플리케이션 시작 시 라이선스 초기화 추가

인프라

  • 리포트 서버 퇴출 계획
  • 작업 스케줄러(Hangfire 등)로 구독 이동
  • 배포 스크립트 업데이트

테스트

  • PDF 출력 시각적으로 비교
  • 데이터 정확성 확인
  • 페이지 매김 테스트
  • 모든 매개변수 확인
  • 성능 테스트

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