如何使用 C# 在 PDF 中添加頁碼

如何使用 C# 為 PDF 新增頁碼

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

頁碼是指派給 PDF 文件中每一頁的順序編號。 頁碼是文件中最重要的組成部分之一,用於導航。 它們幫助讀者找到特定頁面,並確定他們正在閱讀的頁面。 此外,頁碼便於對文件內容進行引用和參考。 使用 IronPDF,為 PDF 新增頁碼非常簡單。

快速入門:輕鬆地在 PDF 上新增頁碼

使用 IronPDF,您可以輕鬆地為 PDF 文件添加頁碼。 只需幾行 C# 程式碼,您就可以在頁首或頁尾插入動態頁碼,自訂頁碼的位置,並指定頁碼應出現在哪些頁面上。 無論您是處理新的 PDF 文件還是現有的 PDF 文件,IronPDF 都能提供簡單靈活的解決方案,以增強文件的導航和組織。 請按照本指南即可快速在您的專案中實現頁碼功能。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 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


新增頁碼範例

使用佔位符字串{page}{total-pages}以及TextHeaderFooterHtmlHeaderFooter類,您可以新增目前頁碼和總頁數。

: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的渲染選項中。

: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文檔,以便新增頁碼。

: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 將只在奇數頁碼上套用數字。 頁碼索引從零開始,頁碼從一開始。

: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

跳過第一頁

應用頁眉時跳過第一頁。

: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 頁。

: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 頁首和頁尾指南

常見問題解答

如何使用 C# 將頁碼添加到 PDF?

您可以使用 IronPDF 庫在 C# 中為 PDF 添加頁碼。首先,從 NuGet 下載 C# PDF 庫。然後,加載一個現有的 PDF 或創建一個新的,並在頁眉或頁腳中使用佔位符字串 {page}{total-pages} 插入頁碼。最後,保存更新后的 PDF。

我可以自定義 PDF 中頁碼的位置嗎?

可以,使用 IronPDF,您可以自定義 PDF 中頁碼的位置。您可以選擇只在特定頁面上添加頁碼,如偶數索引或奇數索引頁面,或僅應用於第一頁或最後一頁。

如何僅在 PDF 的偶數頁上添加頁碼?

要在 PDF 的偶數頁上添加頁碼,請使用 IronPDF 選擇偶數索引頁面並設置所需頁碼佔位符的頁眉或頁腳。頁碼將應用於偶數索引的頁面。

是否可以將頁碼從 PDF 的第二頁開始?

是的,使用 IronPDF 您可以跳過第一頁,從第二頁開始編號。為此,設置要從第二頁應用的頁眉或頁腳,並使用佔位符字串管理編號序列。

如何僅在 PDF 的最後一頁添加頁碼?

要僅在 PDF 的最後一頁添加頁碼,可以使用 IronPDF 配置頁眉或頁腳以專門應用於最後一頁。這可以通過引用最後一頁索引並設置頁碼的佔位符字串來實現。

在 PDF 頁碼中使用佔位符字串有什麼好處?

佔位符字串如 {page}{total-pages} 允許動態插入當前頁碼和總頁數。這使得頁碼管理靈活且高效,尤其是當文檔結構變更時。IronPDF 使用這些佔位符簡化頁碼過程。

如何在不影響 PDF 第一頁的情況下添加頁碼?

要在不影響第一頁的情況下使用 IronPDF 為 PDF 添加頁碼,請配置頁眉或頁腳從第二頁開始。這種方法確保第一頁不設頁碼,而後續頁面接收頁碼。

IronPDF 能否處理 HTML 內容和現有 PDF 的頁碼?

是的,IronPDF 可以處理 HTML 內容和現有 PDF 的頁碼。您可以將 HTML 渲染為 PDF 並使用 IronPdf.ChromePdfRenderer 應用頁碼,或者修改現有的 PDF 文檔以在頁眉和頁腳中包含頁碼。

IronPDF 在新增頁碼時完全相容於 .NET 10?

是的-IronPDF 與 .NET 10 完全相容,讓您在 .NET 10 專案中使用頁首或頁尾以及佔位符字串{page}{total-pages}新增頁碼,就像在早期的 .NET 版本一樣。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。
審核人
Jeff Fritz
Jeffrey T. Fritz
首席程序经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席程序经理。他是 .NET Conf 虚拟会议系列的执行制作人,并主持“Fritz 和朋友”这一每周两次的开发者的直播节目,在节目上讨论技术并与观众一起编写代码。Jeff 撰写研讨会、主持演讲,并计划大型 Microsoft 开发者活动(包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit)的内容。
準備好開始了嗎?
Nuget 下載 16,493,056 | Version: 2025.11 剛發表