Jak dodać numery stron do plików PDF za pomocą języka C#

Jak dodać numery stron do pliku PDF za pomocą języka C

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

IronPDF pozwala na dodawanie numerów stron do PDF-ów w C# za pomocą placeholderów {page} i {total-pages} w nagłówkach/stopkach, z opcjami zastosowania ich do określonych stron lub sekcji w celu poprawy nawigacji po dokumencie.

Numery stron to kolejne numery przypisane do każdej strony w dokumencie PDF. Są to niezbędne elementy nawigacji, pomagające czytelnikom w lokalizowaniu konkretnych stron i śledzeniu ich pozycji. Numery stron ułatwiają również cytowanie i odwoływanie się do treści. Dzięki IronPDF dodawanie numerów stron do plików PDF jest bardzo proste.

Szybki start: Łatwe dodawanie numerów stron do plików PDF

Dodaj numery stron do dokumentów PDF za pomocą IronPDF. Za pomocą minimalnego kodu C# można wstawiać dynamiczne numery stron do nagłówków lub stopek, dostosowywać ich położenie oraz określać, na których stronach mają się pojawiać. Niezależnie od tego, czy chodzi o nowe, czy istniejące pliki PDF, IronPDF zapewnia elastyczne rozwiązanie usprawniające nawigację po dokumentach i ich organizację.

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf
  2. Skopiuj i uruchom ten fragment kodu.

    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. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPDF w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer


Jak dodać podstawowe numery stron do pliku PDF?

Używając placeholderów {page} i {total-pages} z klasą TextHeaderFooter lub HtmlHeaderFooter, można dodać bieżący numer strony i całkowitą liczbę stron. Ta funkcja jest niezbędna podczas tworzenia nowych plików PDF lub konwersji dokumentów HTML do formatu PDF, które wymagają profesjonalnego formatowania.

: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

Poniżej przedstawiono plik PDF wygenerowany na podstawie powyższego kodu:

Można również dodać nagłówki i stopki z ciągami znaków zastępczymi numerów stron bezpośrednio do opcji renderowania ChromePdfRenderer. Takie podejście jest przydatne podczas pracy z opcjami renderowania w celu dostosowania pliku 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

Podczas pracy z dokumentami o złożonej strukturze należy uwzględnić podziały stron i niestandardowe marginesy, aby zapewnić prawidłowe wyświetlanie numerów stron.

Jak mogę dodać numery stron tylko do określonych stron?

Dzięki IronPDF możesz kontrolować, gdzie pojawiają się numery stron. Niech zaczynają od konkretnej strony lub stosują je do określonych grup, takich jak strony o parzystych indeksach. Ta elastyczność jest cenna podczas generowania raportów PDF lub pracy z dokumentami zawierającymi różne sekcje.

Najpierw przygotuj dokument PDF, aby nadać mu numery stron:

: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

Jak ponumerować tylko strony parzyste?

Opierając się na poprzednim przykładzie, ten kod stosuje numery stron wyłącznie do indeksów stron parzystych. Ponieważ filtrowanie dotyczy indeksów stron parzystych, w wynikowym pliku PDF numery pojawiają się na stronach nieparzystych. Indeksy stron zaczynają się od zera, natomiast numery stron od jednego. Technika ta nadaje się do dokumentów o tradycyjnym formatowaniu książkowym lub w przypadku pracy ze scalonymi dokumentami 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

Jak ponumerować tylko strony nieparzyste?

Dodaj numery stron do stron o nieparzystych numerach indeksowych. Takie podejście jest powszechne w przypadku drukowania dwustronnego, gdzie numery stron powinny pojawiać się tylko na jednej stronie wydrukowanego dokumentu.

: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

Jak dodać numer strony tylko na ostatniej stronie?

Dodaj numer strony tylko na ostatniej stronie. Jest to przydatne na stronach podsumowujących lub w celu zaznaczenia końca dokumentu.

: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

Jak dodać numer strony tylko na pierwszej stronie?

Dodaj numer strony tylko na pierwszej stronie. Rozwiązanie to sprawdza się dobrze w przypadku stron tytułowych lub dokumentów, w których identyfikacja jest wymagana tylko na pierwszej stronie.

: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

Jak pominąć pierwszą stronę podczas dodawania numerów stron?

Pomiń pierwszą stronę podczas stosowania nagłówka. To ogólne wymaganie dotyczy dokumentów z okładką lub stroną tytułową, na których nie powinny znajdować się numery stron. W przypadku pracy z formularzami PDF lub dokumentami zawierającymi list przewodni technika ta zapewnia profesjonalne formatowanie.

: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

Jak pominąć pierwszą stronę i rozpocząć numerację od 1 na drugiej stronie?

Pomiń pierwszą stronę i zacznij numerację od drugiej strony, traktując ją jako stronę 1. Takie podejście sprawdza się w przypadku dokumentów, w których strona tytułowa nie powinna być uwzględniana w sekwencji numeracji stron, takich jak prace naukowe lub oficjalne raporty.

: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

Aby poznać wszystkie opcje metadanych, odwiedź przewodnik po nagłówkach i stopkach IronPDF.

Zaawansowane techniki numerowania stron

Poza podstawowym numerowaniem stron, IronPDF obsługuje zaawansowane scenariusze, w tym:

  • Numerowanie oparte na sekcjach: Różne schematy numeracji dla różnych sekcji dokumentu
  • Cyfry rzymskie: Niestandardowe formatowanie dla stron wstępu lub aneksów
  • Wiele systemów numeracji: Łączenie różnych stylów numeracji w jednym dokumencie
  • Dynamiczna liczba stron: Aktualizacja całkowitej liczby stron przy dodawaniu lub kopiowaniu stron

Te techniki są wartościowe przy tworzeniu złożonych dokumentów, takich jak podręczniki techniczne, prace naukowe czy dokumenty prawne wymagające zaawansowanych schematów numerowania stron.

Najlepsze praktyki dodawania numerów stron

Podczas implementacji numerów stron w PDF-ach, warto rozważyć następujące praktyki:

  1. Spójność: Utrzymanie spójnego pozycjonowania i formatowania w całym dokumencie
  2. Czytelność: Upewnij się, że numery stron są wyraźnie widoczne i nie nakładają się na treść
  3. Dostępność: Używaj odpowiednich rozmiarów czcionki i kontrastu dla łatwego odczytu
  4. Profesjonalny wygląd: Dopasuj styl numerów stron do ogólnego designu dokumentu

Przestrzeganie tych wytycznych oraz wykorzystanie elastycznych możliwości numerowania stron w IronPDF umożliwia tworzenie profesjonalnych, dobrze zorganizowanych dokumentów PDF, które spełniają określone wymagania.

Często Zadawane Pytania

How do I add basic page numbers to a PDF in C#?

With IronPDF, you can add page numbers using placeholder strings {page} and {total-pages} in either the TextHeaderFooter or HtmlHeaderFooter class. Simply include these placeholders in your header or footer HTML fragment, and IronPDF will automatically replace them with the current page number and total page count when rendering the PDF.

Can I add page numbers directly through rendering options?

Yes, you can add page numbers directly to the rendering options of IronPDF's ChromePdfRenderer. This approach allows you to set headers and footers with page number placeholder strings as part of the rendering configuration, which is particularly useful when customizing PDF output through rendering options.

What placeholder strings are available for page numbering?

IronPDF provides two main placeholder strings for page numbering: {page} displays the current page number, and {total-pages} shows the total number of pages in the document. These placeholders are automatically replaced with actual values when the PDF is rendered.

Can I apply page numbers to specific pages only?

Yes, IronPDF allows you to control where page numbers appear in your document. You can specify which pages should display page numbers, enabling you to exclude them from cover pages or apply them only to certain sections of your PDF.

Is it possible to customize the placement and styling of page numbers?

Absolutely. With IronPDF's HtmlHeaderFooter class, you can customize the placement, styling, and formatting of page numbers using HTML and CSS. You can control their position, font, size, color, and even add divider lines or other decorative elements.

Can I add page numbers to existing PDF documents?

Yes, IronPDF supports adding page numbers to both new PDFs and existing PDF documents. You can load an existing PDF document and apply headers or footers with page numbers without recreating the entire document from scratch.

Jordi Bardia
Inżynier oprogramowania
Jordi jest najbardziej biegły w Pythonie, C# i C++. Kiedy nie wykorzystuje swoich umiejętności w Iron Software, programuje gry. Dzieląc odpowiedzialność za testowanie produktów, rozwój produktów i badania, Jordi wnosi ogromną wartość do ciągłej poprawy produktów. Różnorodne doświadczenia ...
Czytaj więcej
Sprawdzone przez
Jeff Fritz
Jeffrey T. Fritz
Główny Menedżer Programu - Zespół .NET Community
Jeff jest również Głównym Menedżerem Programu dla zespołów .NET i Visual Studio. Jest producentem wykonawczym wirtualnej serii konferencji .NET Conf i prowadzi 'Fritz and Friends', transmisję na żywo dla deweloperów emitowaną dwa razy w tygodniu, gdzie rozmawia o technologii i pisze kod razem z widzami. Jeff pisze warsztaty, prezentacje i planuje treści dla największych wydarzeń Microsoft dla deweloperów, w tym Microsoft Build, Microsoft Ignite, .NET Conf i Microsoft MVP Summit.
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 18,135,201 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.