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

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

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

IronPDF讓您可以使用佔位符字串{total-pages}輕鬆在C#中新增頁碼到PDF中的頁眉/頁腳,並選擇應用於特定頁面或部分,以增強文件導航功能。

頁碼是分配給PDF文件中每個頁面的連續數字。 它們是導航的基本組成部分,有助於讀者找到特定頁面並跟踪其位置。 頁碼也使得內容引用和參考變得簡單。 使用IronPDF,為您的PDF文件新增頁碼非常簡單。

快速入門:輕鬆為PDF文件新增頁碼

使用IronPDF為PDF文件新增頁碼。 只需少量C#程式碼,您就可以在頁眉或頁腳插入動態頁碼,自定義它們的位置,並指定它們出現在哪些頁面上。 無論是處理新PDF文件還是現有文件,IronPDF都提供了一種靈活的解決方案,以增強文件的導航和組織。

  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中新增基本頁碼?

使用佔位符字串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在奇數頁上顯示了頁碼。 頁索引從零開始,而頁碼則從一開始。 此技術適合於遵循傳統書籍格式的文件或合併的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

如何跳過第一頁並從第二頁開始編號?

跳過第一頁,從第二頁開始編號,將其視為第一頁。此方法適用於封面頁不應在頁碼序列中計入的文件,如學術論文或正式報告。

: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頁眉和頁腳指南

Icon Quote related to 如何跳過第一頁並從第二頁開始編號?

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 如何跳過第一頁並從第二頁開始編號?

Milan Jovanovic

Microsoft MVP

查看案例研究
Icon Quote related to 如何跳過第一頁並從第二頁開始編號?

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle related to 如何跳過第一頁並從第二頁開始編號?

Brent Matzelle

首席技術官,OPYN

查看案例研究
Icon Quote related to 如何跳過第一頁並從第二頁開始編號?

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 如何跳過第一頁並從第二頁開始編號?

David Jones

首席軟體工程師,Agorus Build

查看案例研究

進階頁碼技術

除了基本頁碼之外,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文件,並且在不重建整個文件的情況下應用帶有頁碼的頁首或頁尾。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,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 下載 20,296,129 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想快速獲得證明嗎? PM > Install-Package IronPdf
執行範例 看您的HTML變成PDF。