Przejdź do treści stopki
KORZYSTANIE Z IRONPDF

Jak dodać numery stron w PDF używając C#

"Portable Document Format", czyli PDF, to format plików stworzony przez firmę Adobe. Pliki PDF przydają się podczas prezentacji dokumentów, w których tekst i zdjęcia muszą być sformatowane. W dzisiejszym świecie pliki PDF są niezbędne i wykorzystywane do tworzenia dokumentów oraz fakturowania we wszystkich sektorach biznesowych. Dzięki kilku bibliotekom PDF dostępnym obecnie na rynku tworzenie plików PDF stało się praktycznie instynktowne. Aby wybrać odpowiednią bibliotekę PDF, przed wykorzystaniem jej w projekcie należy rozważyć zalety i cechy każdej z nich.

W tym artykule zobaczymy, jak dodać numery stron w pliku PDF za pomocą iTextSharp C#. Ponadto porównamy iTextSharp z IronPDF.

Jak dodać numery stron w pliku PDF za pomocą iTextSharp C

  1. Utwórz nowy projekt w języku C# przy użyciu dowolnego środowiska IDE.
  2. Utwórz nowy obiekt PDF.
  3. Dodaj numery stron do stopki HTML.
  4. Utwórz plik PDF na podstawie materiału HTML.
  5. Zapisz plik PDF na swoim komputerze.

Czym jest IronPDF

IronPDF to solidny .NET Framework do obsługi plików PDF, którego programiści używają do łatwego tworzenia, przeglądania i edytowania plików PDF. IronPDF to zaawansowane narzędzie, które wewnętrznie działa na silniku Chromium. Może konwertować pliki HTML5, JavaScript, CSS i obrazy do formatu PDF, dodawać niestandardowe nagłówki i stopki oraz tworzyć pliki PDF dokładnie tak, jak wyglądają w przeglądarce. IronPDF obsługuje wiele formatów internetowych i sieciowych, w tym HTML, ASPX, Razor View i MVC.

Funkcje IronPDF

  • Wykorzystanie kodu .NET C# do tworzenia, odczytywania i prostej edycji plików PDF.
  • Proces tworzenia plików PDF na podstawie linku URL strony internetowej przy jednoczesnym zarządzaniu agentami użytkownika, serwerami proxy, plikami cookie, nagłówkami HTTP i zmiennymi formularzy w celu umożliwienia logowania za pomocą formularzy logowania HTML.
  • Usuwanie obrazów z istniejących plików PDF.
  • W tym elementy pliku PDF: tabele, tekst, zdjęcia, zakładki, znaki wodne, nagłówki, stopki i inne.
  • Możliwość łatwego rozdzielania i łączenia stron wielu dokumentów PDF.

Aby dowiedzieć się więcej o dokumentacji IronPDF, zajrzyj tutaj.

Instalacja IronPDF

W narzędziach Visual Studio wybierz Menedżer pakietów NuGet, a interfejs Visual Command-Line znajdziesz w sekcji Narzędzia. Poniższe polecenie należy wprowadzić w zakładce terminala zarządzania pakietami.

Install-Package IronPdf

Możemy też skorzystać z metody menedżera pakietów. Instalacja pakietu bezpośrednio w rozwiązaniu jest możliwa dzięki opcji NuGet Package Manager w programie Visual Studio. Na stronie NuGet dostępne jest pole wyszukiwania, które pozwala znaleźć pakiety. Wystarczy wpisać "IronPDF" w menedżerze pakietów, jak pokazuje poniższy zrzut ekranu:

Jak dodać numery stron w pliku PDF przy użyciu iTextSharp w języku C#: Rysunek 1 – Instalacja IronPDF z menedżera pakietów

Lista odpowiednich wyników wyszukiwania jest wyświetlona powyżej. Aby zainstalować pakiet w systemie, należy dokonać niezbędnych wyborów.

Po pobraniu i zainstalowaniu pakietu można go wykorzystać w bieżącym projekcie.

Czym jest iTextSharp

iTextSharp to elastyczna biblioteka do tworzenia i modyfikowania dokumentów PDF w języku C#. Oferuje kilka funkcji, takich jak szyfrowanie, scalanie plików PDF, wyodrębnianie tekstu i obrazów oraz wiele innych. iTextSharp to wydajne narzędzie do wielu zadań, w tym do dodawania numerów stron do plików PDF.

Funkcje iTextSharp

  • API do generowania dokumentów PDF jest dostępne za pośrednictwem biblioteki iText.
  • Zarówno ciągi HTML, jak i XML mogą być przetwarzane na pliki PDF za pomocą programu iText.
  • Możemy dodawać zakładki, numery stron i znaczniki do naszych dokumentów PDF za pomocą biblioteki iText.
  • Możemy również podzielić dokument PDF na wiele plików PDF lub połączyć wiele plików PDF w jeden, korzystając z biblioteki iText.
  • Możemy modyfikować formularze PDF za pomocą iText.

Zainstaluj iTextSharp

Użyj menedżera pakietów NuGet, aby znaleźć iText. Wymagane jest zainstalowanie iText7 oraz iText.pdfhtml, ponieważ funkcje iText są rozdzielone na wiele pakietów.

W przypadku wyboru interfejsu Visual Command-Line należy zainstalować następujące pakiety:

Install-Package iTextSharp

Ponieważ iText 7 jest najnowszą wersją, to właśnie ją wykorzystujemy w naszym rozwiązaniu.

Dodawanie numerów stron za pomocą IronPDF

Dodawanie numerów stron do plików PDF jest proste dzięki obszernej bibliotece IronPDF. Aby to zilustrować, zapoznaj się z poniższym kodem.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Create a new HtmlToPdf renderer instance
        var renderer = new HtmlToPdf();

        // Define the HTML content with a header
        string header = "<h1>Hello IronPDF!</h1>";

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(header);

        // Define the HTML footer with page numbers
        HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"
        };

        // Add footer to the PDF
        pdf.AddHtmlFooters(htmlFooter);

        // Save the PDF document to a file
        pdf.SaveAs("output.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Create a new HtmlToPdf renderer instance
        var renderer = new HtmlToPdf();

        // Define the HTML content with a header
        string header = "<h1>Hello IronPDF!</h1>";

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(header);

        // Define the HTML footer with page numbers
        HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"
        };

        // Add footer to the PDF
        pdf.AddHtmlFooters(htmlFooter);

        // Save the PDF document to a file
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a new HtmlToPdf renderer instance
		Dim renderer = New HtmlToPdf()

		' Define the HTML content with a header
		Dim header As String = "<h1>Hello IronPDF!</h1>"

		' Render the HTML as a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(header)

		' Define the HTML footer with page numbers
		Dim htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"}

		' Add footer to the PDF
		pdf.AddHtmlFooters(htmlFooter)

		' Save the PDF document to a file
		pdf.SaveAs("output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Najpierw definiujemy tekst HTML, który ma zostać przekształcony w plik PDF. Treść HTML może składać się z pojedynczego akapitu HTML lub całej strony HTML. Następnie tworzymy instancję klasy HtmlToPdf, która oferuje funkcję konwersji HTML do PDF RenderHtmlAsPdf.

Treść HTML jest przekazywana jako argument do funkcji RenderHtmlAsPdf. Określamy materiał HTML, który ma zostać przekształcony w plik PDF. Numery stron są przedstawione jako symbole zastępcze, czyli {page} of {total-pages} w stopce tego tekstu HTML.

Utworzony dokument PDF jest zwracany przez tę metodę jako obiekt PdfDocument. Korzystając z metody SaveAs, zapisujemy dokument PDF do pliku o nazwie "output.pdf". Alternatywnie możemy użyć funkcji OpenInDefaultPDFViewer, aby otworzyć utworzony dokument PDF w domyślnej przeglądarce PDF systemu. Możemy również użyć powyższej metody, aby dodać numery stron do istniejącego pliku PDF.

Jak dodać numery stron w pliku PDF przy użyciu iTextSharp w języku C#: Rysunek 2 – IronPDF: Wygenerowany plik PDF z numerami stron

Aby dowiedzieć się więcej o kodzie IronPDF, zajrzyj tutaj.

Dodawanie numerów stron za pomocą iTextSharp

Najpierw użyjmy iTextSharp do wygenerowania nowego dokumentu PDF. Oto podstawowa ilustracja pokazująca, jak utworzyć nowy dokument PDF z numeracją stron:

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Create a new PDF document
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("output.pdf", FileMode.Create));

            // Open the document to add content
            doc.Open();
            doc.Add(new Paragraph("Hello, world!"));

            // Attach page number event to PDF writer
            writer.PageEvent = new PageNumberEventHandler();

            // Close the document
            doc.Close();
        }
    }

    public class PageNumberEventHandler : PdfPageEventHelper
    {
        public override void OnOpenDocument(PdfWriter writer, Document document)
        {
            base.OnOpenDocument(writer, document);
        }

        public override void OnEndPage(PdfWriter writer, Document document)
        {
            base.OnEndPage(writer, document);

            // Create a table to hold the page number
            PdfPTable table = new PdfPTable(1);
            table.TotalWidth = 300f;
            table.HorizontalAlignment = Element.ALIGN_CENTER;

            PdfPCell cell = new PdfPCell(new Phrase($"Page {writer.PageNumber}"));
            cell.Border = 0;
            table.AddCell(cell);

            // Write the table at the bottom of the page
            table.WriteSelectedRows(0, -1, 150f, document.Bottom, writer.DirectContent);
        }

        public override void OnCloseDocument(PdfWriter writer, Document document)
        {
            base.OnCloseDocument(writer, document);
        }
    }
}
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Create a new PDF document
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("output.pdf", FileMode.Create));

            // Open the document to add content
            doc.Open();
            doc.Add(new Paragraph("Hello, world!"));

            // Attach page number event to PDF writer
            writer.PageEvent = new PageNumberEventHandler();

            // Close the document
            doc.Close();
        }
    }

    public class PageNumberEventHandler : PdfPageEventHelper
    {
        public override void OnOpenDocument(PdfWriter writer, Document document)
        {
            base.OnOpenDocument(writer, document);
        }

        public override void OnEndPage(PdfWriter writer, Document document)
        {
            base.OnEndPage(writer, document);

            // Create a table to hold the page number
            PdfPTable table = new PdfPTable(1);
            table.TotalWidth = 300f;
            table.HorizontalAlignment = Element.ALIGN_CENTER;

            PdfPCell cell = new PdfPCell(new Phrase($"Page {writer.PageNumber}"));
            cell.Border = 0;
            table.AddCell(cell);

            // Write the table at the bottom of the page
            table.WriteSelectedRows(0, -1, 150f, document.Bottom, writer.DirectContent);
        }

        public override void OnCloseDocument(PdfWriter writer, Document document)
        {
            base.OnCloseDocument(writer, document);
        }
    }
}
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf

Namespace ConsoleApp1
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Create a new PDF document
			Dim doc As New Document()
			Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream("output.pdf", FileMode.Create))

			' Open the document to add content
			doc.Open()
			doc.Add(New Paragraph("Hello, world!"))

			' Attach page number event to PDF writer
			writer.PageEvent = New PageNumberEventHandler()

			' Close the document
			doc.Close()
		End Sub
	End Class

	Public Class PageNumberEventHandler
		Inherits PdfPageEventHelper

		Public Overrides Sub OnOpenDocument(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnOpenDocument(writer, document)
		End Sub

		Public Overrides Sub OnEndPage(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnEndPage(writer, document)

			' Create a table to hold the page number
			Dim table As New PdfPTable(1)
			table.TotalWidth = 300F
			table.HorizontalAlignment = Element.ALIGN_CENTER

			Dim cell As New PdfPCell(New Phrase($"Page {writer.PageNumber}"))
			cell.Border = 0
			table.AddCell(cell)

			' Write the table at the bottom of the page
			table.WriteSelectedRows(0, -1, 150F, document.Bottom, writer.DirectContent)
		End Sub

		Public Overrides Sub OnCloseDocument(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnCloseDocument(writer, document)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Najpierw tworzymy nowy obiekt dla Document i PdfWriter, co pozwala nam utworzyć pusty plik PDF. W dokumencie PDF można umieścić tekst, zdjęcia, tabele i inne rodzaje materiałów. Użyjmy Paragraph, aby dodać przykładowy tekst w celach demonstracyjnych. Teraz ważnym krokiem jest dodanie numerów stron do dokumentu PDF. W tym celu wykorzystamy zdarzenia strony iTextSharp. Zaczynamy od zdefiniowania klasy dziedziczącej po klasie PdfPageEventHelper, aby móc nadpisać metody wywoływane w przypadku wystąpienia określonych zdarzeń podczas procesu generowania pliku PDF.

W tej klasie funkcja OnEndPage jest nadpisana w celu dodania tabeli zawierającej pojedynczą komórkę z bieżącym numerem strony. Na koniec, zanim zamkniemy dokument, musimy połączyć instancję naszej klasy PageNumberEventHandler z obiektem PdfWriter. W tej konfiguracji funkcja OnEndPage klasy PageNumberEventHandler będzie wywoływana za każdym razem, gdy do dokumentu PDF zostanie dodana nowa strona, dodając numer strony na dole każdej strony. Możemy również wykorzystać istniejący dokument PDF w celu dodania numerów stron.

Jak dodać numery stron w pliku PDF za pomocą iTextSharp w języku C#: Rysunek 3 – iTextSharp: Wygenerowany plik PDF z numerami stron

Wnioski

Podsumowując, specjalizacja, użyteczność i płynna integracja IronPDF ze środowiskami .NET sprawiają, że jest to najlepsza opcja w sytuacjach wymagających konwersji HTML do PDF i powiązanych funkcji, mimo że iTextSharp nadal pozostaje silnym konkurentem wśród bibliotek do obsługi plików PDF w języku C#. Dzięki IronPDF możesz tworzyć faktury, raporty i dokumenty generowane dynamicznie na podstawie treści HTML z łatwością, skutecznością i elastycznością niezbędnymi do odniesienia sukcesu w nowoczesnym środowisku programistycznym.

Wersja Lite programu IronPDF obejmuje stałą licencję, opcje aktualizacji oraz roczną konserwację oprogramowania. Okres próbny z znakiem wodnym pozwala użytkownikom ocenić produkt w praktycznych warunkach. Więcej szczegółów można znaleźć na stronie licencji. Odwiedź tę stronę internetową, aby dowiedzieć się więcej o Iron Software.

Często Zadawane Pytania

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

Możesz dodać numery stron do pliku PDF za pomocą IronPDF, definiując zawartość HTML z symbolami zastępczymi numerów stron i używając metody AddHtmlFooters, aby zastosować ją jako stopkę w pliku PDF.

Jakie są zalety korzystania z IronPDF do obróbki plików PDF?

IronPDF oferuje rozbudowane możliwości frameworka PDF.NET Framework, obsługując HTML5, JavaScript, CSS oraz konwersję obrazów do formatu PDF, co ułatwia manipulowanie plikami PDF z niestandardowymi nagłówkami i stopkami.

Jak iTextSharp wypada w porównaniu z IronPDF pod względem dodawania numerów stron?

iTextSharp wykorzystuje klasę PdfPageEventHelper do obsługi numerów stron, podczas gdy IronPDF oferuje prostsze podejście, umożliwiając definiowanie stopek HTML z symbolami zastępczymi dla numerów stron.

Czy mogę modyfikować istniejące pliki PDF w celu dodania numerów stron?

Tak, korzystając z IronPDF, można dodawać numery stron do istniejących plików PDF poprzez renderowanie stopek HTML z symbolami zastępczymi numerów stron i scalanie ich z oryginalnym dokumentem.

Jaka jest preferowana metoda konwersji HTML do PDF?

IronPDF jest preferowanym rozwiązaniem do konwersji HTML na PDF ze względu na jego płynną integrację ze środowiskami .NET oraz obsługę HTML5, JavaScript i CSS.

Jakie są kroki instalacji, aby używać IronPDF w projekcie C#?

Możesz zainstalować IronPDF w projekcie C# za pomocą menedżera pakietów NuGet w Visual Studio, wyszukując „IronPDF” i dodając go do swojego projektu.

Jak zapewnić, że moje pliki PDF mają prawidłowe numery stron przy użyciu języka C#?

Korzystając z IronPDF, upewnij się, że numery stron są poprawne, definiując szablon HTML z symbolami zastępczymi dla numerów stron i stosując go konsekwentnie na wszystkich stronach PDF.

Czy sa dostepne opcje licencjonowania dla IronPDF?

IronPDF oferuje wersję „Lite” z licencją stałą, opcjami aktualizacji i roczną konserwacją oprogramowania, a także okres próbny z znakiem wodnym do oceny.

Gdzie mogę znaleźć szczegółowe przykłady i dokumentację dotyczącą korzystania z IronPDF?

Kompleksowa dokumentacja i przykłady wykorzystania IronPDF są dostępne na oficjalnej stronie internetowej pod adresem ironpdf.com.

Czy IronPDF jest w pełni kompatybilny z .NET 10 i czy mogę korzystać z funkcji numeracji stron w projekcie .NET 10?

Tak, IronPDF obsługuje .NET 10, a wszystkie jego funkcje — w tym numerowanie stron za pomocą symboli zastępczych w nagłówkach lub stopkach — działają od razu w projektach .NET 10 bez specjalnej konfiguracji czy obejść.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie