C#을 사용하여 PDF에 페이지 번호를 추가하는 방법

C#을 사용하여 PDF에 페이지 번호를 추가하는 방법

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF를 사용하면 C#에서 머리글/바닥글에 {page}{total-pages} 자리 표시자 문자열을 사용하여 PDF에 페이지 번호를 추가할 수 있으며, 문서 탐색 기능을 향상시키기 위해 특정 페이지나 섹션에 이를 적용하는 옵션도 제공합니다.

페이지 번호는 PDF 문서 내 각 페이지에 할당된 순차적인 번호입니다. 이러한 요소들은 탐색에 필수적인 구성 요소로서, 독자들이 특정 페이지를 찾고 현재 위치를 파악하는 데 도움을 줍니다. 페이지 번호를 사용하면 콘텐츠를 쉽게 인용하고 참조할 수 있습니다. IronPDF 사용하면 PDF에 페이지 번호를 간단하게 추가할 수 있습니다.

빠른 시작: PDF에 페이지 번호를 쉽게 추가하는 방법

IronPDF 사용하여 PDF 문서에 페이지 번호를 추가하세요. 최소한의 C# 코드로 머리글이나 바닥글에 동적 페이지 번호를 삽입하고, 위치를 사용자 지정하고, 페이지 번호를 표시할 페이지를 지정할 수 있습니다. IronPDF 새 PDF 파일을 처리하든 기존 PDF 파일을 처리하든 관계없이 문서 탐색 및 구성을 향상시키는 유연한 솔루션을 제공합니다.

  1. NuGet 패키지 관리자를 사용하여 https://www.nuget.org/packages/IronPdf 설치하기

    PM > Install-Package IronPdf
  2. 다음 코드 조각을 복사하여 실행하세요.

    new IronPdf.ChromePdfRenderer { RenderingOptions = { HtmlFooter = new IronPdf.HtmlHeaderFooter { HtmlFragment = "<center>{page}of{total-pages}</center>", DrawDividerLine = true } } }
         .RenderHtmlAsPdf("<h1>My multi-page document</h1><div style='page-break-after:always;'></div><h1>Page 2</h1>")
         .SaveAs("numbered-pages.pdf");
  3. 실제 운영 환경에서 테스트할 수 있도록 배포하세요.

    무료 체험판으로 오늘 프로젝트에서 IronPDF 사용 시작하기

    arrow pointer


PDF에 기본 페이지 번호를 추가하는 방법은 무엇인가요?

{page}{total-pages} 자리 표시자 문자열을 TextHeaderFooter 또는 HtmlHeaderFooter 클래스와 함께 사용하면 현재 페이지 번호와 총 페이지 수를 추가할 수 있습니다. 이 기능은 전문적인 서식이 필요한 새 PDF를 생성 하거나 HTML을 PDF 문서로 변환할 때 필수적입니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-basic.cs
using IronPdf;

// Create text header
TextHeaderFooter textHeader = new TextHeaderFooter()
{
    CenterText = "{page} of {total-pages}"
};

// Create html footer
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};

// Render a new PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");

// Add header and footer
pdf.AddTextHeaders(textHeader);
pdf.AddHtmlFooters(htmlFooter);

pdf.SaveAs("pdfWithPageNumber.pdf");
Imports IronPdf

' Create text header
Private textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}

' Create html footer
Private htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}

' Render a new PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")

' Add header and footer
pdf.AddTextHeaders(textHeader)
pdf.AddHtmlFooters(htmlFooter)

pdf.SaveAs("pdfWithPageNumber.pdf")
$vbLabelText   $csharpLabel

위 코드의 출력 PDF는 아래와 같습니다.

또한 ChromePdfRenderer의 렌더링 옵션에 페이지 번호 자리 표시자 문자열을 사용하여 머리글과 바닥글을 직접 추가할 수 있습니다. 이 방법은 렌더링 옵션을 사용하여 PDF 출력을 사용자 지정할 때 유용합니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-chromerenderer.cs
using IronPdf;

// Add header and footer to rendering options
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "{page} of {total-pages}"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};

string html = @"
    <h1>Hello World!</h1>
<div style='page-break-after: always;'/>
    <h1>2nd Page!</h1>";

// Render new PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);

pdf.SaveAs("applyPageNumberWithRenderingOptions.pdf");
Imports IronPdf

' Add header and footer to rendering options
Private renderer As New ChromePdfRenderer()
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}

Dim html As String = "
    <h1>Hello World!</h1>
<div style='page-break-after: always;'/>
    <h1>2nd Page!</h1>"

' Render new PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

pdf.SaveAs("applyPageNumberWithRenderingOptions.pdf")
$vbLabelText   $csharpLabel

복잡한 문서를 다룰 때는 페이지 번호가 올바르게 표시되도록 페이지 나누기사용자 지정 여백을 고려해야 합니다.

특정 페이지에만 페이지 번호를 추가하려면 어떻게 해야 하나요?

IronPDF 사용하면 페이지 번호가 표시되는 위치를 제어할 수 있습니다. 특정 페이지에서 시작하도록 하거나 짝수 번 색인된 페이지와 같은 특정 그룹에 적용하도록 설정할 수 있습니다. 이러한 유연성은 PDF 보고서를 생성 하거나 여러 섹션으로 구성된 문서를 작업할 때 유용합니다.

먼저, 페이지 번호를 적용할 수 있도록 PDF 문서를 준비합니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-preparation.cs
using IronPdf;
using System.Linq;
using System.Collections.Generic;

string multi_page_html = @"
    <p>This is the 1st Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 2nd Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 3rd Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 4th Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 5th Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 6th Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 7th Page</p>";

// Create header
HtmlHeaderFooter header = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};

// Render PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(multi_page_html);

// Create a Page Range 0..6
var allPageIndices = Enumerable.Range(0, pdf.PageCount);
Imports IronPdf
Imports System.Linq
Imports System.Collections.Generic

Private multi_page_html As String = "
    <p>This is the 1st Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 2nd Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 3rd Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 4th Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 5th Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 6th Page</p>
<div style = 'page-break-after: always;' ></div>
    <p>This is the 7th Page</p>"

' Create header
Private header As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}

' Render PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf(multi_page_html)

' Create a Page Range 0..6
Private allPageIndices = Enumerable.Range(0, pdf.PageCount)
$vbLabelText   $csharpLabel

짝수 페이지에만 번호를 매기려면 어떻게 해야 하나요?

이전 예제를 바탕으로, 이 코드는 페이지 번호를 짝수 페이지 인덱스에만 적용합니다. 필터링은 짝수 페이지 인덱스에 대해 적용되므로 결과 PDF에는 홀수 페이지 번호에 숫자가 표시됩니다. 페이지 색인은 0부터 시작하고, 페이지 번호는 1부터 시작합니다. 이 기법은 전통적인 책 형식을 따르는 문서나 병합된 PDF 문서를 다룰 때 적합합니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-even-pages.cs
// Get even page indexes (resulting in odd page numbers)
var evenPageIndices = allPageIndices.Where(i => i % 2 == 0);

pdf.AddHtmlHeaders(header, 1, evenPageIndices);
pdf.SaveAs("EvenPages.pdf");
' Get even page indexes (resulting in odd page numbers)
Dim evenPageIndices = allPageIndices.Where(Function(i) i Mod 2 = 0)

pdf.AddHtmlHeaders(header, 1, evenPageIndices)
pdf.SaveAs("EvenPages.pdf")
$vbLabelText   $csharpLabel

홀수 페이지에만 번호를 매기려면 어떻게 해야 하나요?

색인 번호가 홀수인 페이지에는 페이지 번호를 추가하세요. 이 방법은 양면 인쇄 시 페이지 번호가 인쇄물의 한쪽 면에만 표시되어야 하는 경우에 흔히 사용됩니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-odd-pages.cs
// Get odd page indexes (resulting in even page numbers)
var oddPageIndexes = allPageIndices.Where(i => i % 2 != 0);

pdf.AddHtmlHeaders(header, 1, oddPageIndexes);
pdf.SaveAs("OddPages.pdf");
' Get odd page indexes (resulting in even page numbers)
Dim oddPageIndexes = allPageIndices.Where(Function(i) i Mod 2 <> 0)

pdf.AddHtmlHeaders(header, 1, oddPageIndexes)
pdf.SaveAs("OddPages.pdf")
$vbLabelText   $csharpLabel

마지막 페이지에만 페이지 번호를 추가하려면 어떻게 해야 하나요?

마지막 페이지에만 페이지 번호를 추가하세요. 이는 요약 페이지나 문서의 끝을 표시할 때 유용합니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-last-page-only.cs
// Last page only
var lastPageIndex = new List<int>() { pdf.PageCount - 1 };

pdf.AddHtmlHeaders(header, 1, lastPageIndex);
pdf.SaveAs("LastPageOnly.pdf");
' Last page only
Dim lastPageIndex = New List(Of Integer)() From {pdf.PageCount - 1}

pdf.AddHtmlHeaders(header, 1, lastPageIndex)
pdf.SaveAs("LastPageOnly.pdf")
$vbLabelText   $csharpLabel

첫 페이지에만 페이지 번호를 추가하려면 어떻게 해야 하나요?

첫 페이지에만 페이지 번호를 추가하세요. 이 방법은 표지나 첫 페이지에만 식별 정보가 필요한 문서에 적합합니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-first-page-only.cs
// First page only
var firstPageIndex = new List<int>() { 0 };

pdf.AddHtmlHeaders(header, 1, firstPageIndex);
pdf.SaveAs("FirstPageOnly.pdf");
' First page only
Dim firstPageIndex = New List(Of Integer)() From {0}

pdf.AddHtmlHeaders(header, 1, firstPageIndex)
pdf.SaveAs("FirstPageOnly.pdf")
$vbLabelText   $csharpLabel

페이지 번호를 추가할 때 첫 페이지를 건너뛰려면 어떻게 해야 하나요?

헤더를 적용할 때 첫 페이지는 건너뛰세요. 이 일반적인 요구 사항은 페이지 번호를 표시해서는 안 되는 표지나 제목 페이지가 있는 문서에 적용됩니다. 표지 편지를 포함한 PDF 양식 이나 문서를 다룰 때 이 기법을 사용하면 전문적인 형식을 유지할 수 있습니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-skip-first-page.cs
// Skip the first page
var skipFirstPage = allPageIndices.Skip(1);

pdf.AddHtmlHeaders(header, 1, skipFirstPage);
pdf.SaveAs("SkipFirstPage.pdf");
' Skip the first page
Dim skipFirstPage = allPageIndices.Skip(1)

pdf.AddHtmlHeaders(header, 1, skipFirstPage)
pdf.SaveAs("SkipFirstPage.pdf")
$vbLabelText   $csharpLabel

첫 페이지를 건너뛰고 두 번째 페이지부터 1부터 번호를 매기려면 어떻게 해야 하나요?

첫 페이지는 건너뛰고 두 번째 페이지를 1페이지로 간주하여 페이지 번호를 매기십시오. 이 방법은 학술 논문이나 공식 보고서와 같이 표지를 페이지 번호 매기기 순서에 포함시키지 않아야 하는 문서에 적합합니다.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-skip-first-page-and-dont-count-it.cs
// Skip the first page and start numbering the second page as page 1
var skipFirstPageAndDontCountIt = allPageIndices.Skip(1);

pdf.AddHtmlHeaders(header, 0, skipFirstPageAndDontCountIt);
pdf.SaveAs("SkipFirstPageAndDontCountIt.pdf");
' Skip the first page and start numbering the second page as page 1
Dim skipFirstPageAndDontCountIt = allPageIndices.Skip(1)

pdf.AddHtmlHeaders(header, 0, skipFirstPageAndDontCountIt)
pdf.SaveAs("SkipFirstPageAndDontCountIt.pdf")
$vbLabelText   $csharpLabel

모든 메타데이터 옵션을 살펴보려면 IronPDF 머리글 및 바닥글 가이드를 참조하세요.

고급 페이지 번호 매기기 기법

IronPDF 기본적인 페이지 번호 매기기 외에도 다음과 같은 고급 시나리오를 지원합니다.

  • 섹션 기반 번호 매기기: 다른 문서 섹션에 서로 다른 번호 매기기 체계
  • 로마 숫자: 서문이나 부록 페이지에 대한 사용자 지정 서식
  • 다중 번호 시스템: 하나의 문서에서 다른 번호 스타일 결합
  • 동적 페이지 수 계산 : 페이지를 추가하거나 복사할 때 총 페이지 수를 자동으로 업데이트합니다.

이러한 기법은 기술 매뉴얼, 학술 논문 또는 정교한 페이지 번호 매기기 체계가 필요한 법률 문서와 같은 복잡한 문서를 작성할 때 유용합니다.

페이지 번호 매기기 모범 사례

PDF에 페이지 번호를 삽입할 때는 다음 사항을 고려하십시오.

  1. 일관성: 문서 전체에 일관된 위치와 서식을 유지
  2. 가독성: 페이지 번호가 명확하게 보이고 콘텐츠와 겹치지 않도록 보장
  3. 접근성: 쉽게 읽을 수 있도록 적절한 글꼴 크기와 대비 사용
  4. 전문적인 외관 : 페이지 번호 스타일을 문서의 전체적인 디자인과 일치시키세요.

이러한 지침을 따르고 IronPDF의 유연한 페이지 번호 매기기 기능을 활용하면 특정 요구 사항을 충족하는 전문적이고 잘 정리된 PDF 문서를 만들 수 있습니다.

자주 묻는 질문

C#에서 PDF에 기본 페이지 번호를 추가하는 방법은 무엇인가요?

IronPDF에서는 TextHeaderFooter 또는 HtmlHeaderFooter 클래스에 {page} 및 {total-pages}와 같은 자리 표시자 문자열을 사용하여 페이지 번호를 추가할 수 있습니다. 헤더 또는 푸터 HTML 조각에 이러한 자리 표시자를 포함하기만 하면 IronPDF가 PDF를 렌더링할 때 자동으로 현재 페이지 번호와 총 페이지 수로 대체합니다.

렌더링 옵션을 통해 페이지 번호를 직접 추가할 수 있나요?

예, IronPDF의 ChromePdfRenderer 렌더링 옵션에 페이지 번호를 직접 추가할 수 있습니다. 이 방법을 사용하면 렌더링 구성의 일부로 페이지 번호 자리 표시자 문자열이 포함된 머리글과 바닥글을 설정할 수 있으며, 이는 렌더링 옵션을 통해 PDF 출력을 사용자 지정할 때 특히 유용합니다.

페이지 번호 매기기에 사용할 수 있는 자리 표시자 문자열은 무엇입니까?

IronPDF는 페이지 번호를 매기는 데 사용할 수 있는 두 가지 주요 자리 표시자 문자열을 제공합니다. {page}는 현재 페이지 번호를 표시하고, {total-pages}는 문서의 총 페이지 수를 표시합니다. 이러한 자리 표시자는 PDF가 렌더링될 때 실제 값으로 자동으로 대체됩니다.

특정 페이지에만 페이지 번호를 지정할 수 있나요?

네, IronPDF를 사용하면 문서에서 페이지 번호가 표시되는 위치를 제어할 수 있습니다. 페이지 번호를 표시할 페이지를 지정하여 표지 페이지에서 제외하거나 PDF의 특정 섹션에만 적용할 수 있습니다.

페이지 번호의 위치와 스타일을 사용자 지정할 수 있습니까?

물론입니다. IronPDF의 HtmlHeaderFooter 클래스를 사용하면 HTML과 CSS를 이용하여 페이지 번호의 위치, 스타일 및 서식을 사용자 지정할 수 있습니다. 페이지 번호의 위치, 글꼴, 크기, 색상을 제어할 수 있을 뿐 아니라 구분선이나 기타 장식 요소를 추가할 수도 있습니다.

기존 PDF 문서에 페이지 번호를 추가할 수 있나요?

네, IronPDF는 새 PDF 문서와 기존 PDF 문서 모두에 페이지 번호를 추가하는 기능을 지원합니다. 기존 PDF 문서를 불러와서 문서 전체를 처음부터 다시 만들 필요 없이 머리글이나 바닥글에 페이지 번호를 적용할 수 있습니다.

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

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

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

검토자:
제프 프리츠
제프리 T. 프리츠
.NET 커뮤니티 팀의 수석 프로그램 관리자
제프는 .NET 및 Visual Studio 팀의 수석 프로그램 관리자이기도 합니다. 그는 .NET Conf 가상 컨퍼런스 시리즈의 총괄 프로듀서이며, 개발자를 위한 라이브 스트림 'Fritz and Friends'를 주 2회 진행하며 시청자들과 함께 기술에 대해 이야기하고 코드를 작성합니다. 제프는 Microsoft Build, Microsoft Ignite, .NET Conf, Microsoft MVP Summit 등 주요 Microsoft 개발자 행사를 위한 워크숍, 프레젠테이션 및 콘텐츠 기획을 담당합니다.
시작할 준비 되셨나요?
Nuget 다운로드 19,014,616 | 버전: 2026.5 just released
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package IronPdf
샘플을 실행하세요 HTML이 PDF로 변환되는 것을 지켜보세요.