푸터 콘텐츠로 바로가기
IRONPDF 사용하기

IronPDF를 사용하여 HTML을 PDF로 변환하는 방법

IronPDF는 .NET HTML을 PDF로 변환하며 Chrome의 렌더링 엔진을 사용하여 HTML 문자열, 파일, 웹 페이지를 정확한 CSS 렌더링 및 JavaScript 실행 지원과 함께 고품질 PDF 문서로 변환합니다.

HTML을 PDF로 변환하는 것은 .NET 개발에서 지속적인 도전 과제입니다. 최신 CSS 레이아웃을 처리하고 JavaScript를 올바르게 실행하며 품질 있는 문서를 생성할 수 있는 라이브러리가 필요합니다 -- 이것은 통합이 쉬워야 합니다. IronPDF는 Chrome 기반 렌더링으로 이러한 문제를 해결하여 브라우저 품질의 충실도로 HTML 파일, 문자열 및 웹 페이지를 변환할 수 있게 합니다. 이 라이브러리는 .NET 10에서 실행되며 별도의 렌더링 엔진 없이 Windows, Linux, macOS 및 Azure를 대상으로 합니다.

이 문서에서는 기본 변환에서 디지털 서명 및 비밀번호 보호와 같은 고급 기능에 이르기까지 전문적인 PDF 생성을 구현하는 방법을 설명합니다. 설치, 구성, 핵심 변환 방법 및 배포 고려 사항을 다룹니다. 각 섹션은 .NET 10 프로젝트와 호환되는 최상위 문장 사용 C# 코드가 포함되어 있습니다.

IronPDF C# PDF 라이브러리 홈페이지 배너에 HTML을 PDF로 변환, PDF 편집 기능, 유연한 배포 옵션, 무료 체험판 제공 포함 주요 기능을 보여줌

올바른 .NET용 HTML을 PDF로 변환하는 라이브러리를 선택하는 방법은?

PDF 라이브러리를 선택하는 것은 렌더링 품질, 유지보수 비용, 장기 호환성에 영향을 미칩니다. 근본적인 질문은 라이브러리가 최신 웹과 보조를 맞추고 있는가입니다. CSS 그리드, 플렉스박스, JavaScript로 렌더링된 콘텐츠, 웹 폰트는 오늘날 표준입니다 -- 이를 안정적으로 처리할 수 없는 라이브러리는 HTML 템플릿이 발전하면서 개발을 늦추고 취약성을 유발하는 전처리 우회 방법으로 여러분을 몰아넣습니다.

IronPDF는 Google Chrome을 구동하는 동일한 Blink 엔진을 사용합니다. PDF는 Chrome의 인쇄 미리보기와 정확히 동일하게 렌더링됩니다 -- 스타일 누락 없음, 잘못된 그리드 레이아웃 없음, 사용자 정의 폰트 누락 없음. 이 일관성은 일반적으로 다른 PDF 라이브러리와 함께 수반되는 수동 스타일 디버깅을 제거해줍니다. 특정 문서 유형에 대한 렌더링 충실도를 평가하기 위해 Chrome 렌더링 기능을 이전 대안과 비교할 수 있습니다.

현대 웹 애플리케이션은 정교한 CSS와 JavaScript에 의존합니다. IronPDF는 플렉스박스, 그리드 시스템, 변형 및 애니메이션을 포함한 CSS3에 대한 고유 지원을 제공합니다. 엔진은 출력 캡처 전에 JavaScript를 처리하여 동적으로 생성된 콘텐츠가 최종 PDF에 올바르게 나타나도록 보장합니다. 정적 HTML 파일 또는 클라이언트 측 렌더링을 사용하는 페이지를 변환하든, 라이브러리는 최종 계산 상태를 캡처합니다 -- 중간 스냅샷이 아닙니다.

ChromePdfRenderer 클래스는 지능형 기본값을 노출하면서 RenderingOptions 속성을 통해 세밀한 제어를 제공합니다. 통합 경로는 QuestPDFSyncfusion과 같은 대안보다 짧으며 둘 다 첫 번째 출력 문서를 생성하기 위해 더 많은 구성 보일러플레이트가 필요합니다.

장기 유지보수를 고려할 때 Chrome 기반 렌더링은 사용자의 수동 엔진 업데이트 없이 지속적인 브라우저 개선의 이점을 제공합니다. 구형 WebKit 기반 라이브러리는 웹 플랫폼과 함께 성장하지 않는 고정된 기능 세트를 가지고 있어 프런트 엔드 템플릿이 새로운 CSS 속성이나 JavaScript 패턴을 채택할 때 호환성 부채를 생성합니다. HTML 및 CSS에 이미 익숙한 팀에게는 학습해야 할 새로운 언어나 레이아웃 모델이 없습니다 -- 웹 페이지를 디자인하듯 문서를 디자인한 후 이를 PDF로 렌더링하면 됩니다.

주요 PDF 기능 4가지를 보여주는 기능 개요 대시보드: PDF 생성, PDF 변환, PDF 편집, PDF 서명 및 보안 강화를, 각 카테고리 아래 자세한 기능 목록 포함

라이브러리를 설치하고 구성하는 방법

NuGet을 통한 설치

IronPDF 설정에는 몇 분밖에 걸리지 않습니다. .NET CLI 또는 Visual Studio의 패키지 관리자 콘솔 사용:

Install-Package IronPdf
Install-Package IronPdf
SHELL
dotnet add package IronPdf
dotnet add package IronPdf
SHELL

이 명령은 패키지와 그 종속성을 다운로드하고 프로젝트 참조를 자동으로 구성합니다. 패키지에는 플랫폼별 바이너리가 런타임에 해결되어 포함되므로 네이티브 라이브러리를 별도로 관리할 필요가 없습니다. 컨테이너화된 환경의 경우, Docker 배포고급 설치 옵션을 검토하십시오.

라이센스 키 및 전역 설정 구성

라이선스 키와 전역 설정을 Program.cs에서 구성한 후 모든 IronPDF 메서드를 호출하십시오. .NET 10의 최상위 문장 사용:

using IronPdf;

IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY")!;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.TempFolderPath = @"C:\Temp\IronPdf";
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.Logging.LoggingMode = IronPdf.Logging.PdfLoggingModes.All;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Run();
using IronPdf;

IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY")!;
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
IronPdf.Installation.TempFolderPath = @"C:\Temp\IronPdf";
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = true;
IronPdf.Logging.LoggingMode = IronPdf.Logging.PdfLoggingModes.All;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.Run();
Imports IronPdf

IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY")
IronPdf.Installation.ChromeGpuMode = IronPdf.Engines.Chrome.ChromeGpuModes.Disabled
IronPdf.Installation.TempFolderPath = "C:\Temp\IronPdf"
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = True
IronPdf.Logging.LoggingMode = IronPdf.Logging.PdfLoggingModes.All

Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.Run()
$vbLabelText   $csharpLabel

환경 변수에 키를 저장하면 소스 제어에서 제외할 수 있습니다. 무료 30일 체험판은 평가를 위한 전체 기능을 제공합니다. 멀티테넌트 시나리오에 대한 런타임 키 전환을 포함한 모든 구성 옵션은 라이센스 문서를 참조하십시오.

HTML 문자열을 PDF로 변환하는 방법은 무엇인가요?

기본 변환 수행

RenderHtmlAsPdf 메서드는 HTML 문자열을 받아 PdfDocument 객체를 반환하며 이를 저장, 스트리밍, 추가 조작할 수 있습니다. 이것은 서버 측 템플릿에서 송장, 보고서 및 편지를 생성하는 주된 진입점입니다:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $99.99</p>");
pdf.SaveAs("invoice.pdf");

// Get binary data for an HTTP response or cloud storage
byte[] pdfBytes = pdf.BinaryData;
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;

var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $99.99</p>");
pdf.SaveAs("invoice.pdf");

// Get binary data for an HTTP response or cloud storage
byte[] pdfBytes = pdf.BinaryData;
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Total: $99.99</p>")
pdf.SaveAs("invoice.pdf")

' Get binary data for an HTTP response or cloud storage
Dim pdfBytes As Byte() = pdf.BinaryData
$vbLabelText   $csharpLabel

결과는 접근성 준수를 위한 선택 가능한 텍스트를 포함합니다. 출력 차원을 디자인에 맞게 조정하려면 사용자 정의 여백용지 크기 옵션을 탐색하십시오.

PDF viewer showing a simple invoice with number 12345 and total amount $99.99 displayed at 100% zoom

CSS 스타일, 웹 폰트 및 외부 자산 적용

전체 스타일 시트를 HTML 문자열에 직접 포함할 수 있습니다. IronPDF는 렌더링 전에 @import 규칙과 글꼴 참조를 처리합니다. HTML에서 상대 경로 - 로컬 스타일시트, 이미지 또는 스크립트 - 를 참조할 때, 엔진이 해결할 수 있도록 두 번째 인수로 기본 경로를 제공하십시오:

using IronPdf;

var styledHtml = $@"
    <style>
        body {{ font-family: Arial, sans-serif; margin: 40px; line-height: 1.6; }}
        .header {{ color: #2563eb; border-bottom: 2px solid #e5e7eb; padding-bottom: 10px; }}
        .amount {{ font-size: 24px; font-weight: bold; color: #059669; }}
    </style>
    <div class='header'>
        <h1>Professional Invoice</h1>
        <p>Invoice Date: {DateTime.Now:MMMM dd, yyyy}</p>
    </div>
    <p class='amount'>$1,234.56</p>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);

// Provide a base path if the HTML references local assets
var pdf = renderer.RenderHtmlAsPdf(styledHtml, @"C:\assets\");
pdf.SaveAs("styled-invoice.pdf");
using IronPdf;

var styledHtml = $@"
    <style>
        body {{ font-family: Arial, sans-serif; margin: 40px; line-height: 1.6; }}
        .header {{ color: #2563eb; border-bottom: 2px solid #e5e7eb; padding-bottom: 10px; }}
        .amount {{ font-size: 24px; font-weight: bold; color: #059669; }}
    </style>
    <div class='header'>
        <h1>Professional Invoice</h1>
        <p>Invoice Date: {DateTime.Now:MMMM dd, yyyy}</p>
    </div>
    <p class='amount'>$1,234.56</p>";

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.RenderDelay(500);

// Provide a base path if the HTML references local assets
var pdf = renderer.RenderHtmlAsPdf(styledHtml, @"C:\assets\");
pdf.SaveAs("styled-invoice.pdf");
Imports IronPdf

Dim styledHtml As String = $"
    <style>
        body {{ font-family: Arial, sans-serif; margin: 40px; line-height: 1.6; }}
        .header {{ color: #2563eb; border-bottom: 2px solid #e5e7eb; padding-bottom: 10px; }}
        .amount {{ font-size: 24px; font-weight: bold; color: #059669; }}
    </style>
    <div class='header'>
        <h1>Professional Invoice</h1>
        <p>Invoice Date: {DateTime.Now:MMMM dd, yyyy}</p>
    </div>
    <p class='amount'>$1,234.56</p>"

Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.WaitFor.RenderDelay(500)

' Provide a base path if the HTML references local assets
Dim pdf = renderer.RenderHtmlAsPdf(styledHtml, "C:\assets\")
pdf.SaveAs("styled-invoice.pdf")
$vbLabelText   $csharpLabel

CSS는 Chrome에서처럼 정확히 렌더링됩니다. Google Fonts 및 자체 호스팅 글꼴 통합을 위한 렌더링 옵션웹 폰트 지원을 탐색하십시오.

PDF 뷰어가 회색 배경의 IronPDF for .NET 로고를 100% 줌으로, 페이지 1/1로 보여줌

HTML 파일과 실시간 URL을 PDF로 변환하는 방법은 무엇입니까?

로컬 파일 및 웹 페이지 변환

RenderHtmlFileAsPdf 메서드는 로컬 파일을 읽고 파일의 디렉토리에 상대적으로 연결된 모든 자산을 자동으로 해결합니다. RenderUrlAsPdf 메서드는 공개 또는 인증된 웹 페이지를 캡처하고, JavaScript를 실행하며, 렌더링 전에 콘텐츠 로드를 기다립니다.

using IronPdf;

// Convert a local HTML file
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;

var filePdf = renderer.RenderHtmlFileAsPdf("complex-report.html");
filePdf.MetaData.Title = "Monthly Sales Report";
filePdf.SaveAs("report-output.pdf");

// Convert a live URL with authentication
var secureRenderer = new ChromePdfRenderer();
secureRenderer.LoginCredentials = new ChromeHttpLoginCredentials
{
    Username = "user@example.com",
    Password = "secure-password"
};
secureRenderer.RenderingOptions.WaitFor.NetworkIdle(500);

var urlPdf = secureRenderer.RenderUrlAsPdf("https://app.example.com/dashboard");
urlPdf.SaveAs("dashboard-snapshot.pdf");
using IronPdf;

// Convert a local HTML file
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;

var filePdf = renderer.RenderHtmlFileAsPdf("complex-report.html");
filePdf.MetaData.Title = "Monthly Sales Report";
filePdf.SaveAs("report-output.pdf");

// Convert a live URL with authentication
var secureRenderer = new ChromePdfRenderer();
secureRenderer.LoginCredentials = new ChromeHttpLoginCredentials
{
    Username = "user@example.com",
    Password = "secure-password"
};
secureRenderer.RenderingOptions.WaitFor.NetworkIdle(500);

var urlPdf = secureRenderer.RenderUrlAsPdf("https://app.example.com/dashboard");
urlPdf.SaveAs("dashboard-snapshot.pdf");
Imports IronPdf

' Convert a local HTML file
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PrintHtmlBackgrounds = True

Dim filePdf = renderer.RenderHtmlFileAsPdf("complex-report.html")
filePdf.MetaData.Title = "Monthly Sales Report"
filePdf.SaveAs("report-output.pdf")

' Convert a live URL with authentication
Dim secureRenderer As New ChromePdfRenderer()
secureRenderer.LoginCredentials = New ChromeHttpLoginCredentials With {
    .Username = "user@example.com",
    .Password = "secure-password"
}
secureRenderer.RenderingOptions.WaitFor.NetworkIdle(500)

Dim urlPdf = secureRenderer.RenderUrlAsPdf("https://app.example.com/dashboard")
urlPdf.SaveAs("dashboard-snapshot.pdf")
$vbLabelText   $csharpLabel

공개적으로 접근 가능한 페이지에는 LoginCredentials 설치를 완전히 건너뛰십시오. 세션 기반 사이트에 대한 인증쿠키 관리에 대해 알아보십시오. 반응형 레이아웃을 올바르게 캡처하려면, renderer.RenderingOptions.ViewPortWidth로 뷰포트 너비를 구성하고 뷰포트 문서를 검토하십시오.

헤더, 워터마크 및 보안을 추가하는 방법

전문적인 헤더 및 푸터 추가

페이지 번호, 날짜, 또는 브랜드를 표시하는 헤더 및 푸터는 다중 페이지 문서를 훨씬 더 읽기 쉽게 하고 전문적으로 보이게 만듭니다. IronPDF는 이들을 HTML 조각으로 처리하므로 이미지와 브랜드 색상을 포함한 전체 CSS 스타일을 사용할 수 있습니다:

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 50,
    HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
    BaseUrl = new Uri(@"file:///C:/assets/")
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 30,
    HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
    DrawDividerLine = true
};

renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;

var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");
pdf.SaveAs("report-with-headers.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    MaxHeight = 50,
    HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
    BaseUrl = new Uri(@"file:///C:/assets/")
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    MaxHeight = 30,
    HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
    DrawDividerLine = true
};

renderer.RenderingOptions.MarginTop = 60;
renderer.RenderingOptions.MarginBottom = 40;

var pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>");
pdf.SaveAs("report-with-headers.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .MaxHeight = 50,
    .HtmlFragment = "<div style='text-align:center;font-size:12px;'>Annual Report 2025 -- Confidential</div>",
    .BaseUrl = New Uri("file:///C:/assets/")
}

renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .MaxHeight = 30,
    .HtmlFragment = "<div style='text-align:center;font-size:10px;'>Page {page} of {total-pages}</div>",
    .DrawDividerLine = True
}

renderer.RenderingOptions.MarginTop = 60
renderer.RenderingOptions.MarginBottom = 40

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>Body text here.</p>")
pdf.SaveAs("report-with-headers.pdf")
$vbLabelText   $csharpLabel

{page}{total-pages}와 같은 플레이스홀더는 렌더링 시 자동으로 대체됩니다. 동적인 날짜 삽입, 로고 배치, 교차 페이지 스타일을 위한 머리글 및 바닥글 튜토리얼을 검토하십시오.

워터마크, 암호화 및 디지털 서명 적용

워터마크는 초안 문서 및 기밀 보고서를 보호합니다. 암호 보호 및 권한 설정은 PDF를 인쇄, 복사, 또는 편집할 수 있는 사람을 제한합니다. 디지털 서명은 계약서 및 규제 문서에 대해 입증 가능한 진위층을 추가합니다. 단일 워크플로우에서 이 세 가지를 모두 결합할 수 있습니다:

using IronPdf;
using System.보안.Cryptography.X509Certificates;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");

// Watermark
pdf.ApplyWatermark(
    "<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
    rotation: 45,
    opacity: 30
);

// Encryption and permissions
pdf.보안Settings.UserPassword = "user123";
pdf.보안Settings.OwnerPassword = "owner456";
pdf.보안Settings.AllowUserPrinting = IronPdf.보안.PdfPrint보안.NoPrint;
pdf.보안Settings.AllowUserCopyPasteContent = false;

// Digital signature
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");
var signature = new PdfSignature(cert)
{
    SigningContact = "Jane Smith",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");
using IronPdf;
using System.보안.Cryptography.X509Certificates;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>");

// Watermark
pdf.ApplyWatermark(
    "<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
    rotation: 45,
    opacity: 30
);

// Encryption and permissions
pdf.보안Settings.UserPassword = "user123";
pdf.보안Settings.OwnerPassword = "owner456";
pdf.보안Settings.AllowUserPrinting = IronPdf.보안.PdfPrint보안.NoPrint;
pdf.보안Settings.AllowUserCopyPasteContent = false;

// Digital signature
var cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password");
var signature = new PdfSignature(cert)
{
    SigningContact = "Jane Smith",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};
pdf.Sign(signature);
pdf.SaveAsRevision("signed-contract.pdf");
Imports IronPdf
Imports System.Security.Cryptography.X509Certificates

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions.</p>")

' Watermark
pdf.ApplyWatermark(
    "<div style='font-size:72px;color:red;opacity:0.3;'>DRAFT</div>",
    rotation:=45,
    opacity:=30
)

' Encryption and permissions
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint
pdf.SecuritySettings.AllowUserCopyPasteContent = False

' Digital signature
Dim cert = X509CertificateLoader.LoadPkcs12FromFile("certificate.pfx", "password")
Dim signature As New PdfSignature(cert) With {
    .SigningContact = "Jane Smith",
    .SigningLocation = "New York, NY",
    .SigningReason = "Contract Approval"
}
pdf.Sign(signature)
pdf.SaveAsRevision("signed-contract.pdf")
$vbLabelText   $csharpLabel

워터마크 기법, PDF 보안 설정 및 하드웨어 보안 모듈을 위한 HSM 통합을 포함한 인증서 기반 서명에 대해 알아보십시오.

Windows, Linux 및 Azure에 배포하는 방법

IronPDF는 Windows, Linux 및 macOS를 지원하며, 플랫폼별 바이너리가 NuGet 패키지에 포함되어 있습니다. 출력은 플랫폼 간에 동일하기 때문에 Windows에서 개발하고 Linux 컨테이너에 배포해도 렌더링 코드를 변경할 필요가 없습니다. 패키지는 런타임 환경을 자동으로 감지하고 올바른 네이티브 구성 요소를 로드합니다. 이 크로스 플랫폼 일관성은 CI/CD 파이프라인을 간소화합니다 - 환경별 렌더링 구성이 필요하지 않습니다.

Azure App Service에서 라이선스 키를 응용 프로그램 설정에 저장하고 Environment.GetEnvironmentVariable로 참조하세요. 이 접근법은 자격 증명을 리포지토리 외부에 보관하므로 코드 배포 없이도 키 회전이 가능합니다. Azure 배포 가이드에서 호스팅 특화 설정을, IIS 배포 가이드에서 전통적인 Windows 서버 호스팅을 참조하십시오.

Linux와 Docker 환경에서는 Chrome 렌더링 엔진에 추가 시스템 종속성이 필요합니다. Dockerfile에 추가하십시오:

FROM mcr.microsoft.com/dotnet/aspnet:10.0
RUN apt-get update && apt-get install -y \
    libgdiplus libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 \
    && apt-get clean
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "MyApp.dll"]

만약 LinuxAndDockerDependenciesAutoConfigtrue으로 설정되면 처음 실행 시 IronPDF가 의존성 해석을 자동으로 처리합니다. Linux 배포 가이드Docker 통합 가이드에서 종속성 목록을 완전히 확인하세요. 서버리스 작업의 경우, Azure Functions 가이드는 메모리 및 제한 시간 구성을 다룹니다.

전체 기능 세트를 어떻게 탐색합니까?

HTML 변환을 넘어서, IronPDF는 완전한 PDF 워크플로우를 다룹니다. 아래 표는 주요 기능 영역을 요약합니다:

IronPDF 기능 영역
범주특징선적 서류 비치
문서 작성헤더, 푸터, 입력 가능한 양식, 배경양식 가이드
보안디지털 서명, 암호화, 위생서명 안내서
문서 관리병합, 분할, 압축, PDF/A 준수병합 가이드
콘텐츠 조작스탬핑, JavaScript 실행, 비동기 작업스탬프 가이드

완전한 메서드 참조는 API 문서와 모든 기능 영역에 대한 작동하는 C# 프로젝트가 포함된 코드 예제 라이브러리를 참조하세요. 튜토리얼 섹션은 송장 생성, 보고서 자동화 및 문서 아카이빙과 같은 일반적인 시나리오에 대한 가이드를 제공합니다.

시작하기 위한 다음 단계는 무엇입니까?

IronPDF는 HTML을 PDF로 변환하는 과정을 세 단계 워크플로우로 전환합니다: NuGet에서 패키지를 설치하고, 라이선스 키를 구성한 후 RenderHtmlAsPdf를 호출하십시오. Chrome 엔진은 정확한 렌더링을 보장하며, API 설계는 사용자 정의 헤더, 워터마크, 디지털 서명이 포함된 복잡한 여러 페이지 문서에 대해서도 통합을 간편하게 유지합니다.

무료 30일 체험판은 기능 제한 없이 전체 액세스를 제공합니다. 준비되면, 유연한 라이선스가 개별 개발자에서 볼륨 요구 사항이 있는 Enterprise 팀에 맞게 확장됩니다. 생태계의 문서 생성 패턴에 대한 배경 컨텍스트를 위해 Microsoft .NET 문서를 검토할 수 있으며, 형식의 기능과 제약에 대한 깊은 이해를 위해 공식 PDF 사양을 검토할 수 있습니다.

IronPDF 라이선싱 페이지에 네 가지 영구 라이선스 계층(Lite, Plus, Professional, Unlimited)의 팀 크기별 가격 및 기능을 보여줌

변경 로그를 탐색하여 최근 추가 사항을 확인하고 프로젝트 요구에 적합한 기능을 계획하세요.

자주 묻는 질문

IronPDF는 무엇을 위해 사용되나요?

IronPDF는 .NET 애플리케이션에서 HTML을 PDF로 변환하는 데 사용됩니다. 최신 CSS, JavaScript를 처리하며 고품질 PDF 문서를 생성합니다.

IronPDF는 복잡한 HTML 레이아웃을 어떻게 처리하나요?

IronPDF는 Chrome 기반의 렌더링 엔진을 사용하여 복잡한 HTML 레이아웃을 정확하게 처리하며, PDF 출력이 브라우저에서 보는 것과 일치하도록 보장합니다.

IronPDF는 PDF 변환 중 JavaScript를 실행할 수 있습니까?

네, IronPDF는 JavaScript를 실행할 수 있으며, 이는 PDF 출력에서 동적 콘텐츠를 정확하게 렌더링하는 데 중요합니다.

.NET 애플리케이션에 IronPDF를 구현하기 쉬운가요?

IronPDF는 간단하게 구현하고 배포할 수 있도록 설계되어 .NET을 사용하는 개발자들이 쉽게 접근할 수 있습니다.

IronPDF는 어떤 종류의 HTML 소스를 PDF로 변환할 수 있나요?

IronPDF는 HTML 파일, HTML 문자열, 전체 웹 페이지를 PDF 형식으로 변환할 수 있습니다.

IronPDF는 PDF에서 원래 HTML의 품질을 유지하나요?

네, IronPDF는 원래의 HTML 콘텐츠와 동일한 충실도로 고품질의 PDF 문서를 생성합니다.

IronPDF는 다른 PDF 변환기와 무엇이 다른가요?

IronPDF는 Chrome 기반의 렌더링 엔진을 통해 현대적인 웹 표준과의 호환성을 보장하며 매끄러운 변환 경험을 제공합니다.

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

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

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

아이언 서포트 팀

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