ASP.NET Core MVC에서 PDF 뷰어 빌드 | 튜토리얼
IronPDF의 Chrome 기반 렌더링 엔진을 사용하여 ASP.NET Core MVC PDF 뷰어를 만들어 브라우저 내에서 PDF 파일을 인라인으로 표시하고, HTML 콘텐츠에서 동적 PDF를 생성하며, 사용자들이 문서를 보기 또는 다운로드할 수 있는지 여부를 제어합니다 - 외부 플러그인 또는 의존성 없이.
현대 브라우저에는 웹 애플리케이션이 올바른 MIME 유형으로 PDF 파일을 제공할 때 자동으로 활성화되는 내장 PDF 뷰어가 포함되어 있습니다. 이는 타사 도구나 플러그인이 필요 없이 사용자가 브라우저 내에서 직접 PDF 문서를 표시할 수 있도록 합니다. IronPDF는 Chrome 기반 렌더링 엔진을 가진 .NET PDF 라이브러리로, ASP.NET Core MVC 애플리케이션 내에서 PDF 파일을 생성, 렌더링 및 표시하기 쉽게 만듭니다.
ASP.NET Core MVC 프로젝트에 IronPDF를 어떻게 설치하나요?
ASP.NET Core MVC에서 PDF 뷰어를 빌드하기 전에 프로젝트에 IronPDF를 추가해야 합니다. 가장 빠른 방법은 Visual Studio의 NuGet 패키지 관리자를 통해, 또는 .NET CLI 또는 패키지 매니저 콘솔을 사용하여 명령줄을 통해 이루어집니다.
Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
패키지를 설치한 후, IronPdf 네임스페이스를 컨트롤러 파일에 추가하면 PDF 문서를 생성하고 제공할 준비가 됩니다. IronPDF는 .NET 8 및 .NET 10을 대상으로 하기 때문에 추가 구성 없이 최신 ASP.NET Core 릴리스와 함께 작동합니다.
오프라인 설치 또는 특정 버전 고정이 필요한 프로젝트의 경우, NuGet 패키지를 직접 다운로드하고 로컬 피드로 추가할 수 있습니다. IronPDF 라이선싱 페이지에는 실사용 및 상용 라이선스 옵션이 설명되어 있으니, 실사용 전에 필요한 경우 참조하십시오.
현대 브라우저는 PDF 파일을 어떻게 표시하나요?
Chrome, Firefox, Edge, Safari와 같은 현대 브라우저에는 기본 PDF 뷰어 기능이 포함되어 있습니다. ASP.NET Core 애플리케이션이 application/pdf 컨텐츠 유형의 파일을 반환할 때, 브라우저는 Adobe Acrobat이나 외부 플러그인 필요 없이 PDF 문서를 인라인으로 렌더링합니다. 이 내장 PDF 뷰어는 텍스트 선택, 인쇄, 확대/축소 컨트롤, 북마크 및 페이지 탐색을 지원하여 사용자가 이해할 수 있는 문서 뷰잉 경험을 제공합니다.
기존 파일을 안전하게 제공하려면 개발과 프로덕션 간에 변경될 수 있는 디렉토리 경로에 의존하기보다는 호스팅 환경을 사용하여 파일을 찾는 것이 최선의 방법입니다. 파일 스트림을 사용하는 것도 대용량 문서에 전체 바이트 배열을 로드하는 것보다 메모리 효율적입니다.
using Microsoft.AspNetCore.Mvc;
public class DocumentController : Controller
{
public IActionResult ViewPdf()
{
// Path to an existing PDF file in the wwwroot folder
string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "documents", "sample.pdf");
byte[] fileBytes = System.IO.File.ReadAllBytes(path);
// Return file for inline browser display
return File(fileBytes, "application/pdf");
}
}
using Microsoft.AspNetCore.Mvc;
public class DocumentController : Controller
{
public IActionResult ViewPdf()
{
// Path to an existing PDF file in the wwwroot folder
string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "documents", "sample.pdf");
byte[] fileBytes = System.IO.File.ReadAllBytes(path);
// Return file for inline browser display
return File(fileBytes, "application/pdf");
}
}
Imports Microsoft.AspNetCore.Mvc
Public Class DocumentController
Inherits Controller
Public Function ViewPdf() As IActionResult
' Path to an existing PDF file in the wwwroot folder
Dim path As String = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "documents", "sample.pdf")
Dim fileBytes As Byte() = System.IO.File.ReadAllBytes(path)
' Return file for inline browser display
Return File(fileBytes, "application/pdf")
End Function
End Class
브라우저에 표시된 PDF는 어떻게 보이나요?

위의 코드는 서버에서 기존 PDF 파일을 읽고 이를 브라우저로 반환합니다. File() 메소드는 바이트 배열과 내용 유형을 받아들여 브라우저의 문서 뷰어에서 인라인으로 내용을 렌더링하도록 지시합니다. 이 접근 방식은 모든 현대 브라우저에서 데스크톱과 모바일 기기 둘 다 동작하며 모든 사용자에게 일관된 경험을 제공합니다.
더 고급 시나리오를 위해서는 메모리에서 PDF 로드 하거나 Azure Blob Storage를 사용하여 확장성을 개선하고 서버 스토리지 요구 사항을 줄일 수 있습니다. ASP.NET Core의 정적 파일 제공에 관한 마이크로소프트 문서는 프로덕션에서 파일 처리를 위한 모범 사례를 다룹니다.
ASP.NET Core에서 동적으로 PDF 문서를 생성하는 방법은 무엇인가요?
정적인 PDF 파일은 유용하지만, 많은 웹 애플리케이션은 현재 사용자나 요청에 맞춰 동적으로 생성된 문서를 필요로 합니다. IronPDF의 ChromePdfRenderer 클래스는 실제 Chromium 브라우저 엔진을 사용하여 HTML 컨텐츠를 전문적으로 렌더링된 PDF 파일로 변환합니다.
특정 테마용 CSS 또는 차트용 JavaScript와 같은 외부 자산을 HTML 문자열 내에 직접 포함할 수 있습니다. 렌더링 엔진은 CSS3, JavaScript ES6+, 웹 폰트와 같은 현대 웹 표준을 지원하므로 생성된 PDF는 브라우저가 같은 HTML 페이지를 렌더링하는 그대로 보입니다.
using IronPdf;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
public IActionResult GenerateReport()
{
var renderer = new ChromePdfRenderer();
// HTML content with CSS styling
string html = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; padding: 40px; }
h1 { color: #2c3e50; }
.report-body { line-height: 1.6; }
</style>
</head>
<body>
<h1>Monthly Sales Report</h1>
<div class='report-body'>
<p>Generated: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
<p>This report contains the latest sales figures.</p>
</div>
</body>
</html>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
return File(pdf.BinaryData, "application/pdf");
}
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
public class ReportController : Controller
{
public IActionResult GenerateReport()
{
var renderer = new ChromePdfRenderer();
// HTML content with CSS styling
string html = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; padding: 40px; }
h1 { color: #2c3e50; }
.report-body { line-height: 1.6; }
</style>
</head>
<body>
<h1>Monthly Sales Report</h1>
<div class='report-body'>
<p>Generated: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
<p>This report contains the latest sales figures.</p>
</div>
</body>
</html>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
return File(pdf.BinaryData, "application/pdf");
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Public Class ReportController
Inherits Controller
Public Function GenerateReport() As IActionResult
Dim renderer As New ChromePdfRenderer()
' HTML content with CSS styling
Dim html As String = "
<html>
<head>
<style>
body { font-family: Arial, sans-serif; padding: 40px; }
h1 { color: #2c3e50; }
.report-body { line-height: 1.6; }
</style>
</head>
<body>
<h1>Monthly Sales Report</h1>
<div class='report-body'>
<p>Generated: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
<p>This report contains the latest sales figures.</p>
</div>
</body>
</html>"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
Return File(pdf.BinaryData, "application/pdf")
End Function
End Class
PDF 생성 후 HTML 콘텐츠는 어떻게 보이나요?

이 예제는 IronPDF가 HTML 문자열을 PDF 문서로 변환하는 방법을 시연합니다. ChromePdfRenderer는 Chromium 기반 엔진을 사용하여 정확한 CSS 렌더링 및 JavaScript 지원을 보장합니다. 생성된 PDF는 HTML에 정의된 모든 스타일을 유지하여 일관된 포맷이 필요한 보고서, 청구서 및 기타 문서를 만드는 데 이상적입니다.
HTML에서 PDF로 변환의 추가 코드 예제는 IronPDF의 문서를 탐색하십시오. CSHTML Razor 뷰, URLs, 또는 심지어 마크다운 콘텐츠로부터도 PDF를 생성할 수 있습니다.
인라인 표시 대 파일 다운로드를 어떻게 제어하나요?
때때로 사용자는 브라우저에서 보기보다는 PDF 파일을 다운로드해야 할 필요가 있습니다. 브라우저가 응답을 처리하는 방식은 Content-Disposition 헤더에 따라 다릅니다. 이 구분을 이해하는 것은 애플리케이션에서 올바른 경험을 제공하는 데 중요합니다.
File() 메소드에서 파일 이름 매개변수를 생략하면 ASP.NET Core는 Content-Disposition 헤더를 설정하지 않으므로 브라우저는 기본 동작을 사용합니다 -- 보통 인라인 표시입니다. 세 번째 매개변수로 파일 이름을 제공하면 ASP.NET Core는 자동으로 Content-Disposition: attachment을 추가하여 사용자가 파일을 저장하도록 유도합니다.
using IronPdf;
using Microsoft.AspNetCore.Mvc;
public class PdfController : Controller
{
public IActionResult DisplayInline()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
// Display PDF inline in browser -- no filename = inline
return File(pdf.BinaryData, "application/pdf");
}
public IActionResult DownloadPdf()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.EnableJavaScript = true;
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
// Prompt download with specified filename
return File(pdf.BinaryData, "application/pdf", "webpage-report.pdf");
}
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
public class PdfController : Controller
{
public IActionResult DisplayInline()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
// Display PDF inline in browser -- no filename = inline
return File(pdf.BinaryData, "application/pdf");
}
public IActionResult DownloadPdf()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
renderer.RenderingOptions.EnableJavaScript = true;
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
// Prompt download with specified filename
return File(pdf.BinaryData, "application/pdf", "webpage-report.pdf");
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Public Class PdfController
Inherits Controller
Public Function DisplayInline() As IActionResult
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
' Display PDF inline in browser -- no filename = inline
Return File(pdf.BinaryData, "application/pdf")
End Function
Public Function DownloadPdf() As IActionResult
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
renderer.RenderingOptions.EnableJavaScript = True
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
' Prompt download with specified filename
Return File(pdf.BinaryData, "application/pdf", "webpage-report.pdf")
End Function
End Class
인라인 표시 대신 다운로드를 언제 사용해야 합니까?

두 컨트롤러 액션의 차이는 File()의 세 번째 매개변수에 있습니다. 이 유연성 덕분에 사용자의 요구 또는 비즈니스 요구사항에 따라 애플리케이션이 두 시나리오를 모두 지원할 수 있습니다. 더 나은 제어를 위해 렌더링 전에 사용자 정의 HTTP 헤더나 종이 크기 및 방향 설정을 구성할 수 있습니다.
일부 애플리케이션은 두 접근 방식을 결합하여 PDF를 인라인으로 표시하는 미리 보기 엔드포인트와 파일 저장을 실행하는 별개의 다운로드 엔드포인트를 제공합니다. 이 패턴은 사용자가 문서를 다운로드하기 전에 문서의 내용을 확인할 수 있게 해줍니다.
Razor Pages와 PDF 생성을 어떻게 통합합니까?
ASP.NET Core MVC의 Razor Pages는 .NET PDF 뷰어를 구현하는 또 다른 방법을 제공합니다. 페이지 모델은 표준 MVC 컨트롤러에서 사용할 수 있는 동일한 IronPDF 기능을 사용하여 PDF 파일을 생성하고 반환할 수 있습니다. 이 패턴은 이미 Razor Pages를 사용하고 있는 애플리케이션에 잘 맞습니다. 이는 PDF 생성 로직을 트리거 하는 페이지와 같은 위치에 유지하기 때문입니다.
Razor 페이지의 OnGet 핸들러는 컨트롤러 액션처럼 작동합니다 -- 요청을 받고, 작업을 수행하고, 결과를 반환합니다. 페이지 모델에서 FileResult을 반환하는 것은 ASP.NET Core에서 지원되며 컨트롤러에서 File()을 반환하는 것과 동일한 방식으로 작동합니다.
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class InvoiceModel : PageModel
{
public IActionResult OnGet(int id)
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// Add header and footer
renderer.RenderingOptions.TextHeader.CenterText = "Invoice Document";
renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}";
renderer.RenderingOptions.TextFooter.FontSize = 10;
string html = $@"
<html>
<head>
<style>
body {{ font-family: 'Segoe UI', Arial, sans-serif; padding: 40px; }}
h1 {{ color: #1a5490; border-bottom: 2px solid #1a5490; padding-bottom: 10px; }}
.invoice-details {{ margin: 20px 0; }}
table {{ width: 100%; border-collapse: collapse; }}
th, td {{ padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }}
</style>
</head>
<body>
<h1>Invoice #{id}</h1>
<div class='invoice-details'>
<p><strong>Date:</strong> {DateTime.Now:yyyy-MM-dd}</p>
<p><strong>Due Date:</strong> {DateTime.Now.AddDays(30):yyyy-MM-dd}</p>
</div>
<table>
<tr><th>Description</th><th>Amount</th></tr>
<tr><td>Professional Services</td><td>$1,500.00</td></tr>
</table>
<p style='margin-top: 40px;'>Thank you for your business!</p>
</body>
</html>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
return File(pdf.BinaryData, "application/pdf");
}
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
public class InvoiceModel : PageModel
{
public IActionResult OnGet(int id)
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// Add header and footer
renderer.RenderingOptions.TextHeader.CenterText = "Invoice Document";
renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}";
renderer.RenderingOptions.TextFooter.FontSize = 10;
string html = $@"
<html>
<head>
<style>
body {{ font-family: 'Segoe UI', Arial, sans-serif; padding: 40px; }}
h1 {{ color: #1a5490; border-bottom: 2px solid #1a5490; padding-bottom: 10px; }}
.invoice-details {{ margin: 20px 0; }}
table {{ width: 100%; border-collapse: collapse; }}
th, td {{ padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }}
</style>
</head>
<body>
<h1>Invoice #{id}</h1>
<div class='invoice-details'>
<p><strong>Date:</strong> {DateTime.Now:yyyy-MM-dd}</p>
<p><strong>Due Date:</strong> {DateTime.Now.AddDays(30):yyyy-MM-dd}</p>
</div>
<table>
<tr><th>Description</th><th>Amount</th></tr>
<tr><td>Professional Services</td><td>$1,500.00</td></tr>
</table>
<p style='margin-top: 40px;'>Thank you for your business!</p>
</body>
</html>";
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
return File(pdf.BinaryData, "application/pdf");
}
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Public Class InvoiceModel
Inherits PageModel
Public Function OnGet(id As Integer) As IActionResult
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
' Add header and footer
renderer.RenderingOptions.TextHeader.CenterText = "Invoice Document"
renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}"
renderer.RenderingOptions.TextFooter.FontSize = 10
Dim html As String = $"
<html>
<head>
<style>
body {{ font-family: 'Segoe UI', Arial, sans-serif; padding: 40px; }}
h1 {{ color: #1a5490; border-bottom: 2px solid #1a5490; padding-bottom: 10px; }}
.invoice-details {{ margin: 20px 0; }}
table {{ width: 100%; border-collapse: collapse; }}
th, td {{ padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }}
</style>
</head>
<body>
<h1>Invoice #{id}</h1>
<div class='invoice-details'>
<p><strong>Date:</strong> {DateTime.Now:yyyy-MM-dd}</p>
<p><strong>Due Date:</strong> {DateTime.Now.AddDays(30):yyyy-MM-dd}</p>
</div>
<table>
<tr><th>Description</th><th>Amount</th></tr>
<tr><td>Professional Services</td><td>$1,500.00</td></tr>
</table>
<p style='margin-top: 40px;'>Thank you for your business!</p>
</body>
</html>"
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
Return File(pdf.BinaryData, "application/pdf")
End Function
End Class
PDF 사용자 정의를 위한 렌더링 옵션은 무엇이 있습니까?

이 Razor Pages 예제는 OnGet 핸들러가 URL 매개변수로부터 PDF를 생성하는 방법을 보여줍니다. RenderingOptions 속성은 여백, 페이지 방향 및 기타 레이아웃 설정에 대한 세밀한 제어를 허용합니다. 헤더와 푸터를 추가하거나, 페이지 번호를 구성하거나, 사용자 정의 종이 크기를 설정할 수 있습니다.
RenderingOptions을 통해 사용 가능한 고급 기능에는 워터마크 추가, PDF 압축, 및 디지털 서명이 포함됩니다. 모든 사용 가능한 옵션의 전체 세부사항은 IronPDF 렌더링 옵션 참조를 참조하십시오.
PDF 보안 및 접근 제어를 어떻게 하시겠습니까?
프로덕션 애플리케이션은 종종 누가 PDF 문서를 볼 수 있거나 수정할 수 있는지를 제한해야 합니다. IronPDF는 문서를 암호화하고, 열기 위해 비밀번호를 요구하고, 인쇄 및 복사 제한을 허용하는 PDF 비밀번호 및 권한에 대한 기본 지원을 제공합니다.
컨트롤러에서 반환하기 전에 모든 PdfDocument 객체에 보안 설정을 적용할 수 있습니다. 이 접근 방식은 PDF가 HTML에서 생성되었든, 디스크에서 로드되었든, 데이터베이스에서 검색되었든 상관없이 작동합니다.
| 보안 기능 | IronPDF 속성 | 사용 사례 |
|---|---|---|
| 소유자 비밀번호 | `OwnerPassword` | 권한 변경 허용 안 함 |
| 사용자 비밀번호 | `UserPassword` | 문서를 열기 위해 비밀번호 요구 |
| 인쇄 비활성화 | `AllowUserPrinting` | 수신자가 파일을 인쇄하지 못하게 합니다 |
| 복사 비활성화 | `AllowUserCopyPasteContent` | PDF에서 텍스트 추출 차단 |
| 디지털 서명 | `PdfSignature` | 문서의 진위 여부 확인 |
계약서, 재무제표, 의료 기록과 같은 민감한 문서의 경우, 권한 제한과 함께 사용자 비밀번호를 결합하여 수신자가 파일로 무엇을 할 수 있는지에 대한 정확한 제어가 가능합니다. PDF/A 준수 모드는 문서의 무결성이 수십 년 동안 유지되어야 하는 장기 보관 시나리오에서 고려할 만한 또 다른 옵션입니다.
PDF 생성 성능을 어떻게 최적화합니까?
PDF 생성에는 CPU 및 메모리 작업이 포함되므로, 고급 트래픽 애플리케이션에서는 성능이 중요합니다. IronPDF의 비동기 렌더링 API를 사용하면 요청 파이프라인을 차단하지 않고 PDF 생성을 백그라운드 스레드로 오프로드할 수 있습니다. 이는 특히 단일 요청에서 여러 PDF를 생성하거나 배치 작업을 처리할 때 유용합니다.
Linux나 Docker 컨테이너에서 프로덕션 배포를 위해 IronPDF는 Windows 특정 종속성 없이 크로스 플랫폼 실행을 지원합니다. IronPDF Linux 설치 가이드와 Docker 구성 참조는 설정 단계를 다룹니다. 양쪽 모두 Mozilla PDF.js 프로젝트와 기본 브라우저 뷰어는 IronPDF가 생성하는 모든 PDF와 호환되므로 디스플레이 측면에서도 유연성이 있습니다.
프로덕션에서 처리량을 개선하는 몇 가지 방법:
- 렌더러 초기화에 일부 오버헤드가 있으므로 요청당 새 객체를 생성하는 대신 가능한 경우
ChromePdfRenderer인스턴스를 재사용하세요. - 비동기 메소드
RenderHtmlAsPdfAsync를 사용하여 Chromium 엔진이 렌더링하는 동안 스레드를 해제하세요. - 동일한 문서가 반복적으로 요청될 때, IMemoryCache 또는 분산 캐시를 사용하여 생성된 PDF를 캐시합니다.
- 매우 큰 문서의 경우, 메모리에 전체 바이트 배열을 버퍼링하기보다는 출력을 스트리밍하는 것을 고려하십시오.
비동기 렌더링은 실제로 어떻게 작동합니까?
비동기 API는 동기 버전을 반영하지만 Task<PdfDocument>을 반환합니다. 렌더링이 진행되는 동안 스레드 풀을 사용 가능한 상태로 유지하여 다른 들어오는 요청을 처리할 수 있도록 async 컨트롤러 액션 내에서 결과를 대기합니다. 높은 로드 시나리오에서 동기 렌더링에서 비동기 렌더링으로 전환하면 일반적으로 스레드 충돌을 줄이고 동시 로드 시 전체 응답 시간을 개선합니다.
다음 단계는 무엇입니까?
ASP.NET Core MVC에서 PDF 뷰어를 빌드하여 IronPDF의 생성 기능과 브라우저 기본 디스플레이 기능을 결합합니다. 최신 브라우저에 내장된 PDF 뷰어는 올바른 MIME 유형으로 ASP.NET 컨트롤러가 파일을 반환할 때 디스플레이, 인쇄 및 탐색을 자동으로 처리합니다. IronPDF는 생성 측면에서 HTML, URL 또는 기존 파일을 CSS, JavaScript, 머리글, 바닥글 및 보안 설정에 대한 전체 지원과 함께 잘 형식화된 PDF 문서로 변환합니다.
이 가이드에서 다루는 주요 기능:
application/pdfMIME 유형과 함께File()메소드를 사용하여 기존 PDF 파일을 인라인으로 제공ChromePdfRenderer을 사용하여 HTML 문자열로부터 동적인 PDF 생성Content-Disposition헤더를 통해 인라인 표시와 파일 다운로드 제어RenderingOptions을 통해 헤더, 푸터, 여백 및 보안 설정 추가- PDF 생성을 위해 MVC 컨트롤러의 대안으로 Razor Pages 사용
- 민감한 문서에 암호 보호 및 권한 제한 적용
- 비동기 렌더링 및 응답 캐싱을 통해 성능 향상
여기서 더 나아가며 여러 PDF 병합, 작성 가능한 양식 생성 또는 CSHTML Razor 보기에서 PDF 생성과 같은 고급 워크플로를 탐색할 수 있습니다. IronPDF 문서는 작동하는 코드 샘플로 모든 기능을 다룹니다.
무료 체험판 시작을 통해 IronPDF의 모든 기능을 탐색하거나 프로덕션 사용을 위해 라이선스를 구매하십시오.
자주 묻는 질문
ASP.NET Core MVC 애플리케이션에서 PDF 파일을 어떻게 표시할 수 있나요?
IronPDF를 사용하여 ASP.NET Core MVC 애플리케이션에서 PDF 파일을 표시할 수 있습니다. 이를 통해 최신 내장 PDF 뷰어를 사용하여 브라우저에서 PDF 파일을 직접 생성하고 렌더링하며 표시할 수 있습니다.
브라우저에서 PDF를 보려면 서드파티 플러그인이 필요하나요?
아니요, 최신 브라우저에는 내장된 PDF 뷰어가 있어 올바른 MIME 타입으로 PDF 파일을 제공하면 자동으로 활성화됩니다. IronPDF는 PDF가 올바르게 제공되도록 도와줍니다.
ASP.NET Core MVC에서 IronPDF를 사용하는 장점은 무엇인가요?
IronPDF는 .NET PDF 라이브러리로, ASP.NET Core MVC 애플리케이션 내에서 PDF 문서를 생성하고 렌더링하는 과정을 단순화하여 생산성을 높이고 PDF 관리를 간소화합니다.
IronPDF가 기존 브라우저 PDF 뷰어와 함께 작동할 수 있나요?
네, IronPDF는 PDF가 브라우저에 자동으로 표시되도록 올바른 MIME 타입으로 제공하여 기존 브라우저 PDF 뷰어와 원활하게 작동합니다.
IronPDF는 자주 업데이트되나요?
네, IronPDF는 자주 업데이트되는 .NET PDF 라이브러리로, ASP.NET Core MVC 애플리케이션에서 PDF 문서를 처리하는 최신 기능과 개선 사항을 제공합니다.
IronPDF는 웹 애플리케이션에서 PDF 생성을 어떻게 처리하나요?
IronPDF는 다양한 콘텐츠 유형에서 PDF를 생성하는 강력한 기능을 제공하며, 개발자가 웹 애플리케이션 내에 동적이고 상호작용 가능한 PDF 문서들을 만들 수 있도록 합니다.
PDF 파일을 제공하기 위해 사용해야 하는 MIME 타입은 무엇인가요?
브라우저에서 올바르게 표시하기 위해 PDF 파일은 'application/pdf' MIME 타입으로 제공되어야 합니다. IronPDF는 이 측면을 효율적으로 관리하는 데 도움을 줄 수 있습니다.
IronPDF에서 PDF 렌더링을 사용자 정의할 수 있나요?
네, IronPDF는 PDF 렌더링을 위한 광범위한 사용자 정의 옵션을 제공하여 특정 디자인과 기능 요구 사항을 충족하도록 출력을 조정할 수 있습니다.
IronPDF는 ASP.NET Core MVC 애플리케이션에서만 지원되나요?
IronPDF는 ASP.NET Core MVC 애플리케이션에 훌륭하지만, 다른 .NET 애플리케이션에서도 PDF 기능을 처리할 수 있는 다재다능한 라이브러리입니다.


