IRON SUITE 사용하기

HTML 파일에서 C#으로 PDF 생성

IronPDF는 HTML을 프로그래밍 방식으로 PDF 문서로 변환합니다.

PDF를 생성하는 방법 - HTML에서 PDF 예제

이 전체 기사의 소스 코드는 C#으로 C# HTML에서 PDF 프로젝트 소스 코드 다운로드로 제공됩니다.

다음 튜토리얼은 C# PDF 생성기로 IronPDF를 사용하는 과정을 안내합니다. 기본적인 내용뿐만 아니라 많은 고급 C# PDF 주제를 다룹니다.

HTML에서 PDF로 워크스루

이 데모는 IronPdf를 사용하는 예제를 안내합니다. Iron Software로부터 추가 사용 사례 데모 요청.

데모는 Hello World, RenderHtmlAsPdfRenderUrlAsPdf 예제로 구성되어 있습니다. 모든 예제는 IronPDF Demo 솔루션의 해당 프로젝트 아래에서 찾을 수 있습니다.

1단계: 설치

NuGet을 통해 IronPdf를 설치할 수 있습니다. The package name is IronPDF NuGet Package.

Or you can use the Direct Library Download.

2단계: Hello World

IronPDF를 설치하고 프로젝트에 참조한 후에는 몇 가지 문자열을 입력하여 바로 사용할 수 있습니다:

// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

그리고 HTML을 PDF로 변환해야 하는 경우:

// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
$vbLabelText   $csharpLabel

또는 웹 페이지를 PDF 파일로 변환하려는 경우:

// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
$vbLabelText   $csharpLabel

그게 전부입니다! 해당 결과는 다음과 같습니다:

HTML 파일에서 C#로 PDF 생성, 그림 1: HTML을 PDF로 변환한 결과 HTML을 PDF로 변환한 결과

HTML 파일에서 C#로 PDF 생성, 그림 2: 웹 페이지를 PDF로 변환한 결과 웹 페이지를 PDF로 변환한 결과

IronPDFDemo.HelloWorld 프로젝트에서 코드 샘플을 찾으십시오.

3단계: RenderHtmlAsPdf

예제 1

더 실용적인 예제를 평가하기 위해, PDF로 전환해야 하는 HTML 인보이스를 상상해보세요. 이렇게 하는 방법에 대한 코드입니다.

참고: 인보이스 HTML은 IronPDFDemo.DemoWebSite 프로젝트(~/Static/TestInvoice1.html)에서 찾을 수 있습니다. 인보이스에는 '인쇄' 미디어 타입에 대한 사용자 정의 CSS가 있다는 점을 유의하십시오.

원본 인보이스는 브라우저에서 이렇게 보입니다:

HTML 파일에서 C#로 PDF 생성, 그림 4:


이를 PDF 파일로 변환하기 위해, 위의 HelloWorld 예제와 유사한 코드가 사용되며, 차이점은 원본 HTML 파일입니다.

// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
// Read HTML from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var chromePdfRenderer = new ChromePdfRenderer();
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
$vbLabelText   $csharpLabel

결과는 다음과 같습니다:

HTML 파일에서 C#로 PDF 생성, 그림 5: HTML에서 PDF 파일 생성 HTML에서 PDF 파일 생성

훌륭하게 보입니다! IronPDFDemo.RenderHtmlAdPdfDemo 프로젝트에서 코드 샘플을 찾으십시오.

IronPDF에서 Byte Arrays와 HTML 문서 또는 문자열 사용하는 방법 이 질문도 보십시오.

예제 2

이 섹션은 예제 1에서 생성된 PDF를 사용자 정의하는 데 도움이 됩니다. 예를 들어, 사용자 정의 마진, 문서 제목이 있는 헤더, 생성 날짜 및 페이지 번호가 있는 푸터, 표준 인보이스에 있는 '인쇄' 미디어 타입에 대한 사용자 정의 CSS를 추가합니다. 이를 위해 ChromePdfRenderOptions 인스턴스를 초기화하고 ChromePdfRenderer 생성자에 전달합니다.

// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};

var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
// Configure rendering options with margins, headers, and footers
var pdfRenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};

var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
$vbLabelText   $csharpLabel

팁: 생성자에서 매개변수로 옵션을 전달하는 대신, ChromePdfRenderer 인스턴스의 해당 필드를 설정할 수 있습니다:

var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
$vbLabelText   $csharpLabel

참고: 헤더 및 푸터 기능은 병합 기능을 통합하며 모든 병합 필드({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title})가 해당 데이터로 채워질 수 있습니다.

나머지 코드는 예제 1과 동일합니다. 결과는:

HTML 파일에서 C#로 PDF 생성, 그림 6: 헤더와 푸터가 있는 인보이스 생성 헤더와 푸터로 인보이스 생성

사용자 정의 마진, 헤더, 푸터 및 '인쇄' 미디어 타입을 위한 CSS가 이제 설정되었습니다. IronPDFDemo.RenderHtmlAdPdfDemo 프로젝트에서 코드 샘플을 찾으십시오. IronPDF API 참조 에서 더 많은 설정을 찾을 수 있습니다.

4단계: RenderUrlAsPdf

설정

이 섹션의 샘플을 실행하려면 IronPDFDemo.DemoWebSite를 로컬에서 호스트해야 합니다. IIS Express에서 그렇게 하려면:

  1. DemoWebSite로 이동합니다
  2. 오른쪽 클릭 > 시작 프로젝트로 설정
  3. 디버그 없이 시작 (Ctrl+F5)
  4. {baseurl}/Static/TestInvoice1.html으로 이동하여 작동하는지 확인합니다. 이것은 URL http://localhost:51169/Static/TestInvoice1.html 입니다(프로젝트 설정을 변경하지 않으면 동일할 것입니다).

예제 1

이 섹션에서는 호스팅된 DemoWebSite 인보이스가 HelloWorld 예제와 동일한 코드로 PDF로 변환됩니다. 차이점은 호스트된 URL에 있습니다:

// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
// URL of the hosted invoice webpage
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
$vbLabelText   $csharpLabel

결과는 다음과 같습니다:

HTML 파일에서 C#로 PDF 생성, 그림 7: 호스팅된 웹사이트를 PDF로 생성 호스팅된 웹사이트를 PDF로 생성

훌륭하며 기대한 대로 보입니다. IronPDFDemo.RenderUrlAsPdfDemo 프로젝트 내에서 코드 샘플을 찾으십시오.

예제 2

많은 웹사이트는 종종 인증 방법으로 보호됩니다. 이 섹션에서는 PDF 파일을 렌더링하는 과정에서 제공된 사용자 이름과 비밀번호를 사용하여 일부 사용자 정의 작업: 사용자 정의 마진, 문서 제목이 있는 헤더, 생성 날짜 및 페이지가 있는 푸터, '인쇄' 미디어 타입을 위한 사용자 정의 CSS를 수행합니다. 인보이스의 URL은 http://localhost:51169/Invoice에 있습니다.

http://localhost:51169/Invoice에 접근하면 '인증 필요' 양식이 나타납니다:

HTML 파일에서 C#로 PDF 생성, 그림 8: 인증 필요 양식 인증이 필요한 양식

참고: 자격 증명은 "testUser"/"testPassword"입니다.

그렇다면 인증을 우회하는 방법은 무엇입니까? HttpLoginCredentials을 설정함으로써:

// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },

    // Set login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },

    // Set login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};

using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
$vbLabelText   $csharpLabel

참고: ChromePdfRenderer Example2와 동일한 맞춤 설정이 사용됩니다.

결과는 다음과 같습니다:

HTML 파일에서 C#로 PDF 생성, 그림 9: 자격 증명이 있는 HTML 사이트를 PDF 파일로 생성 자격 증명이 포함된 HTML 사이트를 PDF 파일로 생성

모든 것이 준비되었습니다. IronPDFDemo.RenderUrlAsPdfDemo 프로젝트에서 코드 샘플을 찾아보세요. HttpLoginCredentials 없이 결과가 어떻게 보일지 궁금하시다면, 여기 있습니다:

HTML 파일에서 C#로 PDF 생성, 그림 10: 자격 증명 없이 빈 PDF 파일 생성 자격 증명 없이 비어 있는 PDF 파일 생성

또한 Jean의 .NET HTML to PDF 튜토리얼을 참조하세요

또한, IronPDF는 PDF와 상호 작용할 수 있는 다양한 방법을 제공합니다: