如何使用 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# 程式碼,您即可將動態頁碼插入頁首或頁尾,自訂其位置,並指定頁碼應顯示於哪些頁面上。 無論處理新建立或現有的 PDF 檔案,IronPDF 皆提供靈活的解決方案,以提升文件的瀏覽與管理效率。

  1. using 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} 佔位字串中搭配 TextHeaderFooterHtmlHeaderFooter 類別,即可加入當前頁碼與總頁數。 此功能對於建立新 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 文件會在奇數頁顯示頁碼。 頁面索引從零開始,而頁碼則從一開始。 此技術適用於遵循傳統書籍排版格式的文件,或處理合併後的 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 靈活的頁碼編排功能,您將能建立符合特定需求、Professional 且條理分明的 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 文件,並套用包含頁碼的頁首或頁尾,無需從頭重新建立整個文件。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

審閱者:
Jeff Fritz
Jeffrey T. Fritz
首席程式經理 - .NET 社群團隊
Jeff 同時也是 .NET 與 Visual Studio 團隊的首席程式經理。他是 .NET Conf 虛擬會議系列的執行製作人,並主持每週播出兩次的開發者直播節目《Fritz and Friends》,在節目中他會與觀眾一起探討技術話題並共同編寫程式碼。Jeff 負責撰寫工作坊內容、準備簡報,並為 Microsoft Build、Microsoft Ignite、.NET Conf 以及 Microsoft MVP Summit 等微軟最大規模的開發者活動規劃內容。
準備開始了嗎?
Nuget 下載 19,014,616 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。