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

C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.

View Full Comparison

C#에서 PDF 문서에 헤더 및 풋터 추가하기

PDF 문서에 헤더와 풋터를 추가하는 것은 전문적인 보고서, 청구서 및 비즈니스 문서를 작성하는데 필수적입니다. iTextSharp 솔루션을 검색하는 개발자는 PdfPageEventHelperOnEndPage 메서드를 사용하여 동일한 결과를 달성하기 위해 현대적인 .NET 라이브러리가 훨씬 더 간단한 접근 방식을 제공한다는 것을 알게 될 것입니다.

이 가이드는 전통적인 iText 7 접근 방식과 IronPDF의 간결한 API를 비교하여 C#에서 PDF 파일에 헤더와 풋터를 추가하는 방법을 보여줍니다. 마지막에는 새로운 Document를 만드는 것부터 최종 PDF 파일을 생성하는 것까지 두 구현 방식을 이해하게 되며, 프로젝트 요구사항에 가장 적합한 접근 방식을 선택할 수 있습니다.

C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 1 - IronPDF

전문 문서에서 PDF 헤더와 풋터가 중요한 이유는?

헤더와 풋터는 전문 PDF 문서에서 중요한 기능을 제공합니다. 이미지 로고를 통한 일관된 브랜딩, 페이지 번호를 통한 페이지 탐색, 날짜 및 문서 제목과 같은 중요한 메타데이터 표시, 타임스탬프 및 버전 정보를 통한 문서 신뢰성 구축을 제공합니다.

Enterprise 환경에서 헤더와 풋터는 종종 법적 의미를 가집니다. 금융 보고서는 감사 추적의 타임스탬프가 필요합니다. 계약서는 페이지 번호를 사용하여 완전성을 보장해야 합니다. 내부 문서는 페이지마다 기밀 유지 통지가 필요할 수 있습니다. 이 요구사항을 프로그래밍 방식으로 충족하려면 PDF 라이브러리가 페이지 수준의 콘텐츠 삽입을 신뢰성 있게 처리할 수 있어야 합니다.

프로그램적으로 헤더와 풋터를 추가해야 하는 주요 이유는 다음과 같습니다:

  • 감사 준수 -- 모든 페이지의 타임스탬프 및 버전 번호가 규제 요구사항을 충족
  • 브랜드 일관성 -- 생성된 모든 문서에 일관되게 적용되는 회사 로고 및 스타일
  • 탐색 -- 페이지 번호 및 섹션 제목은 독자가 정보를 빠르게 찾을 수 있도록 돕습니다
  • 정통성 -- 저자 이름, 생성 날짜, 문서 ID는 문서의 무결성에 대한 논쟁을 방지합니다

C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 2 - 기능

C#에서 텍스트 헤더 및 풋터를 어떻게 추가합니까?

IronPDF는 .NET 애플리케이션에서 PDF 문서에 헤더와 풋터를 추가하는 가장 직접적인 방법을 제공합니다. ChromePdfRenderer 클래스와 TextHeaderFooter 또는 HtmlHeaderFooter을 결합하여 최소한의 코드로 헤더와 푸터를 생성할 수 있으며, 별도의 셀을 생성하거나 contentbyte 개체를 수동으로 관리할 필요가 없습니다.

코드를 작성하기 전 NuGet을 사용하여 프로젝트에 IronPDF를 추가하십시오:

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

이 라이브러리는 외부 의존성이 필요하지 않으며 설치 직후 바로 작동합니다. .NET 5, 6, 7, 8 및 10을 대상으로 하며, 플랫폼별 설정 없이 Windows, Linux 및 macOS에서 실행됩니다.

옛날 iTextSharp 패턴에서는 개발자가 private static void AddContent()와 같은 도우미 메서드를 생성하여 수동으로 헤더와 푸터 논리를 주입했습니다. IronPDF는 이러한 기본 코드를 완전히 제거합니다.

다음은 PDF 파일에 텍스트 헤더와 푸터를 추가하는 전체 예제입니다:

using IronPdf;

// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();

// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly Sales Report",
    DrawDividerLine = true,
    FontSize = 14
};

// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    LeftText = "{date}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
using IronPdf;

// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();

// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly Sales Report",
    DrawDividerLine = true,
    FontSize = 14
};

// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    LeftText = "{date}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
Imports IronPdf

' Initialize the PDF renderer
Dim renderer = New ChromePdfRenderer()

' Configure the text header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .CenterText = "Quarterly Sales Report",
    .DrawDividerLine = True,
    .FontSize = 14
}

' Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .LeftText = "{date}",
    .RightText = "Page {page} of {total-pages}",
    .DrawDividerLine = True,
    .FontSize = 10
}

' Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25

' Generate PDF from HTML content
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>")
pdf.SaveAs("report-with-headers.pdf")
$vbLabelText   $csharpLabel

TextHeaderFooter 클래스는 헤더 또는 푸터 영역의 왼쪽, 중앙, 오른쪽에 텍스트를 배치할 수 있는 속성을 제공합니다. DrawDividerLine 속성은 헤더 또는 푸터와 주요 문서 콘텐츠 사이에 전문적인 구분선을 추가합니다. {page}, {total-pages}{date}와 같은 병합 가능 필드는 PDF 생성 중에 동적 값으로 자동 채워집니다.

IronPDF는 여백 계산을 자동으로 처리하여 헤더와 푸터가 문서 콘텐츠와 겹치지 않도록 보장합니다. TextHeaderFooter 클래스는 외부 종속성 없이 타이포그래피를 제어할 수 있도록 IronSoftware.Drawing.FontTypes의 글꼴 유형을 지원합니다.

출력

C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 4 - PDF 출력

전체 구현이 명확하고 읽기 쉬운 속성 할당으로 단일 코드 블록에 맞는 방식을 참고하십시오. 별도의 클래스 파일을 만들거나, 픽셀 위치를 계산하거나, 캔버스 객체를 관리할 필요가 없습니다. 이 라이브러리는 이러한 복잡성을 추상화하여 PDF 생성의 메커니즘이 아닌 콘텐츠에 집중할 수 있게 합니다.

HTML 스타일의 헤더와 푸터를 어떻게 만드나요?

보다 정교한 디자인을 위해, IronPDF의 HtmlHeaderFooter 클래스는 전체 HTML 및 CSS 스타일링을 가능하게 합니다. 이 방법은 헤더에 이미지 로고, 복잡한 레이아웃 또는 브랜드 특정 스타일을 포함해야 할 때 특히 유용합니다 - PdfPCell 개체를 수동으로 생성하거나 new Phrase 생성자를 사용하는 필요 없이.

using IronPdf;
using System;

var renderer = new ChromePdfRenderer();

// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    MaxHeight = 25,
    DrawDividerLine = true,
    BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};

// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    MaxHeight = 20
};

renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;

var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
using IronPdf;
using System;

var renderer = new ChromePdfRenderer();

// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    MaxHeight = 25,
    DrawDividerLine = true,
    BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};

// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    MaxHeight = 20
};

renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;

var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

' Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    .MaxHeight = 25,
    .DrawDividerLine = True,
    .BaseUrl = New Uri("C:\assets\").AbsoluteUri
}

' Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    .MaxHeight = 20
}

renderer.RenderingOptions.MarginTop = 30
renderer.RenderingOptions.MarginBottom = 25

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>")
pdf.SaveAs("styled-document.pdf")
$vbLabelText   $csharpLabel

이 샘플 코드는 HTML 헤더가 텍스트 옆에 이미지를 포함할 수 있는 방법을 보여줍니다. BaseUrl 속성은 상대 이미지 URL을 해결할 수 있는 루트 경로를 설정하여 회사 로고나 기타 그래픽을 간단하게 포함할 수 있게 합니다. MaxHeight 속성은 헤더가 지정된 치수를 초과하지 않도록 하여 일관된 문서 레이아웃을 유지합니다.

병합 가능 필드 ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title})는 HTML 헤더 및 푸터에서 동일하게 작동하여 추가 코드 없이 동적 콘텐츠 삽입을 제공합니다. 다양한 헤더 스타일 구현에 대한 안내는 헤더 및 푸터 사용 방법 안내서를 참조하십시오.

HTML 접근법은 브랜드 문서를 만드는 데 빛을 발합니다. 마케팅 팀은 개발자가 직접 통합할 수 있는 HTML 템플릿을 제공하여 승인된 디자인의 픽셀 단위 일치 재현을 보장할 수 있습니다. font-family, color, background-colorborder과 같은 CSS 속성은 예상대로 작동하여, 다른 라이브러리에서는 광범위한 저수준 코드를 필요로 하는 정교한 시각적 처리를 가능하게 합니다.

C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 3 - PDF에 헤더와 푸터 추가 방법 - IronPDF

기존 PDF 문서에 헤더를 어떻게 추가할 수 있나요?

일반적인 요구사항으로는 이미 존재하는 PDF 파일(업로드된 문서, 병합 파일, 다른 시스템에서 생성된 PDF 등)에 헤더와 푸터를 추가하는 것이 있습니다. IronPDF는 이 시나리오를 AddHtmlHeadersAddHtmlFooters 메서드로 처리합니다.

using IronPdf;

// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");

// Define the header to add
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    MaxHeight = 20
};

// Define the footer to add
var footer = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    MaxHeight = 15
};

// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
using IronPdf;

// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");

// Define the header to add
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    MaxHeight = 20
};

// Define the footer to add
var footer = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    MaxHeight = 15
};

// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
Imports IronPdf

' Load an existing PDF document
Dim pdf = PdfDocument.FromFile("customer-profile.pdf")

' Define the header to add
Dim header As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    .MaxHeight = 20
}

' Define the footer to add
Dim footer As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    .MaxHeight = 15
}

' Apply headers and footers to all pages
pdf.AddHtmlHeaders(header)
pdf.AddHtmlFooters(footer)
pdf.SaveAs("document-with-new-headers.pdf")
$vbLabelText   $csharpLabel

PdfDocument 클래스는 로드되거나 렌더링된 PDF를 나타내며, 렌더링 후 수정 기능을 제공합니다. 렌더링과 수정의 이러한 분리는 PDF 문서가 여러 처리 단계를 거치는 워크플로우를 가능하게 합니다. AddHtmlHeaders 메서드는 자동으로 모든 페이지에 헤더를 적용하지만, 페이지 인덱스의 컬렉션을 전달하여 특정 페이지를 대상으로 지정할 수도 있습니다.

입력

C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 6 - 샘플 입력

출력

C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 7 - 기존 PDF 헤더 출력

이 기능은 스캔 문서, 사용자 업로드 또는 서드파티 API 응답 등 다양한 출처에서 PDF 파일을 받는 문서 관리 시스템에서 매우 유용합니다. IronPDF는 배포 또는 보관 전 브랜드화 혹은 페이지 번호를 표준화합니다.

다양한 페이지에 다른 헤더를 어떻게 추가할 수 있나요?

일부 문서는 첫 페이지에 다른 헤더(또는 헤더 없음)를 필요로 하며, 이후 페이지는 표준 형식을 사용합니다. IronPDF는 페이지 인덱스 기반의 헤더 적용을 통해 이를 지원하며, void OnEndPage 핸들러 내에서 조건을 확인하거나 루프 카운터를 수동으로 관리할 필요가 없습니다:

using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;

var renderer = new ChromePdfRenderer();

// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};

var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine("  .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");

for (int i = 0; i < pages.Count; i++)
{
    sb.AppendLine(pages[i]);
    if (i < pages.Count - 1)
        sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");

var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    MaxHeight = 20
};

// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;

var renderer = new ChromePdfRenderer();

// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};

var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine("  .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");

for (int i = 0; i < pages.Count; i++)
{
    sb.AppendLine(pages[i]);
    if (i < pages.Count - 1)
        sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");

var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    MaxHeight = 20
};

// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text

Dim renderer As New ChromePdfRenderer()

' Build multi-page HTML with print page-breaks between pages
Dim pages As New List(Of String) From {
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
}

Dim sb As New StringBuilder()
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>")
sb.AppendLine("<style>")
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }")
sb.AppendLine("  .page-break { page-break-after: always; }")
sb.AppendLine("</style>")
sb.AppendLine("</head><body>")

For i As Integer = 0 To pages.Count - 1
    sb.AppendLine(pages(i))
    If i < pages.Count - 1 Then
        sb.AppendLine("<div class='page-break'></div>")
    End If
Next
sb.AppendLine("</body></html>")

Dim pdf = renderer.RenderHtmlAsPdf(sb.ToString())

' Create the standard header for pages 2 onwards
Dim standardHeader As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    .MaxHeight = 20
}

' Apply to all pages except the first (index 0)
Dim pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList()
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices)
pdf.SaveAs("document-skip-first-page-header.pdf")
$vbLabelText   $csharpLabel

AddHtmlHeaders의 두 번째 매개변수는 {page} 병합 가능 필드를 위한 시작 페이지 번호를 지정하고, 세 번째 매개변수는 헤더를 받을 페이지 인덱스의 컬렉션을 수용합니다. 이 세밀한 제어는 복잡한 문서 레이아웃을 복잡한 조건문 로직 없이 가능하게 합니다. 고급 헤더 및 푸터 예제는 홀수/짝수 페이지 구분을 포함한 추가 시나리오를 다룹니다.

출력

C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 9 - 다른 페이지에 다른 헤더 출력

페이지 번호를 넘어선 동적 콘텐츠를 어떻게 구현할 수 있나요?

병합 가능한 필드 시스템은 렌더링 중 자동으로 채워지는 여러 동적 값을 지원합니다. 다음 표는 사용할 수 있는 모든 필드와 그 의미를 나열합니다:

IronPDF 헤더 및 푸터에서 지원되는 병합 가능한 필드
필드 삽입된 값 전형적인 사용
`{page}` 현재 페이지 번호 "3 페이지"를 표시하는 바닥글
`{total-pages}` 총 페이지 수 "10 중 3 페이지"를 표시하는 바닥글
`{date}` 로컬 형식의 현재 날짜 감사 타임스탬프, 보고서 날짜
`{time}` 로컬 형식의 현재 시간 규제 준수 바닥글
`{html-title}` HTML `` 태그의 내용</td> <td>페이지 제목을 표시하는 문서 헤더</td> </tr> <tr> <td>`{pdf-title}`</td> <td>PDF 문서 메타데이터 제목</td> <td>문서 이름이 있는 브랜드 바닥글</td> </tr> <tr> <td>`{url}`</td> <td>웹 주소에서 렌더링할 때의 출처 URL</td> <td>웹 콘텐츠를 위한 아카이브 바닥글</td> </tr> </tbody> </table> <p>실행 시점에 결정된 값으로 진정한 동적 콘텐츠를 위해, HTML 조각 문자열을 보간된 값으로 구성한 다음 <code>HtmlFragment</code> 속성에 할당할 수 있습니다. 이 접근 방식은 데이터베이스에서 검색한 값, 사용자 정보 또는 계산된 데이터를 포함하는 헤더를 가능하게 합니다:</p> <pre class='naked-code'><code class="language-csharp">using IronPdf; string userName = GetCurrentUserName(); string documentVersion = "v2.3.1"; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " + $"| Version: {documentVersion} " + "| Page {page} of {total-pages}</div>", MaxHeight = 20 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>"); pdf.SaveAs("dynamic-header-report.pdf");</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="클릭하여 복사" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="클릭하여 복사" data-copied-text="클립보드에 복사됨" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="전체 화면 모드" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="전체 화면 종료" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using IronPdf; string userName = GetCurrentUserName(); string documentVersion = "v2.3.1"; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " + $"| Version: {documentVersion} " + "| Page {page} of {total-pages}</div>", MaxHeight = 20 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>"); pdf.SaveAs("dynamic-header-report.pdf");</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports IronPdf Dim userName As String = GetCurrentUserName() Dim documentVersion As String = "v2.3.1" Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With { .HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " & $"| Version: {documentVersion} " & "| Page {page} of {total-pages}</div>", .MaxHeight = 20 } Dim pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>") pdf.SaveAs("dynamic-header-report.pdf")</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p><code>{page}</code> 및 <code>{total-pages}</code> 토큰은 C# 문자열 결합 내의 단순 문자열로 남아 있으며, 보간된 부분 내에는 포함되지 않습니다. PDF 렌더링 중에 IronPDF는 이들 토큰을 자동으로 교체합니다. 이 패턴은 런타임 값에 대해 작동합니다: Active Directory의 사용자 이름, 데이터베이스의 문서 ID, 빌드 파이프라인의 버전 문자열 또는 보고 엔진의 계산된 합계.</p> <p>병합 가능한 필드와 문자열 보간의 조합은 비즈니스 문서에 일반적인 정교한 바닥글 디자인을 가능하게 합니다. 법무 부서는 종종 문서 제목, 날짜 및 페이지 수를 표시하는 바닥글을 요구합니다. 금융 보고서는 규제 준수를 위한 타임스탬프가 필요할 수 있습니다. 이 요구 사항은 각 문서 유형에 대한 사용자 지정 코드 없이 충족됩니다.</p> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-itext-7-36-49-36-49-36-49-36-49" data-heading-level="2" data-heading-text="iText 7 접근 방식은 어떻게 보이나요?"> <h2 id="anchor-itext-7-36-49-36-49-36-49-36-49">iText 7 접근 방식은 어떻게 보이나요?</h2> <p>iText 7 (iTextSharp의 후속작)에 익숙한 개발자는 헤더와 바닥글을 추가하려면 이벤트 핸들러를 구현해야 한다는 것을 알고 있습니다. 라이브러리는 <code>OnEndPage</code> 및 <code>OnCloseDocument</code>와 같은 문서 수명 주기 이벤트에 응답하는 클래스를 생성하는 페이지 이벤트 시스템을 사용합니다.</p> <p>여기 iText 7로 동일한 헤더와 푸터 구현이 <code>ITextEvents</code> 패턴을 사용하여 어떻게 보이는지 보여줍니다:</p> <pre class='naked-code'><code class="language-csharp">using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Kernel.Events; using iText.Kernel.Geom; using iText.Layout.Properties; // Event handler class for headers and footers -- similar to PdfPageEventHelper public class ITextEvents : IEventHandler { private string _header; public string Header { get { return _header; } set { _header = value; } } public void HandleEvent(Event currentEvent) { PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // Create a new PdfCanvas for the contentbyte object PdfCanvas pdfCanvas = new PdfCanvas( page.NewContentStreamBefore(), page.GetResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pageSize); // Add header text at calculated position canvas.ShowTextAligned( new Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER); // Add footer with page number int pageNumber = pdfDoc.GetPageNumber(page); canvas.ShowTextAligned( new Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER); canvas.Close(); } } // Usage in main code var writer = new PdfWriter("report.pdf"); var pdfDoc = new PdfDocument(writer); var document = new Document(pdfDoc); // Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents()); document.Add(new Paragraph("Sales Data")); document.Add(new Paragraph("Content goes here...")); document.Close();</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="클릭하여 복사" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="클릭하여 복사" data-copied-text="클립보드에 복사됨" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="전체 화면 모드" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="전체 화면 종료" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Kernel.Events; using iText.Kernel.Geom; using iText.Layout.Properties; // Event handler class for headers and footers -- similar to PdfPageEventHelper public class ITextEvents : IEventHandler { private string _header; public string Header { get { return _header; } set { _header = value; } } public void HandleEvent(Event currentEvent) { PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // Create a new PdfCanvas for the contentbyte object PdfCanvas pdfCanvas = new PdfCanvas( page.NewContentStreamBefore(), page.GetResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pageSize); // Add header text at calculated position canvas.ShowTextAligned( new Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER); // Add footer with page number int pageNumber = pdfDoc.GetPageNumber(page); canvas.ShowTextAligned( new Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER); canvas.Close(); } } // Usage in main code var writer = new PdfWriter("report.pdf"); var pdfDoc = new PdfDocument(writer); var document = new Document(pdfDoc); // Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents()); document.Add(new Paragraph("Sales Data")); document.Add(new Paragraph("Content goes here...")); document.Close();</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports iText.Kernel.Pdf Imports iText.Layout Imports iText.Layout.Element Imports iText.Kernel.Events Imports iText.Kernel.Geom Imports iText.Layout.Properties ' Event handler class for headers and footers -- similar to PdfPageEventHelper Public Class ITextEvents Implements IEventHandler Private _header As String Public Property Header As String Get Return _header End Get Set(value As String) _header = value End Set End Property Public Sub HandleEvent(currentEvent As [Event]) Implements IEventHandler.HandleEvent Dim docEvent As PdfDocumentEvent = CType(currentEvent, PdfDocumentEvent) Dim pdfDoc As PdfDocument = docEvent.GetDocument() Dim page As PdfPage = docEvent.GetPage() Dim pageSize As Rectangle = page.GetPageSize() ' Create a new PdfCanvas for the contentbyte object Dim pdfCanvas As New PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdfDoc) Dim canvas As New Canvas(pdfCanvas, pageSize) ' Add header text at calculated position canvas.ShowTextAligned(New Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER) ' Add footer with page number Dim pageNumber As Integer = pdfDoc.GetPageNumber(page) canvas.ShowTextAligned(New Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER) canvas.Close() End Sub End Class ' Usage in main code Dim writer As New PdfWriter("report.pdf") Dim pdfDoc As New PdfDocument(writer) Dim document As New Document(pdfDoc) ' Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, New ITextEvents()) document.Add(New Paragraph("Sales Data")) document.Add(New Paragraph("Content goes here...")) document.Close()</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>이 구현은 두 라이브러리 간의 근본적인 아키텍처 차이를 보여줍니다. iText 7은 <code>IEventHandler</code>을 구현하는 별도의 핸들러 클래스를 생성해야 하며 (레거시 <code>PdfPageEventHelper</code>과 유사), 부동 소수 좌표를 사용하여 페이지 위치를 수동으로 계산하고, 그리기 작업을 위한 <code>PdfCanvas</code> 및 <code>Canvas</code> 객체를 관리해야 합니다. 핸들러는 페이지당 이벤트를 <code>END_PAGE</code> 이벤트 유형을 통해 수신하며, 많은 개발자가 잘못 사용하여 오류를 범하는 <code>START_PAGE</code>를 사용하지 마십시오.</p> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-36-49" data-heading-level="3" data-heading-text="출력"> <h3 id="anchor-36-49">출력</h3> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-8.webp" alt="C#로 iTextSharp을 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 8 - C#로 iTextSharp을 사용하여 PDF에 헤더와 푸터 추가하는 방법" loading="lazy" class="img-responsive add-shadow img-popup" width="883" height="951" /></p> <p>iText 7의 좌표 시스템은 페이지의 왼쪽 하단 모서리에서 시작하여, 위치를 잡기 위한 명시적 계산이 필요합니다. 최종 페이지 수를 얻으려면 <code>PdfTemplate</code> 패턴을 통해 추가적인 복잡성이 필요하며, 이는 <code>OnCloseDocument</code> 동안 채워지는 패턴으로, 이미 복잡한 워크플로에 추가적인 보일러플레이트 코드를 추가하는 패턴입니다.</p> <p>웹 개발 배경의 개발자들에게 이 좌표 기반 접근 방식은 선언적 HTML/CSS 모델과는 상이하게 느껴집니다. 각 위치 결정은 페이지 크기, 여백 오프셋 및 텍스트 측정을 이해하는 것이 필요하며, 이는 HTML 기반 접근 방식에서는 추상화됩니다.</p> <p>iText 7은 또한 AGPL 라이선스 하에 운영되며, iTextSharp 또는 iText 7을 사용하는 애플리케이션은 상업적 라이선스를 구매하지 않으면 오픈 소스여야 합니다. 이는 상용 프로젝트를 위한 라이브러리를 선택할 때 중요한 사항입니다.</p> </section> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-36-49-36-49-36-49-36-49-36-49" data-heading-level="2" data-heading-text="두 접근 방식은 어떻게 비교됩니까?"> <h2 id="anchor-36-49-36-49-36-49-36-49-36-49">두 접근 방식은 어떻게 비교됩니까?</h2> <p>특정 기능을 나란히 볼 때 차이점이 더 명확해집니다. 다음 표는 주요 차이점을 요약합니다:</p> <table class="content__data-table" data-content-table> <caption>IronPDF vs iText 7 헤더 및 바닥글 기능 비교</caption> <thead> <tr> <th>특징</th> <th>IronPDF</th> <th>iText 7 / iTextSharp</th> </tr> </thead> <tbody> <tr> <td>구현 스타일</td> <td>렌더러 옵션에서 속성 할당</td> <td>IEventHandler를 구현하는 이벤트 핸들러 클래스</td> </tr> <tr> <td>HTML/CSS 지원</td> <td>HtmlHeaderFooter를 통한 전체 HTML 및 CSS</td> <td>기본 HTML 지원 없음; 저수준 캔버스 그리기 필요</td> </tr> <tr> <td>페이지 번호 합계</td> <td>`{total-pages}` 필드를 통한 자동화</td> <td>OnCloseDocument에서 PdfTemplate을 채워야 함</td> </tr> <tr> <td>헤더의 이미지</td> <td>BaseUrl로 표준 HTML `<img loading="lazy" class="img-responsive add-shadow img-popup" alt=" related to 두 접근 방식은 어떻게 비교됩니까?">` 태그 사용</td> <td>이미지 객체 및 수동 위치 지정 필요</td> </tr> <tr> <td>기존 PDF에 추가</td> <td>AddHtmlHeaders / AddHtmlFooters 메서드</td> <td>스탬퍼 또는 이벤트 루프를 통해 재처리 필요</td> </tr> <tr> <td>페이지별 타겟팅</td> <td>메서드에 전달된 페이지 인덱스 목록</td> <td>이벤트 핸들러 내부의 조건부 논리</td> </tr> <tr> <td>라이선스 모델</td> <td>무료 체험 제공 상업용</td> <td>AGPL (오픈 소스) 또는 상업적</td> </tr> <tr> <td>크로스 플랫폼</td> <td>윈도우, 리눅스, macOS; Docker 준비 완료</td> <td>윈도우, 리눅스, macOS</td> </tr> </tbody> </table> <p>문제를 해결할 때 개발 경험도 크게 다릅니다. IronPDF의 HTML 기반 접근 방식은 PDF 생성 코드를 통합하기 전에 브라우저에서 헤더 디자인을 미리 볼 수 있다는 것을 의미합니다. 문제가 있는 경우 익숙한 브라우저 개발자 도구로 HTML 및 CSS를 조정할 수 있습니다. iText 7에서는 위치 지정 문제를 디버깅하려면 테스트 PDF를 반복적으로 생성하고 좌표를 수동으로 측정해야 합니다.</p> <p>HTML 기반 접근 방식은 기존 웹 개발 기술을 직접 적용할 수 있음을 의미합니다. HTML 및 CSS로 달성 가능한 모든 레이아웃은 IronPDF 헤더 및 푸터에서 작동하며, 플렉스박스 배열에서 이미지 그리드까지 가능합니다. <a href="/ko/examples/html-headers-and-footers/" target="_blank">HTML Headers and Footers 예제</a>는 추가적인 스타일링 가능성을 보여줍니다.</p> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-36-49-36-49-36-49-36-49-36-49-36-49" data-heading-level="3" data-heading-text="헤더 및 푸터 모양 사용자 정의"> <h3 id="anchor-36-49-36-49-36-49-36-49-36-49-36-49">헤더 및 푸터 모양 사용자 정의</h3> <p>헤더 및 푸터의 세부 조정에는 위치 및 시각적 표현에 영향을 미치는 여러 속성이 포함됩니다. <code>TextHeaderFooter</code> 클래스는 이러한 사용자 정의 옵션을 제공합니다:</p> <pre class='naked-code'><code class="language-csharp">using IronPdf; using IronSoftware.Drawing; var renderer = new ChromePdfRenderer(); var footer = new TextHeaderFooter { LeftText = "Confidential", CenterText = "{pdf-title}", RightText = "Page {page} of {total-pages}", Font = FontTypes.Arial, FontSize = 9, DrawDividerLine = true, DrawDividerLineColor = Color.Gray }; renderer.RenderingOptions.TextFooter = footer; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>"); pdf.SaveAs("board-report.pdf");</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="클릭하여 복사" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="클릭하여 복사" data-copied-text="클립보드에 복사됨" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="전체 화면 모드" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="전체 화면 종료" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using IronPdf; using IronSoftware.Drawing; var renderer = new ChromePdfRenderer(); var footer = new TextHeaderFooter { LeftText = "Confidential", CenterText = "{pdf-title}", RightText = "Page {page} of {total-pages}", Font = FontTypes.Arial, FontSize = 9, DrawDividerLine = true, DrawDividerLineColor = Color.Gray }; renderer.RenderingOptions.TextFooter = footer; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>"); pdf.SaveAs("board-report.pdf");</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports IronPdf Imports IronSoftware.Drawing Dim renderer As New ChromePdfRenderer() Dim footer As New TextHeaderFooter With { .LeftText = "Confidential", .CenterText = "{pdf-title}", .RightText = "Page {page} of {total-pages}", .Font = FontTypes.Arial, .FontSize = 9, .DrawDividerLine = True, .DrawDividerLineColor = Color.Gray } renderer.RenderingOptions.TextFooter = footer renderer.RenderingOptions.MarginBottom = 20 Dim pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>") pdf.SaveAs("board-report.pdf")</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p><code>Font</code> 속성은 <code>IronSoftware.Drawing.FontTypes</code>에서 제공하는 값을 허용하며, 헬베티카, 아리아, 쿠리어, 타임즈 뉴로만 등을 포함합니다. <code>DrawDividerLine</code> 속성은 푸터와 본문 내용 사이에 전문적인 수평선을 추가합니다. <code>DrawDividerLineColor</code>을 사용하여 선 색상을 조정하여 브랜드 색상이나 문서 테마에 맞출 수 있습니다.</p> <p>HTML 기반의 헤더 및 푸터의 경우, <code>LoadStylesAndCSSFromMainHtmlDocument</code> 속성은 렌더링 중인 주요 문서의 스타일을 선택적으로 상속하여 헤더와 본문 콘텐츠 간의 시각적 일관성을 보장합니다. 이는 주요 문서가 사용자 정의 CSS를 사용할 때 특히 유용하며, 이는 헤더 및 푸터 영역에도 적용되어야 합니다.</p> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-5.webp" alt="C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 5 - 플랫폼 간 호환성" loading="lazy" class="img-responsive add-shadow img-popup" width="1530" height="655" /></p> </section> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-36-49-36-49-36-49-36-49-36-49" data-heading-level="3" data-heading-text="크로스 플랫폼 및 컨테이너 배포"> <h3 id="anchor-36-49-36-49-36-49-36-49-36-49">크로스 플랫폼 및 컨테이너 배포</h3> <p>현대 .NET 응용 프로그램은 종종 Linux 컨테이너, Azure App Services 또는 AWS Lambda 함수에 배포됩니다. IronPDF는 추가 구성 없이 Windows, Linux 및 macOS 전반에 걸쳐 크로스 플랫폼 배포를 지원합니다. 라이브러리는 기본적으로 Docker 컨테이너에서 작동하므로 마이크로서비스 아키텍처 및 클라우드 네이티브 응용 프로그램에 적합합니다.</p> <p>이 크로스 플랫폼 기능은 헤더 및 푸터 기능으로 확장되며, Windows 개발 머신에서 헤더와 함께 PDF를 생성하는 동일한 코드는 Linux 프로덕션 서버에 배포되었을 때 동일한 출력을 생성합니다. 추가 폰트를 설치하거나 렌더링 엔진을 구성하거나 플랫폼별 코드 경로를 처리할 필요가 없습니다.</p> <p>컨테이너 된 작업 부하를 실행하는 팀을 위해, <a href="/ko/get-started/linux/" target="_blank">IronPDF Docker 배포 문서</a>는 다양한 기본 이미지 및 오케스트레이션 플랫폼에 대한 구성 가이드를 제공합니다. 라이브러리의 환경 간 일관된 동작은 PDF 생성 워크플로에서 버그의 일반적인 원인을 제거합니다.</p> <p><a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/" target="_blank" rel="nofollow noopener noreferrer">Microsoft의 .NET 문서</a>에 따르면, 컨테이너 된 .NET 응용 프로그램은 환경 전반의 일관된 런타임 동작의 이점을 제공합니다 -- PDF 생성 작업을 위한 IronPDF의 렌더링 엔진이 강화하는 원칙입니다. 마찬가지로, <a href="https://docs.docker.com/get-started/" target="_blank" rel="nofollow noopener noreferrer">Docker의 공식 문서</a>는 PDF 생성 서비스에 직접 적용되는 .NET 작업 부하를 컨테이너화하는 모범 사례를 설명합니다.</p> <p><a href="https://itextpdf.com/resources/api-documentation" target="_blank" rel="nofollow noopener noreferrer">iText 7 문서</a>는 크로스 플랫폼 지원을 확인하지만, 이벤트 구동 모델의 추가적인 복잡성은 HTML 기반 선언적 접근 방식보다 크로스 플랫폼 렌더링 문제의 디버깅이 더 복잡할 수 있습니다.</p> </section> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-36-49-36-49-36-49" data-heading-level="2" data-heading-text="다음 단계는 무엇입니까?"> <h2 id="anchor-36-49-36-49-36-49">다음 단계는 무엇입니까?</h2> <p>IronPDF를 사용하여 PDF 문서에 헤더 및 푸터를 구현하는 데 몇 분밖에 걸리지 않습니다. NuGet 패키지 관리자를 통해 라이브러리를 설치하십시오:</p> <pre class='naked-code'><code class="language-bash">Install-Package IronPdf dotnet add package IronPdf</code></pre> <div class="code-content code-content-inner" > <div class="code_window" > <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="클릭하여 복사" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="클릭하여 복사" data-copied-text="클립보드에 복사됨" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="전체 화면 모드" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="전체 화면 종료" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-shell"><code>Install-Package IronPdf dotnet add package IronPdf</code></pre> </div> <div class="code_window_bottom"> <span class="pull-right"><span class="ls-span" style='font-weight: 600'>SHELL</span> </div> </div> </div> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-10.webp" alt="C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 10 - 설치" loading="lazy" class="img-responsive add-shadow img-popup" width="1280" height="818" /></p> <p>여기에서, 이러한 리소스는 더 나아가는데 도움이 될 것입니다:</p> <ul> <li><strong><a href="/ko/docs/" target="_blank">시작하기 문서</a></strong> -- 전체 PDF 생성 및 조작 기능을 다룹니다</li> <li><strong><a href="/ko/how-to/headers-and-footers/" target="_blank">헤더 및 푸터 사용 설명서</a></strong> -- 모든 헤더 및 푸터 시나리오에 대한 단계별 지침</li> <li><strong><a href="/ko/examples/html-headers-and-footers/" target="_blank">HTML 헤더 및 푸터 예제</a></strong> -- HTML 기반 헤더에 대한 실행 가능한 코드 샘플</li> <li><strong><a href="/ko/examples/adding-headers-and-footers-advanced/" target="_blank">고급 헤더 및 푸터 예제</a></strong> -- 페이지별 타겟팅 및 홀/짝수 페이지 구분</li> <li><strong><a href="/ko/object-reference/api/IronPdf.TextHeaderFooter.html" target="_blank">TextHeaderFooter API 참조</a></strong> -- 텍스트 기반 헤더 및 푸터에 대한 전체 속성 목록</li> <li><strong><a href="/ko/object-reference/api/IronPdf.HtmlHeaderFooter.html" target="_blank">HtmlHeaderFooter API 참조</a></strong> -- HTML 기반 머리글 및 바닥글을 위한 전체 API</li> <li><strong><a href="/ko/get-started/linux/" target="_blank">Docker 배포 가이드</a></strong> -- Linux 컨테이너 및 클라우드 환경을 위한 구성</li> <li><strong><a href="/ko/licensing/" target="_blank">IronPDF 라이선스 옵션</a></strong> -- 개인 개발자부터 기업 팀까지의 계획</li> </ul> <p><a href="#trial-license" data-modal-id="trial-license" class="js-modal-open">무료 체험판 시작하기</a>하여 귀하의 프로젝트에서 머리글 및 바닥글 구현을 테스트하십시오. 체험판은 모든 기능을 포함하며 기능에 대한 시간 제한이 없으므로 라이선스를 결정하기 전에 실제 PDF 문서 요구 사항과 비교하여 라이브러리를 평가할 수 있습니다.</p> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-11.webp" alt="C#로 iTextSharp과 IronPDF를 사용하여 PDF에 헤더와 푸터 추가하는 방법 예제: 이미지 11 - 라이선스" loading="lazy" class="img-responsive add-shadow img-popup" width="1757" height="741" /></p> <p>C#에서 PDF 문서에 머리글 및 바닥글을 추가하는 것은 선택한 라이브러리에 따라 간단할 수도 복잡할 수도 있습니다. iText 7은 이벤트 핸들러와 캔버스 작업을 통해 저수준의 제어를 제공하지만, IronPDF는 친숙한 HTML 및 CSS 개념을 적용하는 API를 통해 동일한 기능을 제공합니다. 빠른 구현과 유지 보수 가능한 코드를 우선시하는 개발자에게 IronPDF는 수십 줄의 코드, 핸들러 클래스, 셀 구성 및 테이블 구조를 단 몇 가지 속성 할당으로 감소시킵니다.</p></section> </div> <section id="article__faqs" class="bg" style="min-height: 500px; contain-intrinsic-size: auto 1065px;"> <h2 class="article__faqs__heading-title">자주 묻는 질문</h2> <div class="article__faqs__questions-and-answers container-fluid"> <div class="tab-pane in active" id="ta-faq"> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">iTextSharp를 사용하여 PDF에 헤더와 푸터를 추가할 수 있는 방법은?</h3> <p class="question-answer">iTextSharp를 사용하여 PDF에 헤더와 푸터를 추가하려면, PDF 생성 과정에서 문서의 페이지를 사용자 정의할 수 있는 페이지 이벤트 핸들러를 정의할 수 있습니다. 이는 원하는 헤더와 푸터 내용을 포함하도록 OnEndPage 메소드를 재정의하는 것을 포함합니다.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">IronPDF를 사용하여 헤더와 푸터를 추가하는 것의 장점은 무엇입니까?</h3> <p class="question-answer">IronPDF는 간단한 API를 제공하여 헤더와 푸터를 추가하는 과정을 단순화하고 다양한 스타일링 옵션을 지원합니다. C# 프로젝트와 매끄럽게 통합되며, HTML을 PDF로 변환하는 기능 등 추가 기능을 제공하여 PDF 조작에 유용한 도구가 됩니다.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">IronPDF와 iTextSharp를 함께 사용할 수 있습니까?</h3> <p class="question-answer">예, IronPDF와 iTextSharp를 C# 프로젝트에서 함께 사용할 수 있습니다. iTextSharp는 프로그래밍으로 PDF를 조작하는데 탁월하며, IronPDF는 HTML을 PDF로 변환하는 등의 추가 기능을 제공하여 이를 보완합니다. 이는 헤더와 푸터를 동적으로 생성하는 데 유용할 수 있습니다.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">IronPDF를 사용하여 헤더와 푸터를 스타일링할 수 있는 방법이 있습니까?</h3> <p class="question-answer">IronPDF는 HTML과 CSS를 사용하여 헤더와 푸터를 스타일링할 수 있게 해줍니다. 이는 개발자에게 PDF 문서를 위한 매력적인 디자인과 레이아웃을 만들 수 있는 유연성을 제공합니다.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">IronPDF는 헤더와 푸터에 페이지 번호를 어떻게 처리합니까?</h3> <p class="question-answer">IronPDF는 자동으로 헤더와 푸터에 페이지 번호를 삽입할 수 있습니다. 이는 페이지 번호의 포맷을 필요에 맞게 조정할 수 있는 옵션을 제공하며, 총 페이지 수 포함이나 시작 페이지 번호의 조정 등을 포함할 수 있습니다.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">IronPDF를 사용하여 C#으로 PDF를 조작할 때의 장점은 무엇입니까?</h3> <p class="question-answer">IronPDF를 사용하여 C#으로 PDF를 조작할 때 강력한 타입 안정성, .NET 애플리케이션과의 쉬운 통합, 개발 과정을 개선하는 폭넓은 라이브러리와 도구에 접근할 수 있다는 장점이 있습니다. IronPDF의 C# API는 직관적이고 사용자 친화적으로 설계되어 있어, 모든 수준의 개발자가 접근하기 용이합니다.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">IronPDF를 사용하여 기존 문서를 PDF로 변환할 수 있습니까?</h3> <p class="question-answer">네, IronPDF는 HTML, ASPX 등의 웹 기반 콘텐츠를 포함한 다양한 문서 형식을 PDF로 변환할 수 있습니다. 이 기능은 특히 웹 페이지 또는 동적으로 생성된 콘텐츠로부터 PDF를 만들 때 유용합니다.</p> </div> </div> </div> </div> </section> <script> document.addEventListener("DOMContentLoaded", function() { onViewLoadAsync( "#article__faqs", function() { }, ["common__faqs.js", "content__faqs.css", "article__faqs.css"] ); const articleFaqs = document.querySelector("#article__faqs .tab-pane"); if (!articleFaqs) return; articleFaqs.addEventListener("click", (evt) => { const targeted = evt.target.closest(".faq-item"); if (!targeted) return; targeted.classList.toggle("faq-item--active"); }); }); </script> <div class="author-details" id="author"> <div class="d-flex column-gap-4"> <div class="col_image"> <img loading="lazy" src="/img/how-tos/authors/curtis.png" alt="커티스 차우" class="author-image" width="64" height="64"> </div> <div class="col_detail"> <div class="author-details__connect"> <div class="d-flex align-items-center flex-wrap"> <div class="author-details__connect__author"> <div class="author-name text-no-wrap"> <a href="https://ironsoftware.com/ko/about-us/authors/curtis/" aria-label="">커티스 차우</a> </div> <div class="author-details__connect__linkedin"> <a href="https://www.linkedin.com/in/curtis-chau-937368213/" target="_blank"><i class="fa-brands fa-linkedin" target="_blank" rel="nofollow"></i></a> </div> <div class="author-details__connect__website"> <a href="https://github.com/CurtisChau" target="_blank"><i class="fa-solid fa-globe"></i></a> </div> </div> <div class="author-details__chat"> <a href="#live-chat-support"><i class="fa-solid fa-comments"></i>  <span class="d-none d-md-inline">지금 바로 엔지니어링 팀과 채팅하세요 </a></span> </div> </div> </div> <div class="author-job-title">기술 문서 작성자</div> <div class="author-bio"><p>커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.</p><p> 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.</p></div> </div> </div> </div> <div class="feedback_form"> </div> <div class="blog_end_line"></div> <div class="page_blog_listing module section_blog_listing"> <section class="col-12" id="blog_post--related-articles"> <h2>관련 기사</h2> <div class="container-fluid blog_post--related-articles__list"> <div class="row row-cols-1 row-cols-sm-2 row-cols-lg-3 g-4"> <div class="col"> <article class="h-100"> <a href="/ko/blog/using-ironpdf/ironpdf-monthly-statements/" class="d-block h-100 item_box" title="월별 계정 명세서를 PDF 문서로 생성하기"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">업데이트됨 <time datetime="2026-03-31">3월 30, 2026</time></span></div> <h3 class="post_header">월별 계정 명세서를 PDF 문서로 생성하기</h3> <p class="post_description">개발자는 IronPDF C# PDF 라이브러리를 사용하여 외부 서비스에 의존하지 않고도 .NET 프로젝트 내에서 HTML을 신뢰할 수 있는 PDF 파일로 변환할 수 있습니다.</p> <p class="read_more">더 읽어보기<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> <div class="col"> <article class="h-100"> <a href="/ko/blog/using-ironpdf/ironpdf-form-to-pdf/" class="d-block h-100 item_box" title="IronPDF를 사용하여 온라인 지원서를 PDF 요약으로 전환하기"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"><img class="object-fit-cover" alt="IronPDF를 사용하여 온라인 지원서를 PDF 요약으로 전환하기" src="/static-assets/pdf/blog/ironpdf-form-to-pdf/ironpdf-form-to-pdf-4.webp" width="1428" height="517" decoding="async" loading="lazy"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">업데이트됨 <time datetime="2026-03-31">3월 30, 2026</time></span></div> <h3 class="post_header">IronPDF를 사용하여 온라인 지원서를 PDF 요약으로 전환하기</h3> <p class="post_description">IronPDF를 사용하여 정부 규정 준수 목적에 유용한 웹 양식 제출에 대한 추적 가능한 기록을 생성하는 방법을 알아보세요.</p> <p class="read_more">더 읽어보기<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> <div class="col"> <article class="h-100"> <a href="/ko/blog/using-ironpdf/ironpdf-fintech-receipts/" class="d-block h-100 item_box" title="핀테크 앱을 위한 C# PDF 영수증 및 거래 기록"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">업데이트됨 <time datetime="2026-03-31">3월 30, 2026</time></span></div> <h3 class="post_header">핀테크 앱을 위한 C# PDF 영수증 및 거래 기록</h3> <p class="post_description">IronPDF를 사용하여 서비스 시점에서 추적 가능하고 타임스탬프가 찍힌 트랜잭션 기록을 만드는 방법을 알아보세요</p> <p class="read_more">더 읽어보기<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> </div> </div> </section> </div> <div class="blog_end_line"></div> <div class="blog_bottom_nav"><div class="blog_bottom_nav row row-cols-2"><div class="text-start text-truncate"><a href="/ko/blog/using-ironpdf/dynamic-pdf-generation/" class="link previous">IronPDF를 사용하여 .NET에서 PDF를 동적으로 생성하는 방법</a></div><div class="text-end text-truncate"><a href="/ko/blog/using-ironpdf/retrieve-pdf-file-from-database-apr-net/" class="link next">ASP.NET에서 데이터베이스에...</a></div></div></div> </article> </div> <div id="blog_sidebar--right" class="blog_sidebar--right"> <aside id="blog_post--right_content" class="right_column right_sidebar_wrapper"> <div class="sticky-top z-0 specific_sticky_height"> <!-- Tutorial Videos Start --> <!-- Tutorial Videos End --> <div class="block_on_this_page"> <div id="blog_right_scrollspy_menu" class="menu_wrapper"> <h2 class="table_of_contents--header">이 페이지에서</h2> <ul id="scroll-menu" class="blog_post_on_this_page"> <li> <a href="#anchor-c-36-49-pdf-36-49-36-49-36-49-36-49-36-49" class=""><span>C#에서 PDF 문서에 헤더 및 풋터 추가하기</span></a> </li> <li> <a href="#anchor-36-49-36-49-pdf-36-49-36-49-36-49-36-49" class=""><span>전문 문서에서 PDF 헤더와 풋터가 중요한 이유는?</span></a> </li> <li> <a href="#anchor-c-36-49-36-49-36-49-36-49-36-49-36-49-36-49" class=""><span>C#에서 텍스트 헤더 및 풋터를 어떻게 추가합니까?</span></a> <ul class=""> <li class=""> <a href="#anchor-36-49"><span>출력</span></a> </li> </ul> </li> <li> <a href="#anchor-html-36-49-36-49-36-49-36-49-36-49" class=""><span>HTML 스타일의 헤더와 푸터를 어떻게 만드나요?</span></a> </li> <li> <a href="#anchor-36-49-pdf-36-49-36-49-36-49-36-49-36-49-36-49" class=""><span>기존 PDF 문서에 헤더를 어떻게 추가할 수 있나요?</span></a> <ul class=""> <li class=""> <a href="#anchor-36-49"><span>입력</span></a> </li> <li class=""> <a href="#anchor-36-49"><span>출력</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49-36-49-36-49-36-49-36-49-36-49-36-49-36-49" class=""><span>다양한 페이지에 다른 헤더를 어떻게 추가할 수 있나요?</span></a> <ul class=""> <li class=""> <a href="#anchor-36-49"><span>출력</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49-36-49-36-49-36-49-36-49-36-49-36-49-36-49-36-49" class=""><span>페이지 번호를 넘어선 동적 콘텐츠를 어떻게 구현할 수 있나요?</span></a> </li> <li> <a href="#anchor-itext-7-36-49-36-49-36-49-36-49" class=""><span>iText 7 접근 방식은 어떻게 보이나요?</span></a> <ul class=""> <li class=""> <a href="#anchor-36-49"><span>출력</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49-36-49-36-49-36-49-36-49" class=""><span>두 접근 방식은 어떻게 비교됩니까?</span></a> <ul class=""> <li class=""> <a href="#anchor-36-49-36-49-36-49-36-49-36-49-36-49"><span>헤더 및 푸터 모양 사용자 정의</span></a> </li> <li class=""> <a href="#anchor-36-49-36-49-36-49-36-49-36-49"><span>크로스 플랫폼 및 컨테이너 배포</span></a> </li> </ul> </li> <li> <a href="#anchor-36-49-36-49-36-49" class=""><span>다음 단계는 무엇입니까?</span></a> </li> </ul> </div> </div> <div> <div class="nuget-sidebar-wrapper nuget-sidebar-wrapper--right-sidebar nuget-variant-3"> <div class="nuget-sidebar-header-block"> <div class="nuget-sidebar-header-block__logo-block"> <a href="https://nuget.org/packages/IronPdf" target="_blank"><img loading="lazy" src="/img/nuget.blue.svg" alt="NuGet에서 무료로 개발할 수 있습니다." width="38" height="38" data-modal-id="trial-license-after-download" class="js-modal-open"></a> </div> <div class="nuget-sidebar-header-block__text-block" data-bs-toggle="modal"> <p class="nuget-sidebar-header-block__text-block__big-text"> <a href="https://nuget.org/packages/IronPdf" target="_blank" data-modal-id="trial-license-after-download" class="js-modal-open"> 설치 방법 <span class="nuget-sidebar-header-block__text-block__big-text--blue">NuGet</span> <span class="nuget-sidebar-header-block__text-block__small-text">nuget.org/packages/<span class="text-block__small-text--inline-block">IronPdf</span></span> </a> </p> </div> </div> <div class="nuget-sidebar-cli vwo-nuget-copy vwo-nuget-copy--ironpdf" data-bs-custom-class="tooltipCopyToClipboard"> <div class="nuget-sidebar-cli__command"> <p class="nuget-sidebar-cli__command__text"> PM > <span class="js-nuget-sidebar-cli__command__text">Install-Package IronPdf</span> </p> </div> <div class="nuget-sidebar-cli__copy-block"> <span class="fas copy-icon-white"></span> </div> </div> </div> </div> <div class="join_bug_bounty"> <h2>문제 신고하기</h2> <ul class="list-unstyled rt-list"> <li class="list-unstyled__item-flex-align-items-center"><i class="fa-regular fa-pen-to-square"></i>   <button class="js-modal-open" data-modal-id="article-feedback-modal">버그 바운티에 참여하고 철제 아이템을 획득하세요!</button> </li> </ul> </div> </div> </div> </aside> </div> </div> <!-- offcanvas menu --> <div id="offcanvas_blog_right_sidebar" class="offcanvas offcanvas-end offcanvas_blog_right_sidebar" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" aria-labelledby="offcanvas_blog_right_sidebar"> <!-- button toggle offcanvas right sidebar --> <div id="button_toggle_blog_right_sidebar" class="button_toggle_blog_right_sidebar" data-bs-toggle="offcanvas" data-bs-target="#offcanvas_blog_right_sidebar" aria-controls="offcanvasScrolling"> <div class="button_icons_open_offcanvas"><i class="fa-solid fa-angle-left"></i><i class="fa-solid fa-list-ul ms-1"></i></div> <div class="button_icons_close_offcanvas" style="display:none;"><i class="fa-solid fa-x"></i></div> </div> <div class="offcanvas-body" style="box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.25); background-color:#fafafb; padding:0 20px 0;"> <div id="place_holder_offcanvas_blog_right_sidebar"></div> </div> </div> <!-- A/B test new content layout 2025 May, end --> <section style="container-type: inline-size;"></section> </main> <section class="bifrost"></section> <div class="modal fade img-popup-modal" id="img-popup-modal" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog" data-bs-dismiss="modal"> <div class="modal-loaded donotdelete" style="font-size: 1px; display: none;"></div> <div class="modal-content" > <div class="modal-title"> <!--<button type="button" class="close" data-bs-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>--> <i data-bs-dismiss="modal" aria-hidden="true" class="fas fa-times slide-out-close"></i> </div> <div class="modal-body"> <img class="img-popup-fullsize" loading="lazy" src="" alt=" related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기"> <p class="img-popup-caption"></p> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var element = document.querySelector("#img-popup-modal"); document.onElementViewportIntersect(element, function() { importModal(["image-popup.js", "modals/image-popup.css"], "img-popup-modal"); }); }) </script> <div class="modal cv-auto" id="download-modal"> <div class="modal-dialog products-download dm-IronPDF ironpdf"> <div class="modal-loaded donotdelete"></div> <div class="modal-content"> <div class="modal-header"> <i data-bs-dismiss="modal" aria-hidden="true" class="fas fa-times slide-out-close"></i> </div> <div class="modal-body"> <div class="dm-col-left"> <div class="products-title">IronPDF를 무료로 사용해 보세요</div> <div class="subtitle">5분 만에 설정 완료</div> <div class="image-box"> <img class="img-responsive" loading="lazy" src="/img/license-types/icon-lightbulb.svg" alt="Icon Lightbulb related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기"> </div> </div> <div class="dm-col-right"> <div class="row"> <div class="col-md-6"> <div class="js-modal-open product-item nuget vwo-nuget-copy" data-modal-id="trial-license-after-download" > <div class="product-section" style="padding: 33px 25px 28px;"> <div class="row"> <div class="col-lg-2 product-image"> <img class="img-responsive add-shadow" loading="lazy" src="/img/nuget-logo.svg" alt="PDF용 C# NuGet 라이브러리" > </div> <div class="col-lg-10 product-info"> <div class="products-title"><span>NuGet을</span> 사용하여 설치하세요</div> <div class="subtitle"><strong>버전:</strong> 2026.4</div> </div> </div> <div class="js-open-modal-ignore copy-nuget-section" data-toggle="tooltip" data-copy-text="클릭하여 복사" , data-copied-text="클립보드에 복사됨" data-placement="top" title="클릭하여 복사"> <div class="copy-nuget-row vwo-nuget-copy"> <pre class="install-script">Install-Package IronPdf</pre> <div class="copy-button"> <button class="btn btn-default copy-nuget-script" type="button" data-toggle="popover" data-placement="top" data-content="클립보드에 복사됨" aria-label="패키지 관리자 명령어를 복사하세요" data-original-title="클릭하여 복사" title="클릭하여 복사"> <span class="fas copy-icon-white"></span> </button> </div> </div> </div> <div class="nuget-link"> nuget.org/packages/IronPdf/ </div> </div> <div class="product-section"> <ol class="product-description"> <li><span>솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택합니다.</span></li> <li><span>찾아보기를 선택하고 "IronPDF"를 검색하세요.</span></li> <li><span>패키지를 선택하고 설치하세요</span></li> </ol> </div> </div> </div> <div class="col-md-6"> <div class="js-modal-open product-item dll" data-modal-id="trial-license-after-download" > <div class="product-section"> <div class="row"> <div class="col-lg-2 product-image"> <img class="img-responsive add-shadow" loading="lazy" src="/img/dll-img.png" alt="C# PDF DLL" > </div> <div class="col-lg-10 product-info"> <div class="products-title"><span>DLL</span> 다운로드</div> <div class="subtitle"><strong>버전:</strong> 2026.4</div> </div> </div> <div class="download-dll-section"> <a class="btn btn-red download-library-dropdown dark-version" href="/packages/IronPdf.zip" data-toggle="tooltip" data-placement="bottom" data-html="true" title="<div class='library_download_dropdown_tooltip'><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-microsoft'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>윈도우용</span></span></div><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.MacOs.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-apple'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>macOS용</span></span></div><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.Linux.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-linux'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>리눅스용</span></span></div></div>" download><i class="fas fa-download"></i> 지금 다운로드하세요</a> <div class="subtitle">또는 <a href="/packages/IronPdfInstaller.zip" class="ga-windows-installer" title="Windows용 Iron Software Installer를 다운로드하세요.">여기에서</a> Windows 설치 프로그램을 다운로드하십시오.</div> </div> </div> <div class="product-section"> <ol class="product-description"> <li><span>IronPDF를 다운로드하고 솔루션 디렉터리 내의 ~/Libs와 같은 위치에 압축을 푸세요.</span></li> <li><span>Visual Studio 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭합니다. 찾아보기를 선택하고 "IronPDF.dll"을 선택합니다.</span></li> </ol> </div> </div> </div> </div> <div class="licensing-link"> 라이선스 가격은 <a href="/ko/licensing/" target="_blank">749달러</a> 부터 시작합니다. </div> </div> </div> <div class="dm-modal-footer"> <div class="dm-col-left"> </div> <div class="dm-col-right"> <p class="helpscout-text">궁금한 점이 있으신가요? 개발팀에 <a href="#live-chat-support">문의하세요</a> .</p> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { setupModalPopup("#download-modal", "download-modal", ["modals/download.css", "download-modal.js"], () => { const dlSection = qs("#download-modal .col-md-6, #download-modal .ironpdf-java__maven-install-section"); const packageUrl = "/packages/IronPdf.zip"; const filename = "IronPdf.zip" if (!dlSection) return; registerDownloadAction(dlSection, "click", packageUrl, filename); }); }); </script> <div class="modal cv-auto" id="trial-license-after-download" tabindex="-1" data-bs-backdrop="true" data-form-id="b93685fb-4445-4114-8b0a-4af3ec564c41" data-ironproduct-key="ironpdf" data-js-modal-id="trial-license-after-download"> <div class="modal-config" data-for-product="ironpdf"> <span class="trial-license-inactive-timeout" data-trial-license-inactive-timeout="15"></span> <span class="trial-license-inactive-timeout-interval" data-trial-license-inactive-timeout-interval="1000"></span> <span class="trial-license-reset-state-in-days" data-trial-license-reset-state-in-days="1"></span> </div> <div class="modal-dialog"> <div class="modal-content modal-content_border-0 modal-content_padding-0"> <div class="trial-license-after-download-modal__status__css-loaded" style="display:none; font-size:0px;"><!-- a place holder, when css completely load the font-size will change to 1px; then it will trigger js to make modal visible --></div> <div class="modal-header"> <i class="slide-out-close-bold" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body modal-body_padding-0"> <div class="modal-loaded donotdelete"></div> <div class="trial-license trial-license_light"> <div id="trial-after-download-meeting-form-fullscreen" style="display:none;"> <div style="style:font-size:24px; color:#fff; position:absolute; top:14px; right:21px; cursor:pointer;" data-bs-dismiss="modal"><i class="fa-solid fa-close"></i></div> <div style="position:absolute; left:50%; top:0; transform: translatex(-50%); background-color:#fff; width: 100%; max-width:840px; margin:0 auto; height:100%; z-index:-1"> <div class="iron_loader_wrapper"> <div class="iron_loader"></div> </div> </div> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/iron-software-sales/demo-trial?embed=true"></div> </div> <div class="after-download-modal-202504 d-none d-lg-flex"> <h2 class="iron_fs--40 iron_lh--12 iron_font--black mb-4 iron_color--deep_blue">Want to deploy IronSuite to a live project for FREE?</h2> <h3 class="iron_fs--20 iron_lh--14 iron_font--bold mb-3 iron_color--pink">What’s included?</h3> <ul class="feature_list_202504 iron_fs--18 iron_lh--12 iron_font--normal iron_color--black"> <li><i class="fa-solid fa-check iron_color--green"></i> Test in production without watermarks</li> <li><i class="fa-solid fa-check iron_color--green"></i> 30 days fully functional product</li> <li><i class="fa-solid fa-check iron_color--green"></i> 24/5 technical support during trial</li> </ul> <div class="product_list_202504 iron_fs--10 mt-4"> <div><img src="/img/main/library-explorer/library-explorer-logo-ironpdf.svg" width="50" height="50" alt="Logo of IronPDF" loading="lazy"><div class="iron_product_name ironpdf"><strong>IRON</strong>PDF</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironword.svg" width="50" height="50" alt="Logo of IronWORD" loading="lazy"><div class="iron_product_name ironword"><strong>IRON</strong>WORD</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironxl.svg" width="50" height="50" alt="Logo of IronXL" loading="lazy"><div class="iron_product_name ironxl"><strong>IRON</strong>XL</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironppt.svg" width="50" height="50" alt="Logo of IronPPT" loading="lazy"><div class="iron_product_name ironxl"><strong>IRON</strong>PPT</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironocr.svg" width="50" height="50" alt="Logo of IronOCR" loading="lazy"><div class="iron_product_name ironocr"><strong>IRON</strong>OCR</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironbarcode.svg" width="50" height="50" alt="Logo of IronBarcode" loading="lazy"><div class="iron_product_name ironbarcode"><strong>IRON</strong>BARCODE</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironqr.svg" width="50" height="50" alt="Logo of IronQR" loading="lazy"><div class="iron_product_name ironqr"><strong>IRON</strong>QR</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironzip.svg" width="50" height="50" alt="Logo of IronZIP" loading="lazy"><div class="iron_product_name ironzip"><strong>IRON</strong>ZIP</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironprint.svg" width="50" height="50" alt="Logo of IronPRINT" loading="lazy"><div class="iron_product_name ironprint"><strong>IRON</strong>PRINT</div></div> <div><img src="/img/main/library-explorer/library-explorer-logo-ironwebscraper.svg" width="50" height="50" alt="Logo of IronWEBSCRAPER" loading="lazy"><div class="iron_product_name ironwebscraper"><strong>IRON</strong>WEBSCRAPER</div></div> </div> </div> <div class="thankyouAfterSubmittedTrialFormAfterDownload202604"> <div> <div style="margin-bottom:32px;"><img src="/img/icons/greencheck_in_yellowcircle.svg" alt="Thank you for submitted a trial" width="100" height="100" loading="lazy"></div> <h2 class="iron_font--black iron_fs--36 iron_lh--12 iron_color--black m-0">Thank You</h2> <div class="mt-4 pt-2 iron_font--normal iron_fs--18 iron_lh--16 iron_color--black">Your trial key should be in the email.<br>If it is not, please contact<br><a href="mailto:support@ironsoftware.com" aria-label="Send email to our support" class="iron_font--medium iron_fs--18 iron_lh--16 iron_color--deep_blue iron_hover_color--pink">support@ironsoftware.com</a> </div> </div> </div> <div class="trial-license__action" style="min-height: 550px;" > <div class="trial-license__action-title" style=" "> 지금 바로 <strong>30일 무료 체험판 키를</strong> 받으세요. </div> <div class="trial-license__exit-intent-form-sent-title"> 감사합니다.<br> 라이선스 팀과 상담을 원하시면 다음 연락처로 문의해 주세요. </div> <div id="hubspot-form__thank_you" class="hubspot-form__thank_you"> <p><section class="formright_submitted"><img loading="lazy" src="/img/icons/greencheck_in_yellowcircle.svg" width="100" height="100" alt="배지_녹색체크_노란색원 안에"><div class="thank-you__header"> 임상시험 신청서가 제출되었습니다.<br> <em>성공적으로</em> .</div><p> 체험판 키는 이메일에 포함되어 있습니다.<br> 그렇지 않다면 연락주시기 바랍니다.<br> <a href="mailto:support@ironsoftware.com">support@ironsoftware.com</a></p></section></p> </div> <div id="hubspot-form__form__trial-license-after-download" class="hubspot-form__form-wrapper"> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { var trialLicenseHbsptOptions_form_1a = { region: "na1", portalId: "22630553", formId: "b93685fb-4445-4114-8b0a-4af3ec564c41", locale: "ko", target: "#trial-license-after-download .place_holder--form_1a", cssClass: "hsform_error_v2 hsform_floating_label hsform_intl_phone", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"\uc720\ud6a8\ud55c \uc774\uba54\uc77c \uc8fc\uc18c\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694.","firstname":"\uc774\ub984\uc744 \uc785\ub825\ud574 \uc8fc\uc138\uc694","countrycode":"","phone":"\uc720\ud6a8\ud55c \uc804\ud654\ubc88\ud638\uc5d0\ub294 \uc22b\uc790, +, -, \ub610\ub294 x\ub9cc \ud3ec\ud568\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","preferred_communication":"\uc120\ud638\ud558\ub294 \uc5f0\ub77d \ubc29\ubc95\uc744 \uc120\ud0dd\ud574 \uc8fc\uc138\uc694"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); buildCountryCodeForPhoneFields($form, 'div.hs-fieldtype-phonenumber'); removeHSFormPlaceHolder($form); }, onFormSubmitted: function($form, data) { trigger_goal('trial_form_submitted'); // trigger goal start // Fire Custom Event when form submited dataLayer.push({'event':'trial-from-submitted'}); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end setTimeout(function () { // $("#trial-license-after-download .trial-license__action-features").hide(); }, 0); // hide 1st form place holder // $("#trial-license-after-download .place_holder--form_1b").hide(); // $("#trial-license-after-download .place_holder--form_2").show(); /// push submited data to 2nd form setTimeout(function() { // $("#trial-license-after-download .trialFormTwo input[name='email']").val(data.submissionValues.email).change(); }, 1000); history.pushState("", document.title, window.location.pathname + "#trial-license-after-download-form-sent"); $("#trial-license-after-download .trial-license__action").hide(); $('#trial-license-after-download .thankyouAfterSubmittedTrialFormAfterDownload202604').show(); setTimeout(function() { // update iframe from data-src, start const email = data['submissionValues']['email']; const name = data['submissionValues']['firstname']; const phone = data['submissionValues']['phone']; var bookingFormUrl = $('#trial-after-download-meeting-form-fullscreen .meetings-iframe-container').attr('data-src'); // generate new data-src bookingFormUrl = bookingFormUrl + '&email=' + email; bookingFormUrl = bookingFormUrl + '&firstname=' + name; bookingFormUrl = bookingFormUrl + '&phone=' + phone; $('#trial-after-download-meeting-form-fullscreen .meetings-iframe-container').attr('data-src', bookingFormUrl); // update iframe from data-src, end // Show meeting form $("#trial-after-download-meeting-form-fullscreen").show(); // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { }); // listen for the meeting form submit, start // const meetingEventOrigin = 'https://meetings.hubspot.com'; const meetingEventOrigin = 'https://hub.ironsoftware.com'; function handleMessage(event) { // Validate the origin first if (event.origin === meetingEventOrigin) { // only if meetingBookSucceeded if (event.data?.meetingBookSucceeded === true) { // goal for meeting form of 3 steps trial window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(239);}); // Remove this listener after success window.removeEventListener('message', handleMessage); } } } // Register the listener window.addEventListener('message', handleMessage); // listen for the meeting form submit, end }, 200); }, translations: { ko: { fieldLabels: {"email":"\ud68c\uc0ac \uc774\uba54\uc77c \uc8fc\uc18c","firstname":"\uc774\ub984","countrycode":"\uc804\ud654\ubc88\ud638","phone":"\uc804\ud654 \ubc88\ud638","preferred_communication":"\uc120\ud638\ud558\ub294 \uc5f0\ub77d \ubc29\ubc95"} } }, submitText: "Continue", submitButtonClass: "hs-button primary large arrow_right", inlineMessage: "<div class=\"d-none\"></div>", }; // var for form 1b var trialLicenseHbsptOptions_form_1b = Object.assign({}, trialLicenseHbsptOptions_form_1a); trialLicenseHbsptOptions_form_1b.formId = "8c54dcae-960c-4452-b83c-06affb378052"; trialLicenseHbsptOptions_form_1b.target = "#trial-license-after-download .place_holder--form_1b"; // var for form 2 var trialLicenseHbsptOptions_form_2 = { region: "na1", portalId: "22630553", formId: "febf5e33-1edd-45f9-b9b0-6ead75fb1b9a", locale: "ko", cssClass: "trialFormTwo", target: "#trial-license-after-download .place_holder--form_2", inlineMessage: "<div class=\"d-none\"></div>", onFormSubmitted: function ($form, data) { // setCookie("stopFlag", "1", 1); setLocalStorageIfTrialSubmitted(); // Trigger HubSpot goal trigger_goal('second_trial_form_submitted'); $(".hubspot-form__form-wrapper").css("display", "none"); $("#trial-license-after-download .hubspot-form__thank_you").css("padding-top", "60px").show(); // Specific to modal #trial-license-after-download $("#trial-license-after-download .hubspot-form__thank_you section.formright_submitted").css("display", "block"); $("#trial-license-after-download .hubspot-form__thank_you").css("display", "block"); $("#trial-license-after-download .trial-license__action-title").css("display", "none"); $("#trial-license-after-download .trial-license__action-features-single, #trial-license .trial-license__action-features-single").css("display", "none"); // Specific to modal #trial-license $("#trial-license .trial-license__action-title").css("display", "none"); }, }; var selector = document.querySelector("#hubspot-form__form__trial-license-after-download"); const modalSelector = document.querySelector("#trial-license-after-download"); modalSelector?.addEventListener("shown.bs.modal", function() { embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_1a); embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_1b); embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_2); }, { once: true }); });</script> <div class="place_holder--form_1a vwo_ab_test_phone_extension_a"></div> <div class="place_holder--form_1b vwo_ab_test_phone_extension_b"></div> <div class="place_holder--form_2"></div> </div> <div class="trial-license__exit-intent-form-sent-action-button"> <a class="btn btn-red btn-red--exit-intent-form-sent" href="https://help.ironsoftware.com/meetings/ironsoftware/schedule-a-call-with-sales" target="_blank"> <i class="fa fa-phone-alt" aria-hidden="true"></i> 통화 일정을 잡으세요 </a> </div> <div class="trial-license__exit-intent-form-sent-description"> 궁금한 점이 있으신가요? 개발팀에 <a href="#live-chat-support" onclick="return show_helpscout(event)">문의하세요</a> . </div> <div class="flex-grow-1"><!-- spacer --></div> <div class="trial-license__action-features"> <div class="trial-license__action-features-single"> 신용카드나 계정 생성은 필요하지 않습니다. </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-after-download"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css"]; importModal(modals, "trial-license-after-download", debug()); }); }); </script> <div class="modal cv-auto" id="trial-license-after-download-form-sent" tabindex="-1" data-bs-backdrop="true" data-form-id="b93685fb-4445-4114-8b0a-4af3ec564c41" data-ironproduct-key="ironpdf" data-js-modal-id="trial-license-after-download-form-sent"> <div class="modal-config" data-for-product="ironpdf"> <span class="trial-license-inactive-timeout" data-trial-license-inactive-timeout="15"></span> <span class="trial-license-inactive-timeout-interval" data-trial-license-inactive-timeout-interval="1000"></span> <span class="trial-license-reset-state-in-days" data-trial-license-reset-state-in-days="1"></span> </div> <div class="modal-dialog"> <div class="modal-content modal-content_border-0 modal-content_padding-0"> <div class="trial-license-after-download-form-sent-modal__status__css-loaded" style="display:none; font-size:0px;"><!-- a place holder, when css completely load the font-size will change to 1px; then it will trigger js to make modal visible --></div> <div class="modal-header"> <i class="slide-out-close-bold" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body modal-body_padding-0"> <div class="modal-loaded donotdelete"></div> <div class="trial-license trial-license_light"> <div class="trial-license__action" style="min-height: 270px;" > <div class="trial-license__action-title" style=" "> <strong>감사합니다.<br> 라이선스 옵션을 확인하세요:</strong> </div> <div class="trial-license__exit-intent-form-sent-title"> 감사합니다.<br> 라이선스 팀과 상담을 원하시면 다음 연락처로 문의해 주세요. </div> <div class="trial-license__action-buttons" style=" "> <a class="trial-license__action-button trial-license__action-button_red trial-license__action-button_wide" style=" " href="/ko/licensing/" > <span class="trial-license__action-button-text"> 라이선스 보기 </span> </a> </div> <div class="trial-license__exit-intent-form-sent-action-button"> <a class="btn btn-red btn-red--exit-intent-form-sent" href="https://help.ironsoftware.com/meetings/ironsoftware/schedule-a-call-with-sales" target="_blank"> <i class="fa fa-phone-alt" aria-hidden="true"></i> 통화 일정을 잡으세요 </a> </div> <div class="trial-license__action-description trial-license__action-description_highlighted" style=" "> 궁금한 점이 있으신가요? <!-- --><a href="#live-chat-support" >연락 주세요</a><!-- --> 저희 개발팀과 함께. </div> <div class="trial-license__exit-intent-form-sent-description"> 궁금한 점이 있으신가요? 개발팀에 <a href="#live-chat-support" onclick="return show_helpscout(event)">문의하세요</a> . </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-after-download-form-sent"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css"]; importModal(modals, "trial-license-after-download-form-sent", debug()); }); }); </script> <script> function getHsProductCodeFromUrl() { const url = window.location.href; if (url.includes("ironpdf.com") || url.includes("ironpdf.local")) { if (url.includes("/java/")) return "pdf-java"; if (url.includes("/python/")) return "pdf-python"; if (url.includes("/nodejs/")) return "pdf-nodejs"; return "pdf"; } else if (url.includes("ironsoftware.com") || url.includes("ironsoftware.local")) { if (url.includes("/word/")) return "word"; if (url.includes("/ocr/")) return "ocr"; if (url.includes("/webscraper/")) return "webscraper"; if (url.includes("/barcode/")) return "barcode"; if (url.includes("/excel/")) return "excel"; if (url.includes("/qr/")) return "qr"; if (url.includes("/zip/")) return "zip"; if (url.includes("/word/")) return "word"; if (url.includes("/print/")) return "print"; if (url.includes("/securedoc/")) return "securedoc"; if (url.includes("/ppt/")) return "ppt"; if (url.includes("/python/excel/")) return "excel-python"; return "suite"; } } function enabledAbandonTrialForm() { function s(e = "") { const headers = new Headers(); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "fields": [{ "name": "email", "value": e }, { "name": "interested_products", "value": getHsProductCodeFromUrl() } ], "context": { "pageUri": window.location.href, "pageName": window.location.href.split('#')[0] } }); fetch("https://api.hsforms.com/submissions/v3/integration/submit/22630553/e036830d-c04a-4cb9-a5a0-2ba606d5de9f", { method: "POST", headers: headers, body: body, redirect: "follow" }).then((response) => response.text()).then((result) => console.log(result)).catch((error) => console.error(error)); } const w = 'email'; const t = 'trial-license'; const l = 'trial-license-new'; const f = 'name'; const fullScreenTrialModal = document.getElementById(t); if (fullScreenTrialModal && fullScreenTrialModal.classList.contains(l)) { fullScreenTrialModal.addEventListener('hide.bs.modal', function() { let e = []; document.querySelectorAll('#' + t + ' input[' + f + '="' + w + '"]').forEach(function(input) { if (input.value != '' && input.value != null && input.value.length >= 4) { e.push(input.value); } }); if (e.length > 0) { s(e[0]); } }); } }; function enabledSocialTrial() { const target = '.modal#trial-license .right_content.page_one'; const insertAfter = '.no_credit_required'; // Add place holder for social login document.querySelector(target + ' ' + insertAfter).insertAdjacentHTML("afterend", '<div id="firebaseui-auth-container"><div class="or_separator">OR</div></div>'); const firebaseuiAuthContainer = document.querySelector(target + ' #firebaseui-auth-container'); const currentPageUri = window.location.href; function submitHsform(formData) { const myHeaders = new Headers(); const hsu = "https://api.hsforms.com/submissions/v3/integration/submit/23795711/98897ae8-f5f7-4636-ae9e-98d808bc59b7"; myHeaders.append("Content-Type", "application/json"); const raw = JSON.stringify({ "fields": [{ "name": "email", "value": formData.email }, { "name": "firstname", "value": formData.name }, { "name": "comment", "value": "Submit via social login" } ], "context": { "pageUri": currentPageUri, "pageName": "Trial Submit" } }); fetch(hsu, { method: "POST", headers: myHeaders, body: raw, redirect: "follow" }) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); } // helper to load a script function loadScript(src) { return new Promise(resolve => { const s = document.createElement('script'); s.src = src; s.onload = resolve; document.head.appendChild(s); }); } // helper to load CSS function loadCSS(href) { const l = document.createElement('link'); l.rel = "stylesheet"; l.href = href; document.head.appendChild(l); } // Make sure related files are loaded, prevent miss behavior. Promise.all([ loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"), loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"), loadScript("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"), loadCSS("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css"), ]).then(() => { // Firebase config const firebaseConfig = { apiKey: "AIzaSyCsJiQyqdfI_YcNRxxpVUJ_pvicKmH9dX4", authDomain: "iron-authentication.firebaseapp.com", projectId: "iron-authentication", storageBucket: "iron-authentication.firebasestorage.app", messagingSenderId: "381801101678", appId: "1:381801101678:web:2d637bb0cdf2377998e97f" }; // init authn app firebase.initializeApp(firebaseConfig); // FirebaseUI const ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', { signInFlow: 'popup', signInOptions: [{ provider: firebase.auth.GoogleAuthProvider.PROVIDER_ID, scopes: [ 'email', 'profile', ], customParameters: { prompt: 'select_account' } }, { provider: firebase.auth.GithubAuthProvider.PROVIDER_ID, scopes: [ 'user:email', 'read:user', ], customParameters: { prompt: 'select_account' } }, ], callbacks: { signInSuccessWithAuthResult: function(authResult) { const user = authResult.user; const userEmail = user.email || user.providerData[0]?.email; const userName = user.displayName; // Place info into the HS form const emailInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="email"]'); const nameInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="firstname"]'); // interact the dom document.querySelector('.modal#trial-license .right_content.page_one').style.display = 'none'; document.querySelector('.modal#trial-license .right_content.page_two').style.display = 'block'; var emailInputField = document.querySelector('.modal#trial-license .placeholder__hsform--two input[name="email"]'); if (emailInputField) { emailInputField.readOnly = true; emailInputField.value = userEmail; emailInputField.dispatchEvent(new Event('change', { bubbles: true })); } if (emailInput) { emailInput.value = userEmail; emailInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } if (nameInput) { nameInput.value = userName; nameInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } submitHsform({ "email": userEmail, "name": userName }) firebaseuiAuthContainer.style.display = 'none'; return false; } } }); }); return; } // enabledAbandonTrialForm(); // enabledSocialTrial(); </script> <script> /* trialFormSetStep("#trial-license", 1); modalId = "#trial-license"; */ function trialFormSetStep(modal_id, step) { // check is suite modal const isSuite = getHsProductCodeFromUrl() === 'suite'; const modal = document.querySelector(modal_id); const show = (selector) => modal.querySelector(selector).style.display = 'block'; const hide = (selector) => modal.querySelector(selector).style.display = 'none'; if (step === 1) { // left contents show('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); // right forms show('.page_one'); hide('.page_two'); hide('.page_three'); hide('.page_submitted'); } else if (step === 2) { // left contents show('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); show('.page_two'); hide('.page_three'); hide('.page_submitted'); } else if (step === 3) { // left contents hide('.group__started_for_free'); show('.group__started_for_free_completed'); show('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); hide('.page_two'); show('.page_three'); hide('.page_submitted'); hide('.right .trusted_by'); show('.right .trial_key_sent'); } else if (step === 4) { // left contents hide('.group__started_for_free'); show('.group__started_for_free_completed'); show('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); hide('.page_two'); hide('.page_three'); show('.page_submitted'); show('.right .trusted_by'); hide('.right .trial_key_sent'); } /* override for suite modal */ if (isSuite == true) { // left contents for suite hide('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); show('.group__suite'); hide('.formright_submitted--products'); show('.formright_submitted--suite'); } } window.addEventListener("load", function() { // enabled 3 steps form (won test) window.IRON = window.IRON || {}; window.IRON.enabled3StepsTrialForm = true; }); window.addEventListener("DOMContentLoaded", function() { trialFormSetStep("#trial-license", 1); }); </script> <script data-hbspt-form> /* settings of from one */ var hsFormOptions_one = { region: "na1", portalId: "22630553", formId: "78c61202-075f-4baa-909b-54216b9dede2", // new form information form for all product formInstanceId: "modal-trial-license", locale: "ko", target: "#trial-license .placeholder__hsform--one", cssClass: "hsform_error_v2 hsform_floating_label", submitButtonClass: "hs-button primary large", submitText: "계속하기 →", inlineMessage: "<div class=\"d-none\"></div>", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"\uc720\ud6a8\ud55c \uc774\uba54\uc77c \uc8fc\uc18c\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694.","firstname":"\uc774\ub984\uc744 \uc785\ub825\ud574 \uc8fc\uc138\uc694","countrycode":"","phone":"\uc720\ud6a8\ud55c \uc804\ud654\ubc88\ud638\uc5d0\ub294 \uc22b\uc790, +, -, \ub610\ub294 x\ub9cc \ud3ec\ud568\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","preferred_communication":"\uc120\ud638\ud558\ub294 \uc5f0\ub77d \ubc29\ubc95\uc744 \uc120\ud0dd\ud574 \uc8fc\uc138\uc694"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); removeHSFormPlaceHolder($form); }, onFormSubmitted: function ($form, data) { trialFormSetStep("#trial-license", 2); // trigger goal start trigger_goal('trial_form_submitted'); setLocalStorageIfTrialSubmitted(); // trigger VWO goal window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(238);}); // Fire Custom Event when form submited dataLayer.push({'event':'trial-from-submitted'}); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end /// push submited data to 2nd form and mark readonly setTimeout(function() { $(".modal#trial-license .placeholder__hsform--two input[name='email']").attr('readonly', true).val(data.submissionValues.email).change(); }, 200); }, translations: { ko: { fieldLabels: {"email":"\ud68c\uc0ac \uc774\uba54\uc77c \uc8fc\uc18c","firstname":"\uc774\ub984","countrycode":"\uc804\ud654\ubc88\ud638","phone":"\uc804\ud654 \ubc88\ud638","preferred_communication":"\uc120\ud638\ud558\ub294 \uc5f0\ub77d \ubc29\ubc95"} } }, }; /* settings of from two */ var hsFormOptions_two = { region: "na1", portalId: "22630553", formId: "dbd072d1-1098-4c98-bdc3-7255fc2e0d6b", // existing trial form for each product locale: "ko", target: "#trial-license .placeholder__hsform--two", cssClass: "trialFormTwo hsform_error_v2 hsform_floating_label", submitButtonClass: "hs-button primary large", submitText: "계속하기 →", inlineMessage: "<div class=\"d-none\"></div>", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"\uc720\ud6a8\ud55c \uc774\uba54\uc77c \uc8fc\uc18c\ub97c \uc785\ub825\ud574 \uc8fc\uc138\uc694.","firstname":"\uc774\ub984\uc744 \uc785\ub825\ud574 \uc8fc\uc138\uc694","countrycode":"","phone":"\uc720\ud6a8\ud55c \uc804\ud654\ubc88\ud638\uc5d0\ub294 \uc22b\uc790, +, -, \ub610\ub294 x\ub9cc \ud3ec\ud568\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.","preferred_communication":"\uc120\ud638\ud558\ub294 \uc5f0\ub77d \ubc29\ubc95\uc744 \uc120\ud0dd\ud574 \uc8fc\uc138\uc694"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); removeHSFormPlaceHolder($form); }, onFormSubmitted: function ($form, data) { // change step to meeting form trialFormSetStep("#trial-license", 3); // trigger window resize for HubSpot meeting form to recalculate the height after update data-src window.dispatchEvent(new Event('resize')); setTimeout(function() { // update iframe from data-src, start const email = data['submissionValues']['email']; const name = data['submissionValues']['firstname']; const phone = data['submissionValues']['phone']; var bookingFormUrl = $('#trial-license .hsform_schedule_meeting .meetings-iframe-container').attr('data-src'); // generate new data-src bookingFormUrl = bookingFormUrl + '&email=' + email; bookingFormUrl = bookingFormUrl + '&firstname=' + name; bookingFormUrl = bookingFormUrl + '&phone=' + phone; $('#trial-license .hsform_schedule_meeting .meetings-iframe-container').attr('data-src', bookingFormUrl); // update iframe from data-src, end // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { }); // listen for the meeting form submit, start // const meetingEventOrigin = 'https://meetings.hubspot.com'; const meetingEventOrigin = 'https://hub.ironsoftware.com'; function handleMessage(event) { // Validate the origin first if (event.origin === meetingEventOrigin) { // only if meetingBookSucceeded if (event.data?.meetingBookSucceeded === true) { // goal for meeting form of 3 steps trial window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(239);}); // Remove this listener after success window.removeEventListener('message', handleMessage); trialFormSetStep("#trial-license", 4); } } } // Register the listener window.addEventListener('message', handleMessage); // listen for the meeting form submit, end }, 200); }, translations: { ko: { fieldLabels: {"email":"\ud68c\uc0ac \uc774\uba54\uc77c \uc8fc\uc18c","firstname":"\uc774\ub984","countrycode":"\uc804\ud654\ubc88\ud638","phone":"\uc804\ud654 \ubc88\ud638","preferred_communication":"\uc120\ud638\ud558\ub294 \uc5f0\ub77d \ubc29\ubc95"} } }, } // load embed forms after hsoptions is ready document.addEventListener("DOMContentLoaded", function() { const selector = document.querySelector("#trial-license .placeholder__hsform--one"); const modalSelector = document.querySelector("#trial-license.modal_new"); modalSelector.addEventListener("shown.bs.modal", function() { embedCustomHubspotForm(selector, hsFormOptions_one); embedCustomHubspotForm(selector, hsFormOptions_two, false); }, { once: true }); }); </script> <div class="modal modal_new trial-license-new cv-auto" id="trial-license" tabindex="-1" data-bs-backdrop="true" data-form-id="dbd072d1-1098-4c98-bdc3-7255fc2e0d6b" style="" data-js-modal-id="trial-license"> <div class="modal-dialog modal-dialog-scrollable modal-fullscreen"> <div class="modal-content p-0"> <div class="position-relative z-1"> <i class="fa-solid fa-x" data-bs-dismiss="modal" aria-hidden="true" style="position:absolute; top:12px; right:12px; width:40px; height:40px; cursor:pointer; display:flex; align-items:center; justify-content:center;font-size:18px; color:#181818;"></i> </div> <div class="modal-body p-0"> <div id="formtrial" class="modal_body"> <div class="modal-loaded donotdelete"></div> <div class="d-flex h-100 gap-0"> <div class="left d-none d-lg-block"> <div class="wrapper"> <div style="flex:0 1 56px;"><!-- spacer --></div> <div><img src="/img/products/ironpdf-logo-text-dotnet.svg" alt="ironpdf_for_dotnet_log2o" class="product_logo" loading="lazy"></div> <div style="flex:0 1 48px;"><!-- spacer --></div> <div class="bg_wrapper group__started_for_free"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="40" height="40" alt="원 안의 파란색 키" loading="lazy">무료로 시작하세요</div> <div class="subtitle">신용카드 필요 없음</div> </section> <section class="content"> <article> <div class="h2">실제 환경에서 테스트하세요</div> <p>워터마크 없이 실제 운영 환경에서 테스트해 보세요.<br> 필요한 곳 어디에서든 작동합니다.</p> <div class="floating_icon"><i class="fa-kit fa-square-arrow-in"></i></div> </article> <article> <div class="h2">완벽하게 작동하는 제품</div> <p>모든 기능을 갖춘 제품을 30일 동안 사용해 보세요.<br> 몇 분 안에 설치를 완료하고 작동시킬 수 있습니다.</p> <div class="floating_icon"><i class="fa-kit fa-calendar-bottom-check"></i></div> </article> <article> <div class="h2">연중무휴 24시간 기술 지원</div> <p>제품 체험 기간 동안 당사 지원 엔지니어링 팀에 대한 모든 접근 권한을 확보할 수 있습니다.</p> <div class="floating_icon"><i class="fa-regular fa-messages-question"></i></i></div> </article> </section> </div> <div class="bg_wrapper group__started_for_free_completed"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/checked_circle_grey.svg" width="40" height="40" alt="원 안의 회색 키" loading="lazy">무료로 시작하세요</div> <div class="subtitle">시험 신청서가 성공적으로 제출되었습니다.</div> </section> <section class="content"> </section> </div> <div class="bg_wrapper group__booking"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/calendar_circle_blue.svg" width="40" height="40" alt="원 안의 달력" loading="lazy">무료 라이브 데모 예약하기</div> <div class="subtitle">연락 없음, 카드 정보 없음, 약속 없음 <span class="detail">30분 개인 데모 예약.<span></div> </section> <section class="content"> <div class="title_of_listing">예상되는 사항은 다음과 같습니다.</div> <article> <p>저희 제품의 주요 기능을 보여주는 라이브 데모입니다.</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> <article> <p>프로젝트별 기능 추천을 받아보세요</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> <article> <p>모든 질문에 답변하여 필요한 모든 정보를 제공합니다. (어떠한 약속도 없습니다.)</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> </section> </div> <div class="bg_wrapper group__booking_completed"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/checked_circle_grey.svg" width="40" height="40" alt="원 안의 회색 키" loading="lazy">무료 라이브 데모 예약하기</div> <div class="subtitle">예약이 완료되었습니다 <span class="detail">확인을 위해 이메일을 확인하세요</span></div> </section> <section class="content"> </section> </div> <style> ul.suite_features { list-style: none; li + li { margin-top: 6px } } .grid_listing_products { margin-top: 48px; display: grid; grid-template-columns: auto auto; row-gap:16px; justify-content: space-between; } </style> <div class="group__suite" style="display:none;"> <h2 class="iron_color--deep_blue iron_font--black iron_fs--30" style="margin:0 0 16px;">Want to deploy IronSuite to a live project for FREE?</h2> <h3 class="iron_color--pink iron_font--bold iron_fs--20" style="margin:24px 0 16px;">What’s included?</h3> <ul class="suite_features iron_color--black iron_font--normal iron_fs--18 p-0 m-0"> <li><i class="fa-solid fa-check iron_color--green me-2"></i>Test in production without watermarks</li> <li><i class="fa-solid fa-check iron_color--green me-2"></i>30 days fully functional product</li> <li><i class="fa-solid fa-check iron_color--green me-2"></i>24/5 technical support during trial</li> </ul> <div class="grid_listing_products"> <div><img src="\img\products\h-126\logo-ironpdf.svg" height="32" width="auto" alt="ironpdf Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironword.svg" height="32" width="auto" alt="ironword Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironxl.svg" height="32" width="auto" alt="ironxl Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironppt.svg" height="32" width="auto" alt="ironppt Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironocr.svg" height="32" width="auto" alt="ironocr Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironbarcode.svg" height="32" width="auto" alt="ironbarcode Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironqr.svg" height="32" width="auto" alt="ironqr Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironprint.svg" height="32" width="auto" alt="ironprint Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironzip.svg" height="32" width="auto" alt="ironzip Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironwebscraper.svg" height="32" width="auto" alt="ironwebscraper Logo" loading="lazy"></div> </div> </div> <div style="flex:1 1 auto;"><!-- spacer --></div> <div class="modal_new_trial__support_team"> <div class="image_wrapper"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-6.webp" loading="lazy" alt="Support Team Member 6 related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-14.webp" loading="lazy" alt="Support Team Member 14 related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-4.webp" loading="lazy" alt="Support Team Member 4 related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-2.webp" loading="lazy" alt="Support Team Member 2 related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기"> </div> <div class="online">온라인 24시간 연중무휴</div> </div> <div class="need_help"><strong>도움이 필요하세요?</strong> 영업 팀이 기꺼이 도와드리겠습니다.</div> <a href="https://ironsoftware.com/ko/enterprise/trial/" class="enterprise-trial__cta">Enterprise 체험판을 사용해 보세요.<i class="fa-solid fa-arrow-right"></i></a> <div style="flex:0 1 48px;"><!-- spacer --></div> </div> </div> <div class="right" style="flex:1 1 auto;"> <div class="wrapper"> <div style="flex:0 1 80px;"><!-- spacer --></div> <div class="d-none text-center"> <img loading="lazy" src="/img/products/ironpdf-logo-text-dotnet.svg" alt="ironpdf_for_dotnet_log2o" class="product_logo" style="max-height:50px;" height="50" width="auto"> </div> <!-- Page One --> <div class="right_content page_one"> <div class="header"> <div><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="80" height="80" alt="파란색 원 안의 키" loading="lazy"></div> <div class="h2">무료 <strong class="visible-xs-block visible-sm-inline visible-md-inline visible-lg-inline">30일 체험 키</strong>를 즉시 받으세요.</div> </div> <div style="height:48px;"><!-- spacer --></div> <div class="placeholder__hsform--one"></div> <div> <div class="no_credit_required"><img loading="lazy" src="/img/modals/trial-license-new/bullet_checked.svg" width="16" height="16" alt="bullet_checked">신용카드나 계정 생성은 필요하지 않습니다.</div> </div> </div> <!-- Page Two --> <div class="right_content page_two" style="display:none;"> <div class="header"> <div><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="80" height="80" alt="파란색 원 안의 키" loading="lazy"></div> <div class="h2">무료 <strong class="visible-xs-block visible-sm-inline visible-md-inline visible-lg-inline">30일 체험 키</strong>를 즉시 받으세요.</div> </div> <div style="height:24px;"><!-- spacer --></div> <div class="placeholder__hsform--two"></div> <div> <div class="no_credit_required"><img loading="lazy" src="/img/modals/trial-license-new/bullet_checked.svg" width="16" height="16" alt="원 안의 파란색 키">신용카드나 계정 생성은 필요하지 않습니다.</div> </div> </div> <!-- Page Three (meeting form) --> <div class="right_content page_three" style="display:none;"> <div class="header"> <div><img src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="80" height="80" alt="Green Check in orange circle" loading="lazy"></div> <div class="h2">시험 양식이 <span class="iron_font--bold">성공적으로</span> 제출되었습니다.</div> </div> <div style="height:24px;"><!-- spacer --></div> <div class="hsform_schedule_meeting"> <!-- Start of Meetings Embed Script --> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/iron-software-sales/demo-trial?embed=true"></div> <!-- End of Meetings Embed Script --> </div> </div> <!-- Page Submitted --> <div class="right_content page_submitted formright_submitted" style="display:none;"> <div class="d-none d-md-block" style="flex:0 1 80px;"><!-- spacer --></div> <div class="d-block d-md-none" style="flex:0 1 24px;"><!-- spacer --></div> <!-- submitted for products --> <div class="formright_submitted--products" style="display:block;"> <div><img loading="lazy" src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"></div> <div class="title">체험을 시작해주셔서 감사합니다</div> <div class="text p-3"><p>체험 라이센스 키를 이메일에서 확인하세요.</p><p>이메일을 받지 못하셨다면, <a href="#livechat" onclick="return window.HubSpotConversations.widget.open()">라이브 채팅</a>을 시작하거나 <a href="mailto:support@ironsoftware.com">support@ironsoftware.com</a>으로 이메일을 보내세요</p></div> <div> <div style="margin:0 auto; width:100%; max-width:248px;"> <div class="my-3"><a class="trial-license__action-button trial-license__action-button_red m-0" style="width:100%; font-size:14px;" href="https://www.nuget.org/packages/IronPdf/" target="_blank"><i class="trial-license__action-button-icon nuget-icon-white2"></i><span class="trial-license__action-button-text">NuGet을 사용하여 설치하세요</span></a></div> <div class="my-3"><a class="trial-license__action-button trial-license__action-button_white m-0" style="width:100%; font-size:14px;" href="/ko/licensing/"><span class="trial-license__action-button-text">라이선스 보기</span></a></div> </div></div> </div> <!-- submitted for suite --> <div class="formright_submitted--suite" style="display:none; padding-top:80px;"> <div><img loading="lazy" src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"></div> <div class="title">감사합니다</div> <div class="text p-3">시험 키는 이메일에 있어야 합니다.<br>만약 그렇지 않다면, <a href="mailto:support@ironsoftware.com" aria-label="Contact support" class="iron_color--deep_blue iron_font--medium iron_hover_color--pink">support@ironsoftware.com</a>로 연락해 주세요.</div> </div> </div> <div style="flex:1 1 96px"><!-- spacer --></div> <section class="trusted_by"> <ul class="our_clients"><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_aetna.svg" alt="로고 Aetna" width="80" height="20"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_nasa.svg" alt="로고 NASA" width="64" height="52"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_ge.svg" alt="로고 GE" width="54" height="54"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_porsche.svg" alt="로고 Porsche" width="40" height="52"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_usds.svg" alt="로고 USDA" width="54" height="54"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_qatar.svg" alt="로고 Qatar" width="114" height="32"></li></ul> <div class="h2">IronPDF를 시도한 수백만 엔지니어들과 합류하세요</div> </section> <section class="trial_key_sent text-center iron_color--black iron_font--normal iron_fs--14 iron_lh--16" style="display:none;"> 시험 키는 이메일에 있어야 합니다.<br>만약 그렇지 않다면, <a href="mailto:support@ironsoftware.com" aria-label="Contact support" class="iron_color--deep_blue iron_font--medium iron_hover_color--pink">support@ironsoftware.com</a>로 연락해 주세요. </section> <div style="flex:0 1 80px"><!-- spacer --></div> </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css", "modals/trial-license-new.css"]; importModal(modals, "trial-license", debug()); }); }); </script> <script> function getHsProductCodeFromUrl() { const url = window.location.href; if (url.includes("ironpdf.com") || url.includes("ironpdf.local")) { if (url.includes("/java/")) return "pdf-java"; if (url.includes("/python/")) return "pdf-python"; if (url.includes("/nodejs/")) return "pdf-nodejs"; return "pdf"; } else if (url.includes("ironsoftware.com") || url.includes("ironsoftware.local")) { if (url.includes("/word/")) return "word"; if (url.includes("/ocr/")) return "ocr"; if (url.includes("/webscraper/")) return "webscraper"; if (url.includes("/barcode/")) return "barcode"; if (url.includes("/excel/")) return "excel"; if (url.includes("/qr/")) return "qr"; if (url.includes("/zip/")) return "zip"; if (url.includes("/word/")) return "word"; if (url.includes("/print/")) return "print"; if (url.includes("/securedoc/")) return "securedoc"; if (url.includes("/ppt/")) return "ppt"; if (url.includes("/python/excel/")) return "excel-python"; return "suite"; } } function enabledAbandonTrialForm() { function s(e = "") { const headers = new Headers(); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "fields": [{ "name": "email", "value": e }, { "name": "interested_products", "value": getHsProductCodeFromUrl() } ], "context": { "pageUri": window.location.href, "pageName": window.location.href.split('#')[0] } }); fetch("https://api.hsforms.com/submissions/v3/integration/submit/22630553/e036830d-c04a-4cb9-a5a0-2ba606d5de9f", { method: "POST", headers: headers, body: body, redirect: "follow" }).then((response) => response.text()).then((result) => console.log(result)).catch((error) => console.error(error)); } const w = 'email'; const t = 'trial-license'; const l = 'trial-license-new'; const f = 'name'; const fullScreenTrialModal = document.getElementById(t); if (fullScreenTrialModal && fullScreenTrialModal.classList.contains(l)) { fullScreenTrialModal.addEventListener('hide.bs.modal', function() { let e = []; document.querySelectorAll('#' + t + ' input[' + f + '="' + w + '"]').forEach(function(input) { if (input.value != '' && input.value != null && input.value.length >= 4) { e.push(input.value); } }); if (e.length > 0) { s(e[0]); } }); } }; function enabledSocialTrial() { const target = '.modal#trial-license .right_content.page_one'; const insertAfter = '.no_credit_required'; // Add place holder for social login document.querySelector(target + ' ' + insertAfter).insertAdjacentHTML("afterend", '<div id="firebaseui-auth-container"><div class="or_separator">OR</div></div>'); const firebaseuiAuthContainer = document.querySelector(target + ' #firebaseui-auth-container'); const currentPageUri = window.location.href; function submitHsform(formData) { const myHeaders = new Headers(); const hsu = "https://api.hsforms.com/submissions/v3/integration/submit/23795711/98897ae8-f5f7-4636-ae9e-98d808bc59b7"; myHeaders.append("Content-Type", "application/json"); const raw = JSON.stringify({ "fields": [{ "name": "email", "value": formData.email }, { "name": "firstname", "value": formData.name }, { "name": "comment", "value": "Submit via social login" } ], "context": { "pageUri": currentPageUri, "pageName": "Trial Submit" } }); fetch(hsu, { method: "POST", headers: myHeaders, body: raw, redirect: "follow" }) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); } // helper to load a script function loadScript(src) { return new Promise(resolve => { const s = document.createElement('script'); s.src = src; s.onload = resolve; document.head.appendChild(s); }); } // helper to load CSS function loadCSS(href) { const l = document.createElement('link'); l.rel = "stylesheet"; l.href = href; document.head.appendChild(l); } // Make sure related files are loaded, prevent miss behavior. Promise.all([ loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"), loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"), loadScript("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"), loadCSS("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css"), ]).then(() => { // Firebase config const firebaseConfig = { apiKey: "AIzaSyCsJiQyqdfI_YcNRxxpVUJ_pvicKmH9dX4", authDomain: "iron-authentication.firebaseapp.com", projectId: "iron-authentication", storageBucket: "iron-authentication.firebasestorage.app", messagingSenderId: "381801101678", appId: "1:381801101678:web:2d637bb0cdf2377998e97f" }; // init authn app firebase.initializeApp(firebaseConfig); // FirebaseUI const ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', { signInFlow: 'popup', signInOptions: [{ provider: firebase.auth.GoogleAuthProvider.PROVIDER_ID, scopes: [ 'email', 'profile', ], customParameters: { prompt: 'select_account' } }, { provider: firebase.auth.GithubAuthProvider.PROVIDER_ID, scopes: [ 'user:email', 'read:user', ], customParameters: { prompt: 'select_account' } }, ], callbacks: { signInSuccessWithAuthResult: function(authResult) { const user = authResult.user; const userEmail = user.email || user.providerData[0]?.email; const userName = user.displayName; // Place info into the HS form const emailInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="email"]'); const nameInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="firstname"]'); // interact the dom document.querySelector('.modal#trial-license .right_content.page_one').style.display = 'none'; document.querySelector('.modal#trial-license .right_content.page_two').style.display = 'block'; var emailInputField = document.querySelector('.modal#trial-license .placeholder__hsform--two input[name="email"]'); if (emailInputField) { emailInputField.readOnly = true; emailInputField.value = userEmail; emailInputField.dispatchEvent(new Event('change', { bubbles: true })); } if (emailInput) { emailInput.value = userEmail; emailInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } if (nameInput) { nameInput.value = userName; nameInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } submitHsform({ "email": userEmail, "name": userName }) firebaseuiAuthContainer.style.display = 'none'; return false; } } }); }); return; } // enabledAbandonTrialForm(); // enabledSocialTrial(); </script> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-form-sent"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css", "modals/trial-license-new.css"]; importModal(modals, "trial-license-form-sent", debug()); }); }); </script> <div class="modal fade" id="talk-to-sales" tabindex="-1"> <div class="modal-dialog modal-fullscreen modal-dialog-scrollable"> <div class="modal-content talk_to_sales"> <div class="modal-loaded donotdelete"></div> <!-- close modal button --> <button type="button" class="button_close_modal" data-bs-dismiss="modal"><img src="/img/modals/talk_to_sales/icon_close_modal.svg" width="20" height="20" alt="close modal" loading="lazy"></button> <!-- modal content, start --> <div class=""> <div class="d-flex align-items-stretch vh-100"> <div class="content_left d-none d-md-flex flex-column"> <div class="product_logo"><img src="/img/modals/talk_to_sales/main_logo.svg" width="220" height="40" alt="Iron Suite Enterprise 로고" loading="lazy"></div> <div class="h2">영업팀에 문의하세요</div> <p class="sub_title">부담 없는 상담을 예약하세요</p> <div class="team_expert_photo"> <img src="/img/modals/talk_to_sales/team_expert.webp" width="248" height="56" alt="Iron Software Enterprise 컨설팅 팀" class="img-fluid" loading="lazy"> </div> <div class="how_we_help"> <div class="h3">어떻게 도와드릴 수 있을까요?</div> <ul> <li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">업무 흐름 및 문제점에 대해 상담하세요.</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">다른 회사들이 .NET 문서 관련 요구 사항을 어떻게 해결하는지 살펴보세요.</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">궁금한 모든 질문에 답변해 드려 필요한 정보를 모두 얻으실 수 있도록 도와드립니다. (아무런 의무도 없습니다.)</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">프로젝트 요구사항에 맞는 맞춤 견적을 받아보세요.</span></li> </ul> </div> </div> <div class="content_right d-flex flex-column"> <div style="flex:0 1 84px;"><!-- spacer --></div> <div class="content_right__hsform_header"> <div class="form_title">부담 없는 무료 상담을 받아보세요</div> <p class="sub_title">아래 양식을 작성하시거나 <a href="mailto:sales@ironsoftware.com" aria-title="">sales@ironsoftware.com으로</a> 이메일을 보내주세요.</p> </div> <div id="form_wrapper" class="form_wrapper" style="min-height: 488px;"> <div class="form_placeholder"></div> <p class="text_below_form"><i class="fa-solid fa-shield-heart"></i>고객님의 정보는 항상 <strong>비밀로 유지됩니다.</strong></p> </div> <div style="flex:0 1 98px; min-height:24px;"><!-- spacer --></div> <div class="trusted_by"> <div class="h3">전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.</div> <div><img src="/img/modals/talk_to_sales/trusted_by_logos.webp" width="552" height="97" alt="Iron Software의 고객 로고" class="img-fluid" loading="lazy"></div> </div> </div> </div> </div> <!-- modal content, end --> </div> </div> </div> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { // iron_hsform_error_v2 (2024 DEC) // required: css group ".iron_hsform_error_v2" // required: label from hubspot // HubSpot form CSS is global; with multiple instances it can affect the wrong form. // Toggle the stylesheet with the modal to prevent modal submissions // from visually updating the page form. let hsCss; var salesTalkSelector = document.querySelector("#talk-to-sales"); salesTalkSelector?.addEventListener("hidden.bs.modal", (evt) => { if (evt.target.id === "talk-to-sales") { hsCss = document.querySelector(`link[rel="stylesheet"][type="text/css"][href="/front/css/hbsptforms.css?v=1776616414"]`); hsCss && (hsCss.disabled = true); } }); salesTalkSelector?.addEventListener("show.bs.modal", (evt) => { if (evt.target.id === "talk-to-sales") { hsCss && (hsCss.disabled = false); } }); var this_hsFormID = "dd27b8f3-83d9-4518-8fbc-8d07ec8b0761"; var this_hsFormSubmitText = "견적 요청"; var this_hsFormSubmittedText = '<div class="hsform_submitted_badge"></div><div class="hsform_submitted_text">신청서를 제출해 주셔서 감사합니다!</div>'; var this_hsFormConfig = { region: "na1", portalId: "22630553", formId: this_hsFormID, locale: "ko", inlineMessage: this_hsFormSubmittedText, submitText: this_hsFormSubmitText, target: "#form_wrapper", cssClass: "hsform_talk-to-sales iron_hsform_error_v2", translations: { "ko": { fieldLabels: {"email":"회사 이메일 주소","firstname":"이름","countrycode":"전화번호","phone":"전화 번호","preferred_communication":"선호하는 연락 방법"} } }, onFormReady: function($form) { // alway scoped with $form // inject error element (icon and tooltip) var this_hsFormErrors = {"email":"유효한 이메일 주소를 입력해 주세요.","firstname":"이름을 입력해 주세요","countrycode":"","phone":"유효한 전화번호에는 숫자, +, -, 또는 x만 포함될 수 있습니다.","preferred_communication":"선호하는 연락 방법을 선택해 주세요"}; var this_hsFormErrorTooltipMessages = { ".hs-form-field.hs-firstname": this_hsFormErrors.firstname || "이름을 입력해 주세요", ".hs-form-field.hs-email": this_hsFormErrors.email || "유효한 이메일 주소를 입력해 주세요.", ".hs-form-field.hs-phone": this_hsFormErrors.phone || "유효한 전화번호에는 숫자, +, -, 또는 x만 포함될 수 있습니다.", } for (var classname in this_hsFormErrorTooltipMessages) { const errorElement = $('<div/>', { class: 'iron-hsform-error-element', 'data-toggle': 'tooltip', 'data-placement': 'top', title: this_hsFormErrorTooltipMessages[classname] }); $form.find(classname).append(errorElement); } // create bootstrap's tooltip inside this form only $form.find('[data-toggle="tooltip"]').each(function(index, el) { bootstrap.Tooltip.getOrCreateInstance(this); }); }, onFormSubmitted: function($form) { // hide form header, form making sense of submitted form $form.parent().parent().parent().find('.content_right__hsform_header').hide(); window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(229);}); } }; setupModalPopupWithHubSpotForm(salesTalkSelector, "talk-to-sales", ["modals/talk_to_sales.css"], this_hsFormConfig, "#talk-to-sales div.form_wrapper"); }); </script> <!-- modal start --> <div class="modal fade cv-auto" id="booking-demo" tabindex="-1"> <div class="modal-dialog modal-fullscreen modal-dialog-scrollable"> <div class="modal-content modal_booking_demo"> <div class="modal-loaded donotdelete"></div> <!-- close modal button --> <button type="button" class="button_close_modal" data-bs-dismiss="modal" aria-label="Close"><img src="/img/modals/booking_demo/icon_close_modal.svg" width="20" height="20" alt="close modal button" loading="lazy"></button> <!-- modal content, start --> <div class=""> <div class="d-flex align-items-stretch vh-100"> <div class="content_left d-none d-md-flex flex-column"> <div class="product_logo_wrapper"><img class="product_logo" src="/img/products/ironpdf-logo-text-dotnet-white.svg" width="170" height="28" alt=".Net용 IronPDF" loading="lazy"></div> <div style="flex:0 1 56px;"><!-- spacer --></div> <div class="h2">무료 라이브 데모 예약하기</div> <p class="sub_title">30분간 진행되는 개인 데모를 예약하세요.</p> <p class="sub_title_emphasis">계약도 없고, 카드 정보도 필요 없고, 아무런 의무도 없습니다.</p> <div style="flex:0 1 12px;"><!-- spacer --></div> <div class="team_expert_photo_wrapper"> <img loading="lazy" src="/img/modals/booking_demo/team_expert.webp" width="496" height="112" alt="Iron Software 제품 데모 팀" class="team_expert_photo"> </div> <div style="flex:0 1 40px;"><!-- spacer --></div> <div class="how_we_help"> <span class="h3">예상되는 사항은 다음과 같습니다.</h3> <ul> <li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">저희 제품의 주요 기능을 보여주는 라이브 데모입니다.</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">프로젝트별 기능 추천을 받아보세요</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">궁금한 모든 질문에 답변하여 필요한 정보를 모두 얻으실 수 있도록 도와드립니다.<br> (어떠한 의무도 없습니다.)</span></li> </ul> </div> </div> <div class="content_right d-flex flex-column"> <div class="d-none d-md-block" style="flex:0 0 48px;"><!-- spacer --></div> <div class="d-none d-md-block hsform_progress"> <div class="line"></div> <div class="dot step-1"></div> <div class="dot step-2"></div> <div class="text step-1">시간을 선택하세요</div> <div class="text step-2">귀하의 정보</div> </div> <div class="form_title">무료 <strong>라이브 데모를</strong> 예약하세요</div> <div class="d-none d-md-block" style="height:72px;"><!-- spacer --></div> <div class="content_right__hsform_header"> <div class="text-center"> <img loading="lazy" src="/img/modals/booking_demo/booking_badge.svg" class="img-fluid mx-auto" width="234" height="170" alt="Booking Badge related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기"> </div> </div> <div class="hsform_loader_wrapper"> <div class="hsform_loader"></div> </div> <div class="form_wrapper hsform_schedule_email" style="min-height: 201px;"></div> <div class="hsform_schedule_meeting"> <!-- Start of Meetings Embed Script --> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/ironsoftware/demo?embed=true"></div> <!-- End of Meetings Embed Script --> </div> <div style="flex:0 0 24px;"><!-- spacer --></div> <div style="flex:0 1 98px;"><!-- spacer --></div> <div class="trusted_by"> <h3 class="h3">전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.</h3> <div><img loading="lazy" src="/img/modals/booking_demo/trusted_by_logos.webp" width="574" height="54" alt="Iron Software의 고객 로고" class="img-fluid"></div> </div> </div> </div> </div> <!-- modal content, end --> </div> </div> </div> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { var bookingDemoSelector = document.querySelector("#booking-demo"); // iron_hsform_error_v2 (2024 DEC) // required: css group ".iron_hsform_error_v2" // required: label from hubspot window.currentModalID = "#booking-demo"; var this_hsFormID = "28570e7d-08f2-41c5-ab5b-b00342515d68"; var this_hsFormSubmitText = "예약 시작하기"; var this_hsFormConfig = { region: "na1", portalId: "22630553", formId: this_hsFormID, locale: 'en', submitText: this_hsFormSubmitText, cssClass: "iron_hsform_meeting iron_hsform_error_v2", onFormReady: function($form) { /* create error tooltip, start */ // alway scoped with $form // inject error element (icon and tooltip), then hide them var this_hsFormErrorTooltipMessages = { ".hs-form-field.hs-firstname": "이름을 입력해 주세요", ".hs-form-field.hs-email": "유효한 이메일 주소를 입력해 주세요.", ".hs-form-field.hs-phone": "", }; for (var classname in this_hsFormErrorTooltipMessages) { const invalidAttr = $('<div/>', { class: 'invalid-field', 'data-toggle': 'tooltip', 'data-placement': 'top', title: this_hsFormErrorTooltipMessages[classname] }); $form.find(classname).append(invalidAttr); } // create bootstrap's tooltip inside this form only $form.find('[data-toggle="tooltip"]').each(function(index, element) { bootstrap.Tooltip.getOrCreateInstance(element); }); /* create error tooltip, end */ }, onFormSubmitted: function($form, data) { $(currentModalID + ' .content_right__hsform_header').hide(); $(currentModalID + ' .hsform_schedule_email').hide(); $(currentModalID + ' .trusted_by').hide(); $(currentModalID + ' .hsform_loader_wrapper').show(); dataLayer.push({ 'event': 'book_live_demo' }); window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(234); }); setTimeout(function() { // collect email address after form submitted const email = data['submissionValues']['email']; // get data-src from next form var nextFormDataSrc = $('.hsform_schedule_meeting .meetings-iframe-container').attr('data-src'); // generate new data-src nextFormDataSrc = nextFormDataSrc + '&email=' + email // inject new data-src to next form $(currentModalID + ' .hsform_schedule_meeting .meetings-iframe-container').attr('data-src', nextFormDataSrc); // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { $(currentModalID + ' .hsform_loader_wrapper').hide(); $(currentModalID + ' .hsform_schedule_meeting').show(); }); }, 0); }, }; /* for form progress, start */ var hsMeetingFormActivated = false; window.addEventListener("message", function(event) { if (event.origin == "https://meetings.hubspot.com" && event.data == "readyForConsentListener" && hsMeetingFormActivated == false) { hsMeetingFormActivated = true; $(currentModalID + ' .hsform_progress').css("visibility", "visible"); $(currentModalID + ' .hsform_progress .step-1.dot').addClass('active'); $(currentModalID + ' .hsform_progress .step-1.text').addClass('active'); } if (event.origin == "https://meetings.hubspot.com" && event.data != "readyForConsentListener" && hsMeetingFormActivated) { // console.log('>> second meeting form displaying') $(currentModalID + ' .hsform_progress .step-1.dot').addClass('completed'); $(currentModalID + ' .hsform_progress .step-1.dot').html('<i class="fas fa-check"></i>'); $(currentModalID + ' .hsform_progress .step-1.text').addClass('completed'); $(currentModalID + ' .hsform_progress .step-2.dot').addClass('active'); $(currentModalID + ' .hsform_progress .step-2.text').addClass('active'); $(currentModalID + ' .hsform_progress .line').addClass('active'); } if (event.origin == "https://meetings.hubspot.com" && event.data.meetingBookSucceeded && hsMeetingFormActivated) { // console.log('>> meeting form submitted') $(currentModalID + ' .hsform_progress .step-2.dot').addClass('completed'); $(currentModalID + ' .hsform_progress .step-2.dot').html('<i class="fas fa-check"></i>'); $(currentModalID + ' .hsform_progress .step-2.text').addClass('completed'); } }); /* for form progress, end */ setupModalPopupWithHubSpotForm(bookingDemoSelector, "booking-demo", ["modals/booking_demo.css"], this_hsFormConfig, "#booking-demo .form_wrapper.hsform_schedule_email"); }); </script> <!-- modal end --> <!-- Article Documentation Typeform Modal START --> <div class="modal fade cv-auto" id="article-feedback-modal" tabindex="-1" data-bs-backdrop="true" aria-modal="true" aria-hidden="true" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <i class="fas fa-times slide-out-close" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body"> <div class="modal-loaded donotdelete"></div> <div class="article-feedabck__wrapper" id="anchor-improve-the-article" data-tf-widget="zrOqRbmz" data-tf-iframe-props="title=Article feedback" data-tf-medium="snippet" data-tf-hidden="source=https://ironpdf.com/ko/blog/using-ironpdf/read-header-footer-itextsharp" data-tf-disable-auto-focus ></div> <script> document.addEventListener("DOMContentLoaded", function() { setupModalPopup("#article-feedback-modal", "article-feedback-modal", ["https://embed.typeform.com/next/embed.js", "modals/article-typeform.css"]); }); </script> </div> </div> </div> </div> <!-- Article Documentation Typeform Modal END --> <!-- Full Width Code Example Modal START --> <div class="modal full-width-code-example-modal cv-auto" tabindex="-1" id="fullWidthCodeExample" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-loaded donotdelete"></div> <div class="modal-header"> <button title="Close" data-bs-dismiss="modal" aria-hidden="true" class="full-width-code-example-modal__close-button"> <i class="fas fa-times" data-bs-dismiss="modal" aria-hidden="true"></i> </button> </div> <div class="modal-body"></div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var copyButtonSibling = null; const fwCSEl = document.querySelector("#fullWidthCodeExample"); const fwCSModal = bsModal(fwCSEl); document.querySelectorAll(".js-full-screen-code-example-modal").forEach((exBtn) => { exBtn.addEventListener("click", (ev) => { copyButtonSibling = Array.from(getSiblings(exBtn)).filter(sibling => sibling.classList.contains('js-clipboard-button') || sibling.classList.contains('copy-clipboard'))[0]; let copyHoverVal = copyButtonSibling.getAttribute("title"); let copyDataHoverVal = copyButtonSibling.getAttribute("data-original-title"); let codeExampleContent = exBtn.closest(".code-content")?.cloneNode(true); if (!codeExampleContent) { codeExampleContent = exBtn.closest(".code-explorer__content").cloneNode(true); } if (codeExampleContent) { fwCSEl.querySelector(".modal-body").replaceChildren(codeExampleContent); fwCSEl.querySelector(".copy-clipboard")?.setAttribute("title", copyDataHoverVal != '' ? copyDataHoverVal : copyHoverVal); openModalPopup("fullWidthCodeExample", null, false); } }); }); fwCSEl.addEventListener("click", (ev) => { const target = ev.target.closest(".js-exit-full-screen-code-example-modal, .full-width-code-example-modal__close-button"); if (!target) return; const sib = Array.from(getSiblings(target)).filter(sibling => sibling.classList.contains('copy-clipboard'))[0]; if (!sib) return; copyButtonSibling.setAttribute('title', sib.getAttribute('title')); fwCSModal.then((modal) => { modal.hide(); }); }); setupModalPopup("#fullWidthCodeExample", "fullWidthCodeExample", ["modals/code-examples.css"]); }); </script> <!-- Full Width Code Example Modal END --> <script> // toggle dropdown trial form function vwoEnabledHsFormAtStickyFooter() { load_$(() => { // load hubspot form dynamically function dynamicLoadHsForms(formOption, target) { function waitForHsptReady() { var interval = setInterval(function() { if (typeof hbspt !== "undefined") { clearInterval(interval); var option = formOption; option.target = target; hbspt.forms.create(option); } }, 10); } if (typeof hbspt === "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//js.hsforms.net/forms/embed/v2.js"; document.getElementsByTagName("head")[0].appendChild(script); script.onload = function() { waitForHsptReady(); }; } else { waitForHsptReady(); } } // disable open the modal on click at sticky footer bar const $footerSticky = $("#footer-sticky"); $footerSticky.replaceWith($footerSticky.clone(true)); // hide default black cta button $('#footer-sticky-cta-button').hide(); // show a variant hsform $('#placeHolderForHsFormAtStickyFooter').show(); // styling variant $("#footer-sticky").css({ 'cursor': 'default', 'height': '52px' }); $('#footer-sticky .support-text').css({ 'cursor': 'default', }); // hsform options const hsFormOptionsAtStickyFooter = { portalId: "22630553", region: "na1", locale: "en", formId: "78c61202-075f-4baa-909b-54216b9dede2", formInstanceId: "sticky-footer-trial", submitText: "무료 체험 시작하기", inlineMessage: "감사합니다. 무료 체험판이 포함된 이메일을 확인해 주세요.", onFormReady: function($form) { // insert product_id to form hidden input // $form.find('input[name="2-12260276/trial_products"]').val(window.IRON.product.code.toUpperCase()).change(); const el = document.querySelector('#placeHolderForHsFormAtStickyFooter'); const tooltip = new bootstrap.Tooltip(el, { placement: 'top', trigger: 'manual', title: '체험판 키를 받으려면 이메일 주소가 필요합니다.', }); const emailInput = $form.find('input[type="email"]')[0]; const observer = new MutationObserver((mutations) => { const mutation = mutations[0]; if (mutation.attributeName === 'class') { if (emailInput.classList.contains('invalid')) { tooltip.show(); setTimeout(() => { tooltip.hide(); }, 3000); } else { tooltip.hide(); } } }); observer.observe(emailInput, { attributes: true, attributeFilter: ['class'] }); }, onFormSubmitted: function($form, data) { // trigger goal start window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(237); }); // Fire Custom Event when form submited dataLayer.push({ 'event': 'trial-from-submitted' }); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end const nextForm = ".modal#trial-license .placeholder__hsform--two form"; const waitForTargetInput = setInterval(() => { if ($(nextForm).length) { clearInterval(waitForTargetInput); $(nextForm + " input[name='email']").val(data.submissionValues.email).change(); $(nextForm + " input[name='email']").attr('readonly', true); } }, 100); // open full trial modal, jump to step 2 trialFormSetStep('#trial-license', 2); $('#trial-license').modal('show'); }, }; dynamicLoadHsForms(hsFormOptionsAtStickyFooter, "#placeHolderForHsFormAtStickyFooter"); }); } </script> <div id="footer-sticky" class="fixed-support-bar footer-sticky__vwo-test js-hide-footer-on-scroll js-search-offset-block js-modal-open" data-modal-id="trial-license" > <div class="support-text"> <span class="support-text__full-power">30일 무료 체험 → 모든 기능 이용 가능. 제한 없음. 카드 정보 필요 없음.</span> <a id="footer-sticky-cta-button" aria-label="Iron Software 체험판 라이선스" class="js-fixed-support-bar-button vwo-homepage-start-trial-cta-button--control btn btn-red btn-white-red" > <i class="fas fa-key d-inline"></i><span class="d-inline">무료 체험 시작하기</span> </a> <div id="placeHolderForHsFormAtStickyFooter"><!-- placeholder --></div> </div> </div> <script> // enabled for debug /* window.onload = function() { vwoEnabledHsFormAtStickyFooter(); }; */ </script> <footer id="footer" class="footer"> <!-- Iron Suite Products --> <div id="new-sc" class="main_product_page new-footer"> <div class="footer__wrapper"> <div class="footer__header"> <a href="https://ironsoftware.com/ko/about-us/1-percent-for-the-planet/" class="footer__header-logo"> <img class="footer__logo" src="/img/footer/logo-1_percent.svg" alt="Logo 1 Percent related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기" width="204" height="32" loading="lazy"> </a> <div class="footer__header-content"> <div class="footer__header-tagline"> <div class="footer__icon-wrapper"> <img class="footer__icon" src="/img/footer/textlogo-iron_suite.svg" alt="Textlogo Iron Suite related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기" width="201" height="32" loading="lazy"> </div> <h2 class="footer__title">IronPDF는 IRON <strong>SUITE</strong> <span>의 일부입니다.</span></h2> <p class="footer__subtitle">10 .NET API 제품 <span>당신의 사무 문서를 위한</span></p> </div> <div class="footer__cta"> <a href="https://ironsoftware.com/ko/suite/" class="footer__btn buy-all__btn">전체 10개 제품 Suite 받기 <i class="fa-solid fa-caret-right"></i></a> <a href="https://ironsoftware.com/ko/suite/#trial-license" class="footer__btn free-trial__btn"><i class="fa-solid fa-key"></i>  무료 체험 시작하기 <i class="fa-solid fa-caret-right"></i></a> </div> </div> </div> <div class="footer__divider d-none d-xl-block"></div> <div class="footer__products"> <h2 class="visually-hidden" id="footer__products__heading">제품 링크</h2> <ul class="footer__products-list" aria-labelledby="footer__products__heading"> <li class="footer__product"> <a href="/ko/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_pdf.svg" alt="IronPDF_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> PDF 생성, 읽기 및 편집. .NET용 HTML-PDF 변환.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/word/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_word.svg" alt="IronWord_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> DOCX Word 파일 편집. Office Interop 불필요.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/excel/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_xl.svg" alt="IronXL_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Excel 및 CSV 파일 편집. Office Interop 필요 없음.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/ppt/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_ppt.svg" alt="ironppt_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> 프레젠테이션 생성, 읽기 및 편집. Office Interop 필요 없음.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/ocr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_ocr.svg" alt="IronOCR_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> 125개 언어로 OCR(이미지에서 텍스트 추출).</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/barcode/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_barcode.svg" alt="IronBarcode_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> QR 코드 및 바코드 읽기/쓰기.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/qr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_qr.svg" alt="IronQR_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> QR 코드를 읽고 쓰세요.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/zip/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_zip.svg" alt="IronZIP_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> 파일을 압축하고 압축 해제합니다.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/print/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_print.svg" alt="IronPrint_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> .NET 애플리케이션에서 문서 인쇄.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/ko/csharp/webscraper/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to 제품 링크" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_webscraper.svg" alt="IronWebScraper_로고" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> 웹사이트에서 구조화된 데이터를 추출합니다.</span> </a> </li> </ul> </div> </div> </div> <nav class="footer__first-row-wrappe" role="navigation"> <div class="footer__first-row__first-column"> <div class="footer__first-row__logo"> <a href="#"> <img loading="lazy" src="/img/products/footer-top-logo-ironpdf-for-net.svg" alt=".NET용 IronPDF" width="268" height="44"> </a> </div> <div class="footer__first-row__logo-description"> <p>PDF 파일을 HTML처럼 빠르게 변환해야 할 때.</p> </div> </div> <div class="footer__first-row__second-column"> <section class="bifrost"></section> <div class="footer__first-row__second-column__navigation"> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">문서</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/ko/examples/using-html-to-create-a-pdf/" > 코드 예제 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/how-to/create-new-pdfs/" > 방법 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/object-reference/api/" target="_blank" > API 참조 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/features/" > 특징 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/blog/" > 블로그 </a> </li> <li> <a class="footer__first-row__navigation__link i18n__distrans" href="/assets/ironpdf-brochure.pdf" target="_blank" > 제품 브로셔 </a> </li> <li> <a class="footer__first-row__navigation__link" data-bs-toggle="tooltip" data-bs-placement="right" title="LLM 및 ChatGPT, Claude와 같은 도구가 문서를 더 잘 이해할 수 있도록 도와줍니다." href="/ko/llms.txt" target="_blank" > AI 친화적 색인(llms.txt) </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">튜토리얼</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/ko/docs/" > 시작하기 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/tutorials/html-to-pdf/" > HTML을 PDF로 변환 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/tutorials/csharp-edit-pdf-complete-tutorial/" > C#을 이용한 PDF 편집 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/how-to/pixel-perfect-html-to-pdf/" > Chrome에서 HTML 디버깅하기 </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">VS 대안</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/ko/competitors/aspose-vs-ironpdf/" > IronPDF 대 Aspose </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/competitors/syncfusion-vs-ironpdf/" > IronPDF 대 Syncfusion </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/competitors/itext-vs-ironpdf/" > IronPDF와 iText 비교 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/competitors/apryse-vs-ironpdf/" > IronPDF 대 Apryse </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/competitors/questpdf-vs-ironpdf/" > IronPDF 대 QuestPDF </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">라이선스</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/ko/licensing/" > 라이선스를 구매하세요 </a> </li> <li> <a class="footer__first-row__navigation__link" href="https://ironsoftware.com/ko/resellers/" target="_blank" > 판매 대리점을 찾으세요 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/licensing/upgrades/" > 라이선스 업그레이드 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/licensing/extensions/" > 라이선스 갱신 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/get-started/license-keys/" > 라이선스 키 사용 </a> </li> <li> <a class="footer__first-row__navigation__link" href="/ko/licensing/eula/" > 최종 사용자 사용권 계약 </a> </li> <li> <a class="footer__first-row__navigation__link" href="https://ironsoftware.com/ko/enterprise/" > 기업 </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">IronPDF를 무료로 사용해 보세요</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link footer__first-row__navigation__link--highlight js-modal-open" href="https://www.nuget.org/packages/IronPdf/" target="_blank" data-modal-id="trial-license-after-download" > <i class="nuget-icon-pink"></i> NuGet에서 다운로드 </a> </li> <li> <p class="footer__first-row__navigation__link ga-dll-installer footer-dropdown-menuitem download-library-dropdown dll-installer center-dropdown js-modal-open--downloading" data-modal-id="trial-license-after-download" data-url=" /packages/IronPdf.zip " data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" data-bs-title='<div class="library_download_dropdown_tooltip v2"><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-microsoft"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">윈도우용</span></span></div><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.MacOs.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-apple"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">macOS용</span></span></div><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.Linux.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-linux"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">리눅스용</span></span></div></div>' data-bs-custom-class='dl-dropdown-tooltip' data-bs-trigger='manual'> <i class="fas fa-download"></i> DLL 다운로드 <i class="fas fa-caret-down"></i> </p> </li> <li> <p class="footer__first-row__navigation__link ga-windows-installer js-modal-open--downloading" data-modal-id="trial-license-after-download" data-url=" /packages/IronPdfInstaller.zip " > <i class="fab fa-microsoft"></i> Windows 인스톨러 </p> </li> <li> <a class="footer__first-row__navigation__link js-modal-open" href="#trial-license" data-modal-id="trial-license" > <i class="fas fa-key"></i> 무료 체험 시작하기 </a> </li> </ul> </nav> </div> </div> </nav> <nav id="footer__breadcrumbs-navigation-menu"> <div class="container-fluid"> <div class="navigation-container"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="/ko/" aria-label="Go to IronPDF">IronPDF</a></li><li class="breadcrumb-item"><a href="/ko/blog/" aria-label="Go to IronPDF 블로그">IronPDF 블로그</a></li><li class="breadcrumb-item"><a href="/ko/blog/using-ironpdf/" aria-label="Go to IronPDF 사용하기">IronPDF 사용하기</a></li><li class="breadcrumb-item active">헤더 푸터 iTextSharp 읽기</li></ol> <a id="footer__topscroll-link" class="top-return-link" href="#top"> 맨 위로 돌아가기 </a> </div> </div> </nav> <nav class="footer__additional-background-wrapper d-none" role="navigation"> <h2 class="visually-hidden" id="footer__global-navigation-menu-heading">글로벌 탐색 메뉴</h2> <div class="footer__fourth-row-wrapper"> <div class="footer__fourth-row-wrapper__logo-block"> <h3 class="visually-hidden">회사 로고 및 주소</h3> <a href="https://ironsoftware.com/ko/"> <img class="footer__fourth-row-wrapper__logo-icon" loading="lazy" src="/img/svgs/hero-logo__162x20.svg" alt="Iron Software" width="162" height="20"> </a> <div class="footer__fourth-row-wrapper__address text-center text-md-end" aria-labelledby="footer-main-links-heading"> <address> 205 N. Michigan Ave. Chicago, IL 60601 USA +1 (312) 500-3060 </address> </div> </div> <div class="footer__fourth-row-wrapper__contact-links-block"> <h3 class="visually-hidden" id="footer__main-navlinks">주요 탐색 링크</h3> <ul class="footer__fourth-row-wrapper__links-list" aria-labelledby="footer_main-navlinks"> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/ko/about-us/" target="_blank"> 회사 소개 </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/ko/news/" target="_blank"> 소식 </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/ko/customers/" target="_blank"> 고객 </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/ko/careers/" target="_blank"> 채용 </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/ko/academy/" target="_blank"> 아카데미 </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/ko/live-streams/" target="_blank"> 웹 세미나 </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://hub.ironsoftware.com/ko/licenses-view/" target="_blank"> 고객 허브 로그인 </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/ko/contact-us/" target="_blank"> 문의하기 </a> </li> <li class="d-none d-md-flex"> <div class="iron_lang-menu dropup" data-bs-target="#footerLangNameMenuDropdown"> <button type="button" class="dropdown-toggle" id="iron_lang-menu__language-name_dropdown__current-language" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 한국어 </button> <ul id="footerLangNameMenuDropdown" class="dropdown-menu" aria-labelledby="footerLangNameMenuDropdown"> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="en" hreflang="en" href="/blog/using-ironpdf/read-header-footer-itextsharp/" >English</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="es" hreflang="es" href="/es/blog/using-ironpdf/read-header-footer-itextsharp/" >Español</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="de" hreflang="de" href="/de/blog/using-ironpdf/read-header-footer-itextsharp/" >Deutsch</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="fr" hreflang="fr" href="/fr/blog/using-ironpdf/read-header-footer-itextsharp/" >Français</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="ja" hreflang="ja" href="/ja/blog/using-ironpdf/read-header-footer-itextsharp/" >日本語</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans active-lang" data-language-code="ko" hreflang="ko" href="/ko/blog/using-ironpdf/read-header-footer-itextsharp/" >한국어</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="pt" hreflang="pt" href="/pt/blog/using-ironpdf/read-header-footer-itextsharp/" >Português</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="pl" hreflang="pl" href="/pl/blog/using-ironpdf/read-header-footer-itextsharp/" >polski</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="tr" hreflang="tr" href="/tr/blog/using-ironpdf/read-header-footer-itextsharp/" >Türkçe</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="zh" hreflang="zh" href="/zh/blog/using-ironpdf/read-header-footer-itextsharp/" >简体中文</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="zh_TW" hreflang="zh-tw" data-language-alias="zh-hant" href="/zh-hant/blog/using-ironpdf/read-header-footer-itextsharp/" >繁體中文</a></li> </ul> </div> </li> </ul> </div> <div class="d-flex flex-column align-items-end"> <h3 class="visually-hidden" id="footer__main-social-links">소셜 미디어 링크</h3> <ul class="footer__fourth-row-wrapper__social-icons" aria-labelledby="footer__main-social-links"> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://github.com/iron-software" title="Iron Software GitHub 저장소를 살펴보세요" target="_blank"><img loading="lazy" src="/img/footer-socials/github.svg" alt="Github related to 소셜 미디어 링크" width='16' height='15.33'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.youtube.com/@ironsoftware" title="Iron Software의 유튜브 영상을 시청하세요." target="_blank"><img loading="lazy" src="/img/footer-socials/youtube.svg" alt="Youtube related to 소셜 미디어 링크" width='16' height='11'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://x.com/ironsoftwaredev" title="Iron Software의 트위터를 팔로우하세요." target="_blank"><img loading="lazy" src="/img/footer-socials/twitter-x.svg" alt="Twitter X related to 소셜 미디어 링크" width='16' height='13.44'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.facebook.com/teamironsoftware" title="Iron Software의 Facebook 페이지를 팔로우하여 최신 소식을 받아보세요." target="_blank"><img loading="lazy" src="/img/footer-socials/facebook.svg" alt="Facebook related to 소셜 미디어 링크" width='16' height='16'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.linkedin.com/company/ironsoftware" title="LinkedIn에서 Connect Iron Software를 찾아보세요." target="_blank"><img loading="lazy" src="/img/footer-socials/linkedin.svg" alt="Linkedin related to 소셜 미디어 링크" width='16.34' height='16'></a></li> </ul> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/ko/company/iron-slack-community/"> <img loading="lazy" src="/img/icons/slack-icon.svg" class="footer__fourth-row__slack-icon" alt="Slack Icon related to 소셜 미디어 링크" width="14" height="14"> Iron Slack에 가입하세요</a> </div> </div> </div> </nav> <nav class="footer__fifth-row-wrapper d-none"> <p class="footer__fifth-row-wrapper__teamseas"> <a href="https://ironsoftware.com/ko/about-us/1-percent-for-the-planet/"> <img loading="lazy" src="/img/footer/logo-1-percent.svg" alt="팀시즈 지원" height="40"> </a> </p> <div class="copyright__links d-flex align-items-center"> <h3 class="visually-hidden" id="footer__copyright-heading">법률 정보</h3> <p class="footer__fifth-row-wrapper__copyright-text"> 저작권 © Iron Software 2013-2026 </p> <ul class="footer__fifth-row-wrapper__links-list" aria-labelledby="footer__copyright-heading"> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/ko/company/terms/">약관</a> </li> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/ko/company/privacy/">개인정보</a> </li> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/ko/company/cookie/">쿠키</a> </li> </ul> </div> </nav> <!-- New Footer Navs --> <div class="site-footer__wrapper"> <nav class="site-footer" aria-label="Footer"> <div class="site-footer__links"> <a href="https://ironsoftware.com/ko/about-us/" target='_blank' class="site-footer__link"> 회사 소개 </a> <a href="https://ironsoftware.com/ko/news/" target='_blank' class="site-footer__link"> 소식 </a> <a href="https://ironsoftware.com/ko/customers/" target='_blank' class="site-footer__link"> 고객 </a> <a href="https://ironsoftware.com/ko/careers/" target='_blank' class="site-footer__link"> 채용 </a> <a href="https://ironsoftware.com/ko/academy/" target='_blank' class="site-footer__link"> 아카데미 </a> <a href="https://ironsoftware.com/ko/live-streams/" target='_blank' class="site-footer__link"> 웹 세미나 </a> <a href="https://hub.ironsoftware.com/ko/licenses-view/" target='_blank' class="site-footer__link"> 고객 허브 로그인 </a> <a href="https://ironsoftware.com/ko/contact-us/" target='_blank' class="site-footer__link"> 문의하기 </a> </div> <div class="site-footer__bar"> <div class="site-footer__ratings"> <a class="site-footer__rating" href="https://ironsoftware.com/ko/awards-and-recognition/" aria-label="G2 Reviews - view awards and recognition"> <div class="site-footer__rating-logo"> <img class="img-fluid" src="/img/awards/g2-reviews.svg" alt="G2 Reviews" width="48" height="48" loading="lazy"> </div> <div class="site-footer__rating-content"> <div class="site-footer__rating-label"> <div class="site-footer__rating-star-meter" role="img" aria-label="Rated 4.9 out of 5 stars" style="--rating-percent: 98%;"> <span class="site-footer__rating-stars-base" aria-hidden="true">★★★★★</span> <span class="site-footer__rating-stars-fill" aria-hidden="true">★★★★★</span> </div> </div> <span class="site-footer__rating-score"><strong>4.9</strong> / 5</span> </div> </a> <a class="site-footer__rating" href="https://ironsoftware.com/ko/awards-and-recognition/" aria-label="Capterra Reviews - view awards and recognition"> <div class="site-footer__rating-logo"> <img class="img-fluid" src="/img/awards/capterra-reviews.svg" alt="Capterra Reviews" width="32" height="32" loading="lazy"> </div> <div class="site-footer__rating-content"> <div class="site-footer__rating-label"> <div class="site-footer__rating-star-meter" role="img" aria-label="Rated 5 out of 5 stars" style="--rating-percent: 100%;"> <span class="site-footer__rating-stars-base" aria-hidden="true">★★★★★</span> <span class="site-footer__rating-stars-fill" aria-hidden="true">★★★★★</span> </div> </div> <span class="site-footer__rating-score"><strong>5</strong> / 5</span> </div> </a> </div> <div class="site-footer__brand"> <div class="site-footer__brand-logo"> <img src="/img/svgs/hero-logo__162x20.svg" alt="Iron Software" width="162" height="20" loading="lazy"> </div> <span class="site-footer__address">205 N. Michigan Ave. Chicago, IL 60601 USA +1 (312) 500-3060</span> </div> <div class="site-footer__contact"> <ul class="site-footer__social-items"> <li class="site-footer__social-item"> <a href="https://github.com/iron-software" class="site-footer__social-link" aria-label="깃허브" target='_blank' > <i class="fa-brands fa-github"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.youtube.com/@ironsoftware" class="site-footer__social-link" aria-label="유튜브" target='_blank' > <i class="fa-brands fa-youtube"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://x.com/ironsoftwaredev" class="site-footer__social-link" aria-label="엑스" target='_blank' > <i class="fa-brands fa-x-twitter"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.facebook.com/teamironsoftware" class="site-footer__social-link" aria-label="페이스북" target='_blank' > <i class="fa-brands fa-square-facebook"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.linkedin.com/company/ironsoftware" class="site-footer__social-link" aria-label="링크드인" target='_blank' > <i class="fa-brands fa-linkedin-in"></i> </a> </li> </ul> <a href="https://ironsoftware.com/ko/company/iron-slack-community/" class="site-footer__cta" arial-label="Join Iron Slack" > <div class="site-footer__cta-logo"> <img src="/img/icons/slack-icon.svg" alt="Slack Icon related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기" width="16" height="16" loading="lazy"> </div> <span class="site-footer__cta-text">Iron Slack에 가입하세요</span> </a> </div> </div> </nav> </div> <div class="site-copyright__wrapper"> <nav class="site-copyright" aria-label="Copyright & legal"> <div class="site-copyright__partner-logos"> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_pdfa--hover.svg" alt="PDF 협회 회원" width="46" height="28" loading="lazy"> </div> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_microsoft--hover.svg" alt="마이크로소프트 파트너" width="92" height="28" loading="lazy"> </div> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_aws--hover.svg" alt="AWS 파트너 네트워크" width="87" height="28" loading="lazy"> </div> </div> <div class="site-copyright__meta"> <span class="site-copyright__text">저작권 © Iron Software 2013-2026</span> <div class="site-copyright__legal"> <a href="https://ironsoftware.com/ko/company/terms/" class="site-copyright__legal-link">약관</a> <a href="https://ironsoftware.com/ko/company/privacy/" class="site-copyright__legal-link">개인정보</a> <a href="https://ironsoftware.com/ko/company/cookie/" class="site-copyright__legal-link">쿠키</a> </div> </div> <div class="site-copyright__donation"> <img src="/img/footer/badge-one_percent.png" alt="One Perent for the Planet" width="230" height="32" loading="lazy"> </div> </nav> </div> </footer> <style> #ironSupportWidgetButtonContainer { display: none; position: fixed; bottom: 16px; right: 16px; width: 60px; height: 60px; z-index: 10500; #ironSupportWidgetButton { font: normal 900 24px/1 var(--ff-gotham); color: #fff; background: url('/img/widgets/livechat/icon_messages.svg') #2c96d5; background-repeat: no-repeat; background-position: center; background-size: 32px auto; width: 60px; height: 60px; border-radius: 50%; cursor: pointer; user-select: none; transition: transform 0.1s ease-in-out; border: none; display: flex; justify-content: center; align-items: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 4px, rgba(0, 0, 0, 0.2) 0px 2px 12px; &:hover { box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 6px, rgba(0, 0, 0, 0.2) 0px 4px 16px; transform: scale(1.1); } } /* control button icon if widget open (active) */ &:has(~#ironSupportWidgetContainer.active) { #ironSupportWidgetButton { background: url('/img/widgets/livechat/icon_x.svg') #2c96d5; background-repeat: no-repeat; background-position: center; background-size: 26px auto; } } } #ironSupportWidgetContainer { /* only display via vwo, on test process */ position: fixed; bottom: 92px; right: 16px; width: 416px; height: 700px; padding: 0; display: none; z-index: 10501; &.active { display: block; } .ironSupportWidgetBody { overflow: hidden; background-color: #fff; border: solid 0px #e7eef0; border-radius: 16px; display: flex; flex-direction: column; height: 100%; padding: 0; margin: 0; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 4px, rgba(0, 0, 0, 0.2) 0px 2px 12px; .ironSupportWidgetHeader { .ironSupportWidgetTitle { background-color: #2a95d5; display: flex; align-items: center; column-gap: 16px; padding: 16px 24px; .supportLogo { width: 48px; height: 48px; overflow: hidden; display: flex; justify-content: center; align-items: center; background-color: #aaa; border: solid 2px #fff; border-radius: 50%; } .dotSupportStatus { position: absolute; bottom: 0px; right: 0px; background-color: #444; border: solid 2px #fff; width: 11px; height: 11px; border-radius: 50%; &.green { background-color: #02bda5; } &.red { background-color: red; } } h2.title { margin: 0; padding: 0; font: normal 700 18px/1.6 var(--ff-gotham); color: #fff; } .subTitle { margin: 0; padding: 0; font: normal 400 12px/1.4 var(--ff-gotham); color: #fff; } } .ironSupportWidgetButtons { display: flex; column-gap: 2px; padding: 8px 24px 0; margin: 0; background-color: #fff; overflow: hidden; align-items: center; justify-content: center; cursor: pointer; background-color: #2a95d5; .iron_widget_button { flex: 1 0 calc(100%/3); display: flex; align-items: center; justify-content: center; padding: 12px 0; font: normal 700 14px/1.2 var(--ff-gotham); cursor: pointer; color: #fff; user-select: none; border-top: solid 3px #2a95d5; background-color: #5fafdf; &:hover { color: #181818; background-color: #d9e5e9; } &.active { color: #181818; border-top: solid 3px #e01a59; background-color: #fff; i { color: #2a95d5; } } i { margin-right: 8px; width: 18px; height: 18px; color: inherit; display: flex; align-items: center; justify-content: center; pointer-events: none; } } } } &>.ironSupportWidgetTab { flex: 1 1 auto; background-color: #fff; padding: 0; margin: 0; } } /* hschat start */ #hubspotConversationsInlineContainer { height: 100%; overflow: hidden; #hubspotConversationsInlinePlaceholder { /* hubspot chat use height in (px) to render its container, can't be a relative value hide the chat header by moving up the container 72px */ --offset_chat_header: 72px; margin-top: calc(-1 * var(--offset_chat_header)); height: 100%; max-height: calc(100% + var(--offset_chat_header)); z-index: 0; /* below is gen by hubspot */ #hubspot-conversations-inline-parent { height: calc(100% + var(--offset_chat_header)); &>iframe { width: 100%; height: 100%; } } } } /* hschat end */ /* hsform start */ .ironSupportWidgetFormPlaceholder { padding: 24px; height: 100%; form.hs-form { width: 100%; display: flex; flex-direction: column; row-gap: 24px; height: 100%; .hs-input { height: unset; } .hs-button { margin: 0; height: unset; max-width: unset; } .hs-form-field:first-child { margin: 0; } .hs-form-field { margin: 0; } p { margin: 0; } select.hs-input, input[type="tel"], input[name="lastname"], input[name="phone"], input[name="firstname"], input[name="email"] { width: 100%; border-radius: 6px; border: solid 1px #e7eef0; padding: 8px 16px; font: normal 400 14px/1.2 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; } div.hs-form-field:has(ul.hs-error-msgs) { ul.hs-error-msgs { display: none; } input[name="email"] { border: solid 1px #e01a59; } } input[type="submit"] { background-color: #fff; color: #2a95d5; border: solid 1px #d9e5e9; display: flex; justify-content: center; align-items: center; border-radius: 64px; padding: 8px 0; min-width: 128px; font: normal 700 14px/1.6 var(--ff-gotham); user-select: none; transition: all 0.1s ease-in-out; &:hover { color: #e01a59; box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 6px, rgba(0, 0, 0, 0.2) 0px 4px 16px; } } div.hs-submit { margin-top: auto; align-self: end; } div.hs-form-field>label { font: normal 700 14px/1.2 var(--ff-gotham); color: #525252; margin-bottom: 12px; display: block; } textarea[name="TICKET.content"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; min-height: 84px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } input[name="phone"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } input[name="email"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } div.input:has(>input[type="file"]) { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; position: relative; display: block; cursor: pointer; line-height: 1.5; border: .075rem solid #d9e5e9; border-radius: 6px; user-select: none; cursor: pointer; min-height: 44px; background-color: #fafafb; &:after { font: normal 400 14px/1.4 var(--ff-gotham); position: absolute; z-index: 0; display: flex; align-items: center; top: 0; bottom: 0; left: 0; width: 100%; padding: 12px 16px; content: "파일을 선택하세요..."; cursor: pointer; } &:before { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; position: absolute; z-index: 1; display: flex; justify-content: center; align-items: center; content: "먹다"; top: 0; bottom: 0; right: 0; width: fit-content; padding: 12px 16px; border-radius: 0 6px 6px 0; cursor: pointer; background-color: #d9e5e9; } &:hover { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } &:hover:before { background-color: #5fafdf; color: #fff; } input[type="file"] { margin: 0; filter: alpha(opacity=0); opacity: 0; padding: 0; cursor: pointer; position: absolute; z-index: 2; height: 100%; width: 100%; } } ul[role="checkbox"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; padding: 0; margin: 0; list-style: none; &>li>label { display: inline-flex; align-items: center; column-gap: 8px; } input[type="radio"] { width: unset; accent-color: #e01a59; height: unset; &:hover, &:checked, &:checked:hover { color: #e01a59; accent-color: none; } } } } } /* hsform end */ } @media screen and (max-width: 575px) { body:has(#ironSupportWidgetContainer.active) { overflow: hidden; } #ironSupportWidgetButtonContainer:has(~#ironSupportWidgetContainer.active) { left: unset; bottom: unset; top: 16px; right: 16px; width: 48px; height: 48px; z-index: 10502; #ironSupportWidgetButton { width: 48px; height: 48px; border: solid 1px #fff; } } #ironSupportWidgetContainer { right: 0; bottom: 0; width: 100%; height: 100%; .ironSupportWidgetBody { border-radius: 0px; } } } </style> <!-- Iron Support Widget Button --> <div id="ironSupportWidgetButtonContainer"> <div id="ironSupportWidgetButton" onclick="toggleIronSupportWidget()"></div> </div> <!-- Iron Support Widget Body --> <div id="ironSupportWidgetContainer" class=""> <div class="ironSupportWidgetBody"> <div class="ironSupportWidgetHeader"> <div class="ironSupportWidgetTitle"> <div style="position:relative;"> <div class="dotSupportStatus green"></div> <div class="supportLogo"> <img src="/img/support-team/support_widget.png" width="48" height="48" alt="Support Widget related to C#에서 iTextSharp와 IronPDF를 사용하여 PDF에 헤더 및 푸터 추가하기" loading="lazy"> </div> </div> <div> <h2 id="ironSupportWidgetHeaderTitle" class="title">아이언 서포트 팀</h2> <div id="ironSupportWidgetHeaderSubTitle" class="subTitle">저희는 주 5일, 24시간 온라인으로 운영합니다.</div> </div> </div> <div class="ironSupportWidgetButtons"> <div class="iron_widget_button active" data-iron-widget-tab="ironSupportWidgetTab1" data-iron-widget-subtitle="저희는 주 5일, 24시간 온라인으로 운영합니다." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-messages-question"></i>채팅</div> <div class="iron_widget_button" data-iron-widget-tab="ironSupportWidgetTab2" data-iron-widget-subtitle="24시간 이내에 이메일로 답변을 받아보세요." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-envelope"></i>이메일</div> <div class="iron_widget_button" data-iron-widget-tab="ironSupportWidgetTab3" data-iron-widget-subtitle="전화로 자세히 이야기하고 싶으신가요? 24시간 이내에 연락드리겠습니다." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-phone"></i>전화해</div> </div> </div> <div id="ironSupportWidgetTab1" class="ironSupportWidgetTab"> <div id="hubspotConversationsInlineContainer"> <div id="hubspotConversationsInlinePlaceholder"><!-- placeholder --></div> </div> </div> <div id="ironSupportWidgetTab2" class="ironSupportWidgetTab" style="display:none;"> <div class="ironSupportWidgetFormPlaceholder"><!-- placeholder --></div> </div> <div id="ironSupportWidgetTab3" class="ironSupportWidgetTab" style="display:none;"> <div class="ironSupportWidgetFormPlaceholder"><!-- placeholder --></div> </div> </div> </div> <!-- # uncomment for test or want chat appear sooner, on website it delay by core web vital # chat will not appear until the trcking script (below) loaded --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/22630553.js"></script> <script> /* pre-register window.ironSupportWidget */ if (typeof window.ironSupportWidget === 'undefined') { window.ironSupportWidget = {}; window.ironSupportWidget.isHsFormLoaded = false; } // hubspot chat place holder if (typeof window.hsConversationsSettings === 'undefined') { window.hsConversationsSettings = {}; } // window.hsConversationsSettings.inlineEmbedSelector = '#hubspotConversationsInlinePlaceholder'; function loadHsFormInSupportWidget() { const supportWidgetFormOptionA = { portalId: "22630553", formId: "8d0b0bf2-6aea-4c76-959c-cb2f9183f7c5", region: "na1", target: "#ironSupportWidgetContainer #ironSupportWidgetTab2 .ironSupportWidgetFormPlaceholder", onFormSubmitted: function ($form, data) { window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(232);}); } } const supportWidgetFormOptionB = { portalId: "22630553", formId: "c8f2b8df-0228-4331-b207-9c6c9910764c", region: "na1", target: "#ironSupportWidgetContainer #ironSupportWidgetTab3 .ironSupportWidgetFormPlaceholder", onFormSubmitted: function ($form, data) { window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(232);}); } }; dynamicLoadHsForms_inSupportWidget(supportWidgetFormOptionA); dynamicLoadHsForms_inSupportWidget(supportWidgetFormOptionB); } function ironSupportWidgetTabChange(e) { const target = e.target; const targetWidgetTab = target.getAttribute('data-iron-widget-tab'); const textSubtitle = target.getAttribute('data-iron-widget-subtitle'); if (!targetWidgetTab) return; // Save current tab state window.ironSupportWidget.lastTab = targetWidgetTab; window.ironSupportWidget.subTitle = textSubtitle; // Remove 'active' class from all buttons document.querySelectorAll('.iron_widget_button').forEach(button => { button.classList.remove('active'); }); // Add 'active' class to clicked button target.classList.add('active'); // Hide/Show tab document.querySelectorAll('.ironSupportWidgetTab').forEach(tab => { tab.style.display = 'none'; }); const targetTab = document.getElementById(targetWidgetTab); if (targetTab) { targetTab.style.display = 'block'; } // Update subtitle in header const subtitleEl = document.getElementById('ironSupportWidgetHeaderSubTitle'); if (subtitleEl) { subtitleEl.textContent = textSubtitle || ''; } } function toggleIronSupportWidget(action = null) { const widgetContainer = document.getElementById('ironSupportWidgetContainer'); function openWidget() { window.ironSupportWidget.isOpen = true; widgetContainer.classList.add('active'); if (typeof window.ironSupportWidget.isHsFormLoaded !== true) { loadHsFormInSupportWidget(); window.ironSupportWidget.isHsFormLoaded = true; } } function closeWidget() { window.ironSupportWidget.isOpen = false; widgetContainer.classList.remove('active'); } if (action === 'open') { openWidget(); } else if (action === 'close') { closeWidget() } else { if (window.getComputedStyle(widgetContainer).display !== 'none') { closeWidget() } else { openWidget(); } } } // load hubspot form dynamically function dynamicLoadHsForms_inSupportWidget(formOption, target_override = null) { function waitForHsptReady() { var interval = setInterval(function() { if (typeof hbspt !== "undefined") { clearInterval(interval); var option = formOption; if (target_override !== null) { option.target = target_override; } hbspt.forms.create(option); } }, 10); } if (typeof hbspt === "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//js.hsforms.net/forms/embed/v2.js"; document.getElementsByTagName("head")[0].appendChild(script); script.onload = function() { waitForHsptReady(); }; } else { waitForHsptReady(); } } </script> <!-- Start Commonly Loaded Scripts --> <script src="/front/js/iron.loaders.js?v=1776616414" ></script><script src="/front/js/iron.helpers.js?v=1776616414" ></script><script src="/front/js/global.js?v=1776616414" ></script><script src="/front/js/bootstrap-loader/bootstrap-autoloader.min.js?v=1776616414" type="module" async="1"></script><script src="/front/js/page.js?v=1776616414" ></script><script src="/front/js/product.js?v=1776616414" ></script><!-- customJSFiles, Start --> <script src="/front/js/blog.js?v=1776616414" ></script> <script src="/front/js/blog-post.js?v=1776616414" ></script> <script src="/front/js/competitors.js?v=1776616414" ></script> <!-- customJSFiles, End --> <!-- Clarity Code Start --> <script type="text/javascript"> if (!window.deviceDetails.mobileCheck && window.deviceDetails.isDesktopViewport) { (function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i+"?ref=gtm2";y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,"clarity","script","cximmak38b"); } </script><!-- Clarity Code End --> <!-- AC Code Start --> <script> document.queueDeferredUserIntentAction(function() { importScript("tracking-code/activecampaign.js", debug()); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "activecampaign"}, debug()); }); </script> <!-- AC Code End --> <!-- Impact Sale Tracker Start --> <script> document.queueDeferredUserIntentAction(function() { importScript(["tracking-code/impactsale.js"], debug()).then(function() { setTimeout(function() { importScript(["tracking-code/impactsale-id.js"], debug()); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "impactsale"}, debug()); }, 150); }); }); </script> <!-- Impact Sale Tracker End --> <!-- End Commonly Loaded Scripts --> <!-- Start Setup Helper Functions --> <script> /** * Configures the Algolia Search feature using set-up data that is presumed to originate from an Iron Product's common.json file. * * @param {String} searchData the JSON string data (usually taken from the $common_json['search'] property key) * @param {String} indexName the Algolia Index that should be used (usually taken from the $common_json['search']['name] property key */ function setupAlgoliaSearch(searchData, indexName) { if (typeof 'aa' != 'undefined' && window.dataLayer) { window.searchData = JSON.parse(searchData); window.searchClient = algoliasearch(window.searchData.applicationId, window.searchData.apiKey); window.searchIndex = window.searchClient.initIndex(indexName); aa('init', { appId: window.searchData.applicationId, apiKey: window.searchData.apiKey, useCookie: true }); aa('getUserToken', null, (err, newUserToken) => { if (err) { console.error(err); return; } window.algoliaUserToken = newUserToken; }); let userToken = window.algoliaUserToken; aa('onUserTokenChange', (userToken) => { window.dataLayer.push({ algoliaUserToken: userToken, }); }, { immediate: true }); } else { logMsg("error", 'Algolia failed setup. The required object definitions do not exist!'); } } </script><!-- End Setup Helper Functions --> <!-- Start Algolia Insights Client --> <script> document.addEventListener("DOMContentLoaded", function() { document.queueDeferredUserIntentAction(function() { importScript(['tracking-code/algolia.js', 'algoliasearch-lite.umd.js']).then(function(status) { const algoliaSetup = function() { setupAlgoliaSearch('{"applicationId":"4S8YCFXKT5","apiKey":"ec878b51c06a7d5fbb7aab95991ab432","indexName":"ironpdf","inputPlaceholder":"API, \ucf54\ub4dc \uc608\uc81c \ubc0f \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uac80\uc0c9\ud558\uc138\uc694.","searchText":"\uac80\uc0c9","boostedResult":"\uc774 \uae00\uc774 \uac00\uc7a5 \uc720\uc6a9\ud55c \uae00\uc774 \ub420 \uac83\uc785\ub2c8\ub2e4.","searchShortCut":["Ctrl","K"],"categories":[{"key":"Best match","title":"\ucd5c\uc801\uc758 \ub9e4\uce58","iconClass":null,"color":null},{"key":"Code Examples","title":"\ucf54\ub4dc \uc608\uc81c","iconClass":"fas fa-code","color":"#2A95D5"},{"key":"Products","title":"\uc81c\ud488","iconClass":"fas fa-bookmark","color":"#E01A59"},{"key":"Get Started","title":"\uc2dc\uc791\ud558\uae30","iconClass":"fas fa-rocket","color":"#2A95D5"},{"key":"Tutorials","title":"\ud29c\ud1a0\ub9ac\uc5bc","iconClass":"fas fa-graduation-cap","color":"#FDA509"},{"key":"How-Tos","title":"\ubc29\ubc95","iconClass":"fa-regular fa-book","color":"#63C1A0"},{"key":"Languages","title":"\uc5b8\uc5b4","iconClass":"fas fa-globe-americas","color":"#2A95D5"},{"key":"Licensing","title":"\ub77c\uc774\uc120\uc2a4","iconClass":"fas fa-shopping-cart","color":"#E01A59"},{"key":"API Reference","title":"API \ucc38\uc870","iconClass":"fas fa-bookmark","color":"#89D3DF"},{"key":"Features","title":"\ud2b9\uc9d5","iconClass":"fas fa-bookmark","color":"#63C1A0"},{"key":"Support","title":"\uc9c0\uc6d0","iconClass":"fas fa-info-circle","color":"#2A95D5"},{"key":"Blog","title":"\ube14\ub85c\uadf8","iconClass":"fa-regular fa-file","color":"#15aabf"},{"key":"Troubleshooting","title":"\ubb38\uc81c \ud574\uacb0","iconClass":"fas fa-wrench","color":"#15aabf"},{"key":"Product Updates","title":"\uc81c\ud488 \uc5c5\ub370\uc774\ud2b8","iconClass":"fa-solid fa-rotate","color":"#146ebe","class":"bottom_separator"}],"previewEnabled":false,"categorySortingEnabled":false,"breadcrubmsEnabled":true,"searchResultLimit":10,"breadcrumbs":[{"title":"IronPDF","url":"/"},{"title":"\ub77c\uc774\uc120\uc2a4","url":"/licensing/"},{"title":"\ubb38\uc11c","url":"/docs/"},{"title":"\ucf54\ub4dc \uc608\uc81c","url":"/examples/using-html-to-create-a-pdf/"},{"title":"\ud29c\ud1a0\ub9ac\uc5bc","url":"/tutorials/html-to-pdf/"},{"title":"\ubc29\ubc95","url":"how-to/create-new-pdfs/"},{"title":"API \ucc38\uc870","url":"/object-reference/api/"},{"title":"\uc9c0\uc6d0","url":"https://ironsoftware.com/contact-us/"},{"title":"IronOCR","url":"https://ironsoftware.com/csharp/ocr/"},{"title":"IronBarcode","url":"https://ironsoftware.com/csharp/barcode/"},{"title":"IronXL","url":"https://ironsoftware.com/csharp/excel/"},{"title":"IronWebScraper","url":"https://ironsoftware.com/csharp/webscraper/"},{"title":"Iron Software","url":"https://ironsoftware.com/"},{"title":"\uc81c\ud488","url":"https://ironsoftware.com/"}],"noResults":{"message":"“{query}” \uc5d0 \ub300\ud55c \uac80\uc0c9 \uacb0\uacfc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.","icon":"/img/svgs/search-no-results.svg","alt":"\uba54\uc2dc\uc9c0 \uc544\uc774\ucf58"},"error":{"message":"\uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc785\ub825\ud558\uc138\uc694.","icon":"/img/svgs/search-no-results.svg","alt":"\uba54\uc2dc\uc9c0 \uc544\uc774\ucf58"}}', "ironpdf__ko"); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "algolia"}); }; const algoliaReady = function() { return typeof aa != 'undefined' && typeof algoliasearch != 'undefined' && window.dataLayer; }; if (algoliaReady()) { algoliaSetup(); } else { const aaTimer = setInterval(function() { if (algoliaReady()) { algoliaSetup(); clearInterval(aaTimer); } }, 500); } }); }); }); </script> <!-- End Algolia Insights Client --> <script src="https://iron-ai-assistant-frontend-152f73438a0d.herokuapp.com/widget/ironpdf-assistant.js" data-server-url="https://iron-ai-assistant-frontend-152f73438a0d.herokuapp.com" data-hide-button="true" data-trigger-selector="#ai-chat-assistant" data-min-height="80%" data-margin-top="120px" data-vertical-position="top" defer ></script> </body> </html>