ASP.NET MVC 뷰를 PDF로 변환하는 방법: IronPDF vs iTextSharp
Full Comparison
Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.
ASP.NET MVC 뷰를 PDF 문서로 변환하는 것은 현대 웹 애플리케이션의 핵심 요구 사항입니다. 인보이스, 보고서 또는 증명서를 생성하든, 도전 과제는 명확합니다: Razor 뷰를 형식과 스타일을 유지하는 전문가 수준의 PDF 파일로 어떻게 변환할 것인가? 이 가이드는 레거시 iTextSharp 라이브러리와 IronPDF를 비교합니다 -- 현대적인 크로미엄 기반 솔루션 -- 이를 통해 PDF 생성 워크플로에 맞는 올바른 도구를 선택할 수 있습니다.

왜 MVC 뷰를 PDF로 변환해야 하나요?
기업은 수많은 중요한 작업을 위해 PDF 생성에 의존합니다. 송장 시스템은 변조 방지 송장 문서가 필요합니다. HR 부서는 채용 증명서와 계약서를 생성합니다. 영업팀은 견적과 제안을 작성합니다. 교육 플랫폼은 수료 증명서를 발행합니다. 각 시나리오는 모든 장치 및 플랫폼에서 일관된 형식을 유지하는 서버 측 PDF 생성을 필수로 요구합니다.
ASP.NET 코어 문서에 따르면, Razor 뷰는 PDF로 변환할 수 있는 동적 콘텐츠를 생성하기 위한 훌륭한 템플릿 시스템을 제공합니다. 중요한 질문은 어느 라이브러리가 가장 정확하고 유지 가능하며 법적 적합한 솔루션을 제공하느냐입니다.

iTextSharp는 MVC에서 PDF 변환을 어떻게 처리합니까?
iTextSharp는 10년 넘게 .NET PDF 생성에 필수적이었습니다. Java iText 라이브러리에서 포팅된 이 라이브러리는 PDF 생성에 대한 저수준 제어를 제공합니다. 하지만, HTML 변환에 대한 접근 방식은 특히 현대 웹 콘텐츠를 다룰 때 그 한계를 드러냅니다.
iTextSharp 설치하기
ASP.NET Core MVC 프로젝트에 iTextSharp를 추가하려면, 패키지 관리자 콘솔을 사용하여 NuGet 패키지를 설치하십시오:
Install-Package iTextSharp
Install-Package iTextSharp

iTextSharp 기본 구현
여기 ASP.NET MVC 프로젝트에서 iTextSharp의 XMLWorkerHelper 클래스를 사용하여 MVC 뷰를 PDF로 변환하는 방법을 보여주는 완전한 예제가 있습니다:
using iTextSharp.text;
using iTextSharp.tool.xml;
using iTextSharp.text.pdf;
using System.IO;
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GeneratePDF()
{
// Create a simple invoice HTML
string invoiceHtml = @"
<h1>Invoice #1001</h1>
<p>Date: " + DateTime.아니요w.ToString("MM/dd/yyyy") + @"</p>
<table border='1'>
<tr><th>Item</th><th>Price</th></tr>
<tr><td>Product A</td><td>$99.99</td></tr>
<tr><td>Product B</td><td>$149.99</td></tr>
</table>
<p><strong>Total: $249.98</strong></p>";
// Create PDF document using iTextSharp
using var stream = new MemoryStream();
var document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
using (var srHtml = new StringReader(invoiceHtml))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, srHtml);
}
document.Close();
// Return the PDF file
return new FileContentResult(stream.ToArray(), "application/pdf")
{
FileDownloadName = "invoice.pdf"
};
}
}
using iTextSharp.text;
using iTextSharp.tool.xml;
using iTextSharp.text.pdf;
using System.IO;
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GeneratePDF()
{
// Create a simple invoice HTML
string invoiceHtml = @"
<h1>Invoice #1001</h1>
<p>Date: " + DateTime.아니요w.ToString("MM/dd/yyyy") + @"</p>
<table border='1'>
<tr><th>Item</th><th>Price</th></tr>
<tr><td>Product A</td><td>$99.99</td></tr>
<tr><td>Product B</td><td>$149.99</td></tr>
</table>
<p><strong>Total: $249.98</strong></p>";
// Create PDF document using iTextSharp
using var stream = new MemoryStream();
var document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
using (var srHtml = new StringReader(invoiceHtml))
{
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, srHtml);
}
document.Close();
// Return the PDF file
return new FileContentResult(stream.ToArray(), "application/pdf")
{
FileDownloadName = "invoice.pdf"
};
}
}
Imports iTextSharp.text
Imports iTextSharp.tool.xml
Imports iTextSharp.text.pdf
Imports System.IO
Public Class HomeController
Inherits Controller
Public Function Index() As ActionResult
Return View()
End Function
Public Function GeneratePDF() As ActionResult
' Create a simple invoice HTML
Dim invoiceHtml As String = "
<h1>Invoice #1001</h1>
<p>Date: " & DateTime.Now.ToString("MM/dd/yyyy") & "</p>
<table border='1'>
<tr><th>Item</th><th>Price</th></tr>
<tr><td>Product A</td><td>$99.99</td></tr>
<tr><td>Product B</td><td>$149.99</td></tr>
</table>
<p><strong>Total: $249.98</strong></p>"
' Create PDF document using iTextSharp
Using stream As New MemoryStream()
Dim document As New Document(PageSize.A4)
Dim writer As PdfWriter = PdfWriter.GetInstance(document, stream)
document.Open()
Using srHtml As New StringReader(invoiceHtml)
XMLWorkerHelper.GetInstance().ParseXHtml(writer, document, srHtml)
End Using
document.Close()
' Return the PDF file
Return New FileContentResult(stream.ToArray(), "application/pdf") With {
.FileDownloadName = "invoice.pdf"
}
End Using
End Function
End Class
이 예제는 HTML 콘텐츠로부터 기본 PDF 문서를 생성합니다. XMLWorkerHelper 클래스는 HTML 문자열을 처리하고 객체 모델을 사용하여 PDF 문서에 요소를 추가합니다. PdfWriter는 실제 PDF 생성 프로세스를 처리하고, Document는 페이지 구조를 관리합니다.
출력

iTextSharp의 주요 제한 사항은 무엇인가요?
XMLWorkerHelper 클래스는 기본 HTML 태그와 인라인 CSS를 지원합니다. 최신 CSS3 속성, 플렉스박스 레이아웃 및 그리드 시스템은 렌더링되지 않습니다. JavaScript 기반 콘텐츠는 완전히 사라집니다. 그래디언트, 그림자, 변환과 같은 복잡한 스타일은 무시됩니다. 표준 Bootstrap 클래스조차 적용되지 않아, 신중하게 디자인된 뷰가 평범하고 비전문적으로 보입니다.
많은 개발자들이 Stack Overflow에서 이러한 제한 사항을 보고, iTextSharp로 MVC 뷰를 PDF로 변환하는 데 실망했습니다.
아마도 더 걱정스러운 것은 iTextSharp의 라이센스 모델입니다. 라이브러리는 AGPL 라이센스를 사용하며, 무료 버전을 사용하려면 전체 애플리케이션을 오픈 소스로 제공해야 합니다. 상업용 라이센스는 연간 수천 달러부터 시작하여 많은 기업에 비싸게 느껴질 수 있습니다. 이 라이선스 제한 사항은 많은 개발자들이 상업적 개발 요구에 더 잘 맞는 대안을 찾게 했습니다. Microsoft의 .NET 문서에서 논의된 바와 같이, 상업 프로젝트에서 적절한 라이센스를 가진 라이브러리를 선택하는 것은 매우 중요합니다.

현대적인 라이브러리로 MVC 뷰를 PDF로 변환하는 방법은?
IronPDF는 ASP.NET Core MVC에서 PDF 생성에 대한 현대적인 접근 방식을 제공합니다. Chromium 렌더링 엔진을 기반으로 하여, Google Chrome에서 보이는 그대로 HTML을 PDF로 변환하며, 모든 스타일링, JavaScript 실행, 반응형 디자인 요소를 보존합니다.
IronPDF 설치는 어떻게 하나요?
NuGet 패키지 관리자 콘솔을 통해 IronPDF를 프로젝트에 추가하십시오:
Install-Package IronPdf
Install-Package IronPdf

IronPDF를 이용한 현대적 구현
위에서 생성된 동일한 송장은 이제 IronPDF의 ChromePdfRenderer를 사용하여 최신 CSS와 전체 HTML5 렌더링을 이용합니다:
using IronPdf;
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GenerateModernPDF()
{
// Create a styled invoice HTML with modern CSS
string invoiceHtml = @"
<style>
body { font-family: 'Segoe UI', Arial; padding: 40px; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th {
background-color: #f3f4f6;
padding: 12px;
text-align: left;
}
td {
padding: 12px;
border-bottom: 1px solid #e5e7eb;
}
.total {
font-size: 24px;
color: #10b981;
text-align: right;
margin-top: 20px;
}
</style>
<div class='invoice-header'>
<h1>Invoice #1001</h1>
<p>Date: " + DateTime.아니요w.ToString("MMMM dd, yyyy") + @"</p>
</div>
<table>
<tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Premium Package</td><td>1</td><td>$99.99</td></tr>
<tr><td>Professional Services</td><td>2</td><td>$149.99</td></tr>
</table>
<div class='total'>Total: $249.98</div>
<p>Page numbers and additional content can be added to each page.</p>";
// Use Chromium engine for rendering
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(invoiceHtml);
// Set content disposition for download
Response.Headers.Append("Content-Disposition", "attachment; filename=modern-invoice.pdf");
// Return the PDF file with binary data
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
using IronPdf;
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult GenerateModernPDF()
{
// Create a styled invoice HTML with modern CSS
string invoiceHtml = @"
<style>
body { font-family: 'Segoe UI', Arial; padding: 40px; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th {
background-color: #f3f4f6;
padding: 12px;
text-align: left;
}
td {
padding: 12px;
border-bottom: 1px solid #e5e7eb;
}
.total {
font-size: 24px;
color: #10b981;
text-align: right;
margin-top: 20px;
}
</style>
<div class='invoice-header'>
<h1>Invoice #1001</h1>
<p>Date: " + DateTime.아니요w.ToString("MMMM dd, yyyy") + @"</p>
</div>
<table>
<tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Premium Package</td><td>1</td><td>$99.99</td></tr>
<tr><td>Professional Services</td><td>2</td><td>$149.99</td></tr>
</table>
<div class='total'>Total: $249.98</div>
<p>Page numbers and additional content can be added to each page.</p>";
// Use Chromium engine for rendering
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(invoiceHtml);
// Set content disposition for download
Response.Headers.Append("Content-Disposition", "attachment; filename=modern-invoice.pdf");
// Return the PDF file with binary data
return new FileContentResult(pdf.BinaryData, "application/pdf");
}
}
Imports IronPdf
Public Class HomeController
Inherits Controller
Public Function Index() As ActionResult
Return View()
End Function
Public Function GenerateModernPDF() As ActionResult
' Create a styled invoice HTML with modern CSS
Dim invoiceHtml As String = "
<style>
body { font-family: 'Segoe UI', Arial; padding: 40px; }
.invoice-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 30px;
border-radius: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin: 20px 0;
}
th {
background-color: #f3f4f6;
padding: 12px;
text-align: left;
}
td {
padding: 12px;
border-bottom: 1px solid #e5e7eb;
}
.total {
font-size: 24px;
color: #10b981;
text-align: right;
margin-top: 20px;
}
</style>
<div class='invoice-header'>
<h1>Invoice #1001</h1>
<p>Date: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
</div>
<table>
<tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
<tr><td>Premium Package</td><td>1</td><td>$99.99</td></tr>
<tr><td>Professional Services</td><td>2</td><td>$149.99</td></tr>
</table>
<div class='total'>Total: $249.98</div>
<p>Page numbers and additional content can be added to each page.</p>"
' Use Chromium engine for rendering
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(invoiceHtml)
' Set content disposition for download
Response.Headers.Append("Content-Disposition", "attachment; filename=modern-invoice.pdf")
' Return the PDF file with binary data
Return New FileContentResult(pdf.BinaryData, "application/pdf")
End Function
End Class
ChromePdfRenderer는 Chrome이 표시하는 것처럼 HTML을 정확하게 변환합니다. 그래디언트 배경, 최신 글꼴, 정교한 스타일링은 모두 정확하게 렌더링됩니다. 렌더러는 iTextSharp가 처리할 수 없는 복잡한 CSS 속성을 처리하며, 플렉스박스, 그리드 레이아웃 및 CSS 변환을 정적 프레임으로 렌더링합니다. RenderHtmlAsPdf 메소드는 MVC에서 HTML을 PDF로 변환하는 작업을 간단하게 만듭니다.
출력

무료 체험판을 시작하십시오 그리고 Chrome 기반 렌더링 엔진으로 현대적인 PDF 생성을 경험하십시오.

이 두 PDF 라이브러리 중에서 어떻게 선택해야 할까요?
iTextSharp와 IronPDF for .NET MVC View 변환을 비교할 때, 렌더링 품질, 개발자 경험 및 라이선싱 측면에서 여러 요소가 이들을 명확하게 구분합니다.
기능 비교
| 특징 | iTextSharp | IronPDF |
|---|---|---|
| HTML5 지원 | 제한된 | 전체 |
| CSS3 렌더링 | 기본만 | 완전함 |
| JavaScript 실행 | 아니요 | 예 |
| 플렉스박스/그리드 지원 | 아니요 | 예 |
| Bootstrap 호환성 | 부분적 | 전체 |
| 웹 글꼴 지원 | 제한된 | 완전함 |
| SVG 그래픽 | 아니요 | 예 |
| 반응형 디자인 | 아니요 | 예 |
| API 복잡성 | 저수준 | 고급 |
라이선싱 고려 사항
이들 라이브러리 간의 라이선스 차이는 상업용 개발에 크게 영향을 미칩니다. iTextSharp의 AGPL 라이센스는 많은 기업이 수용할 수 없는 법적 의무를 부과합니다. 무료 버전을 사용하면 자체 비즈니스 로직을 포함하여 애플리케이션 전체를 오픈 소싱해야 합니다. 이 제한은 비용이 비싼 상업용 라이센스를 구매하지 않는 한 iTextSharp를 대부분의 상업 프로젝트에 적합하지 않게 만듭니다.
IronPDF는 단일 개발자에게 $799부터 시작하는 간단한 상업용 라이선싱을 제공합니다. 라이센스는 1년 간의 업데이트 및 지원을 포함하며, 애플리케이션을 오픈 소싱해야 할 의무는 없습니다. 이 투명한 요금 모델은 일반적인 소프트웨어 개발 예산과 일치하며, C#에서 MVC 뷰를 PDF로 변환할 때 모든 규모의 기업이 전문 PDF 생성을 액세스할 수 있도록 합니다.

출력 품질 분석
출력을 비교할 때 렌더링 품질 차이는 즉시 명확해집니다. iTextSharp는 2000년대 초반의 문서를 닮은 기본 PDF를 생성합니다. 테이블에는 적절한 스타일이 부족하고, 글꼴은 시스템 표준으로 기본 설정되며, 현대적인 디자인 요소들은 완전히 사라집니다. 결과적인 PDF는 비전문적으로 보이며 응용 프로그램의 브랜딩과 일치하지 않습니다.
IronPDF는 웹 디자인과 일치하는 픽셀 완벽한 PDF를 생성합니다. 그라디언트는 정확하게 렌더링되고, 사용자 정의 글꼴은 올바르게 표시되며, 복잡한 레이아웃은 구조를 유지합니다. Chromium 엔진은 모든 생성된 문서에서 브랜딩 정체성과 전문성을 유지하여 웹 보기와 동일한 모습의 PDF를 보장합니다.
PDF 렌더러의 고급 기능은 무엇입니까?
기본적인 HTML 변환을 넘어, IronPDF는 전문가적인 PDF 생성 속도를 높이는 Enterprise급 기능을 제공합니다. 완전한 API 문서은 MVC 뷰를 PDF로 변환하기 위한 라이브러리의 광범위한 기능을 보여줍니다.
머리말과 바닥글
동적인 콘텐츠가 포함된 전문 헤더와 푸터를 추가합니다:
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
HtmlHeader = new HtmlHeaderFooter
{
MaxHeight = 25,
HtmlFragment = "<div style='text-align: center'>Company Name</div>"
},
HtmlFooter = new HtmlHeaderFooter
{
MaxHeight = 20,
HtmlFragment = "<center>Page {page} of {total-pages}</center>"
}
}
};
var renderer = new ChromePdfRenderer
{
RenderingOptions = new ChromePdfRenderOptions
{
HtmlHeader = new HtmlHeaderFooter
{
MaxHeight = 25,
HtmlFragment = "<div style='text-align: center'>Company Name</div>"
},
HtmlFooter = new HtmlHeaderFooter
{
MaxHeight = 20,
HtmlFragment = "<center>Page {page} of {total-pages}</center>"
}
}
};
Dim renderer = New ChromePdfRenderer With {
.RenderingOptions = New ChromePdfRenderOptions With {
.HtmlHeader = New HtmlHeaderFooter With {
.MaxHeight = 25,
.HtmlFragment = "<div style='text-align: center'>Company Name</div>"
},
.HtmlFooter = New HtmlHeaderFooter With {
.MaxHeight = 20,
.HtmlFragment = "<center>Page {page} of {total-pages}</center>"
}
}
}
이 구성은 모든 페이지에 일관된 브랜딩을 추가합니다. 자리 표시자 {page}와 {total-pages}은 정확한 값을 가지도록 자동으로 채워져 문서 전반에 걸쳐 정확한 페이지 매김을 보장합니다. 더 많은 구성 옵션은 헤더 및 푸터 가이드를 참조하십시오.
보안 및 암호화
IronPDF의 보안 기능을 사용하여 비밀번호 및 권한으로 민감한 문서를 보호합니다:
var pdf = renderer.RenderHtmlAsPdf(html);
// Add password protection
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.전체PrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
var pdf = renderer.RenderHtmlAsPdf(html);
// Add password protection
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
// Set permissions
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.전체PrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Add password protection
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
' Set permissions
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.AllPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
이러한 보안 설정은 무단 액세스를 방지하고 MVC 뷰를 PDF로 변환할 때 수신자가 PDF와 상호작용할 수 있는 방식을 제어합니다. 전체 소유자 통제를 유지하면서 인쇄, 복사 및 편집을 제한할 수 있습니다. 자세한 내용은 PDF 보안 문서를 참조하십시오.
출력

양식 필드 처리
IronPDF는 별도의 도구 없이 HTML 양식을 대화형 PDF 양식으로 변환합니다:
string formHtml = @"
<form>
<label>Name:</label>
<input type='checkbox'> Accept Terms
<select name='country'>
<option>USA</option>
<option>Canada</option>
</select>
</form>";
var pdf = renderer.RenderHtmlAsPdf(formHtml);
string formHtml = @"
<form>
<label>Name:</label>
<input type='checkbox'> Accept Terms
<select name='country'>
<option>USA</option>
<option>Canada</option>
</select>
</form>";
var pdf = renderer.RenderHtmlAsPdf(formHtml);
Imports System
Dim formHtml As String = "
<form>
<label>Name:</label>
<input type='checkbox'> Accept Terms
<select name='country'>
<option>USA</option>
<option>Canada</option>
</select>
</form>"
Dim pdf = renderer.RenderHtmlAsPdf(formHtml)
결과적인 PDF는 양식의 상호작용성을 유지하여 사용자가 PDF 리더에서 직접 필드를 채울 수 있게 합니다. 이 기능은 별도의 양식 생성 도구가 필요 없게 하여 문서 작업 흐름을 단순화합니다. 양식 문서를 탐색하여 추가 옵션을 확인하세요.
출력

일반적인 PDF 생성 문제를 어떻게 해결합니까?
현대적인 라이브러리를 사용하더라도 최적의 PDF 출력을 보장하기 위해 특정 솔루션이 필요한 특정 문제가 있습니다. 다음 패턴은 MVC 뷰를 PDF로 변환할 때 개발자가 직면하는 가장 빈번한 문제를 해결합니다.
CSS 렌더링 최적화
HTML 파일을 PDF 형식으로 변환할 때 복잡한 CSS와의 최상의 결과를 위해 인쇄 미디어 쿼리를 사용합니다:
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
이 설정은 화면 표시가 아닌 PDF 출력을 위해 레이아웃을 최적화하는 인쇄 전용 CSS 규칙을 적용합니다. 이것을 인쇄 최적화 스타일시트와 결합하면 페이지 나누기, 여백, 타이포그래피에 대한 정확한 제어를 할 수 있습니다. CSS 미디어 타입 가이드는 추가 렌더링 옵션을 설명합니다.
JavaScript 실행 타이밍
동적 콘텐츠를 변환할 때 PDF를 캡처하기 전에 JavaScript 실행이 완료되도록 시간을 허용합니다. 이렇게 하면 모든 AJAX 호출과 DOM 조작이 완료됩니다:
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay = 500; // milliseconds
이 구성은 PDF 생성이 시작되기 전에 AJAX 호출이 완료되고 DOM 조작이 끝나 MVC 보기의 완전히 렌더링된 상태를 캡처합니다. 차트 라이브러리 및 기타 비동기 콘텐츠의 경우 지연 값을 증가시킬 필요가 있을 수 있습니다.
출력

글꼴 임베딩 및 문서 형식화
사용자 정의 글꼴이 올바르게 렌더링되도록 base64로 인코딩된 데이터 URI를 사용하여 HTML에 직접 임베딩합니다:
@font-face {
font-family: 'CustomFont';
src: url(data:font/woff2;base64,[base64-encoded-font]) format('woff2');
}
HTML에 글꼴을 직접 임베딩하면 모든 환경에서 일관된 렌더링을 보장하여 생성된 PDF 문서에서 누락된 글꼴 문제를 제거합니다. 이 접근 방식은 RenderUrlAsPdf을 통한 URL 기반 렌더 또는 RenderHtmlAsPdf을 통한 문자열 기반 렌더를 사용하든 똑같이 잘 작동합니다.
페이지 크기, 방향 및 여백 제어를 포함한 추가 구성 패턴은 IronPDF 렌더링 옵션 문서를 참조하십시오. GitHub의 샘플 프로젝트를 검토하여 일반적인 MVC 통합 패턴을 보여줍니다.
다음 단계는 무엇입니까?
iTextSharp는 몇 년 동안 .NET 커뮤니티에 잘 기여했지만 현대 웹 개발은 더 강력한 PDF 생성을 요구합니다. IronPDF의 Chrome 기반 렌더링 엔진은 오늘날의 ASP.NET MVC 응용 프로그램이 요구하는 픽셀 완벽한 정확성과 전체 CSS3 지원을 제공합니다. 그 고급 API, 철저한 문서 및 비즈니스 친화적인 라이선스는 ASP.NET Core MVC 프로젝트에 실용적인 선택이 되게 합니다.
응용 프로그램에서 PDF 생성을 더욱 진행하려면:
- 무료 체험판을 다운로드 받아 이 가이드의 코드 예제를 본인의 프로젝트에서 실행하십시오
- IronPDF 풀 기능 세트를 탐색하려면 IronPDF API 참조를 읽어보십시오
- 워터마크, 디지털 서명 및 PDF 병합을 위한 사용 방법 가이드를 확인하십시오
- 팀에게 적합한 플랜을 찾으려면 라이선스 옵션을 검토하십시오
- IronPDF 블로그에서 .NET에서 PDF 조작을 위한 더 많은 튜토리얼을 탐색하세요.
자주 묻는 질문
MVC 뷰를 PDF로 변환하는 목적은 무엇입니까?
MVC 뷰를 PDF로 변환하면 개발자가 원본 뷰의 레이아웃과 디자인을 보존하면서 웹 응용 프로그램에서 직접 인쇄 가능하고 쉽게 공유할 수 있는 문서를 생성할 수 있습니다.
IronPDF란 무엇인가요?
IronPDF는 .NET 응용 프로그램 내에서 PDF 문서의 생성, 편집 및 변환을 용이하게 하는 .NET 라이브러리로, PDF 기능을 쉽게 통합할 수 있는 방법을 제공합니다.
IronPDF는 MVC 뷰를 PDF로 변환하는 과정을 어떻게 단순화합니까?
IronPDF는 개발자가 광범위한 코딩 요구 사항 없이 HTML 및 MVC 뷰를 직접 PDF 형식으로 렌더링할 수 있도록 하여 원래의 레이아웃과 디자인을 보존하기 때문에 과정을 단순화합니다.
MVC PDF 변환에 있어서 iTextSharp의 제한사항은 무엇입니까?
iTextSharp의 XMLWorkerHelper는 최신 CSS3, 플렉스박스, 그리드 레이아웃, JavaScript 실행 또는 부트스트랩 스타일을 지원하지 않습니다. 또한 AGPL 라이선스는 무료 버전을 사용하는 경우 응용 프로그램을 오픈 소스화해야 합니다.
IronPDF가 PDF를 생성하기 전에 JavaScript를 렌더링할 수 있습니까?
네, IronPDF는 렌더링 중 JavaScript 실행을 지원합니다. EnableJavaScript를 사용하여 이를 활성화하고 WaitFor.RenderDelay를 사용하여 렌더링 지연을 제어하여 동적 콘텐츠가 완전히 로드되도록 할 수 있습니다.
IronPDF를 사용하는 시스템 요구 사항은 무엇인가요?
IronPDF는 .NET 6, .NET 7, .NET 8, .NET Core 및 .NET Framework 4.6.2+를 지원합니다. Windows, Linux, 그리고 macOS에서 실행됩니다.
MVC 뷰를 변환할 때 PDF 출력을 사용자 지정할 수 있습니까?
네, IronPDF를 사용하면 개발자가 페이지 크기, 방향, 여백, 헤더, 푸터, 보안 설정 및 CSS 미디어 타입과 같은 설정을 조정하여 PDF 출력을 사용자 지정할 수 있습니다.
IronPDF는 PDF 변환을 위한 CSS 스타일링을 지원합니까?
IronPDF는 Chromium 렌더링 엔진을 통해 전체 CSS3 스타일링을 지원하여 변환된 PDF가 원본 HTML 또는 MVC 뷰의 시각적 외관을 유지하도록 보장합니다. 여기에는 글꼴, 색상, 그라데이션 및 레이아웃이 포함됩니다.
IronPDF의 성능은 iTextSharp와 어떻게 비교됩니까?
IronPDF는 렌더링에 Chromium 엔진을 사용하여 시작 오버헤드를 추가하지만 훨씬 더 우수한 렌더링 정확도를 제공합니다. 대량 시나리오를 위해 IronPDF는 비동기 렌더링을 지원하고 스레드 안전한 렌더러 인스턴스로 최적화할 수 있습니다.
IronPDF의 문서는 어디서 찾을 수 있습니까?
IronPDF의 전체 문서는 https://ironpdf.com/how-to/에 있으며, 개발자가 구현을 지원할 수 있는 가이드, 튜토리얼 및 API 레퍼런스를 포함하고 있습니다.


