產品比較

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

發佈 2024年4月3日
分享:

介紹

「便攜式文件格式」,或稱 PDF,是由 Adobe 創建的一種文件格式。 PDF 在呈現需要排版的文字和照片的文件時非常實用。 在當前世界中,PDF 文件是必不可少的,並在所有企業部門中用於文件創建和開票。 由於市場上有多個 PDF 函式庫,目前創建 PDF 幾乎成為本能。在為您的專案選擇合適的 PDF 函式庫時,至關重要的是在使用之前權衡各個函式庫的優勢和特點。

在本文中,我們將了解如何使用 iTextSharp C# 在 PDF 中添加頁碼。 此外,我們將比較iTextSharpIronPDF.

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

  1. 使用任何 IDE 創建一個新的 C# 專案。

  2. 創建一個新的 PDF 物件。

  3. 將頁碼添加到 HTML 頁腳。

  4. 從 HTML 材料創建 PDF。

  5. 將 PDF 文件儲存到您的電腦。

什麼是 IronPDF

IronPDF是一個強大的 PDF .NET Framework,開發人員可以輕鬆用來生成、查看和編輯 PDF。 IronPDF 是一個在內部使用 Chromium 引擎運行的複雜工具。 它可以將 HTML5、JavaScript、CSS 和圖像文件轉換為 PDF,添加自定義的頁眉和頁腳,並精確地生成與瀏覽器中顯示相同的 PDF。 IronPDF 支援許多線上和網路格式,包括 HTML、ASPX、Razor View 和 MVC。

IronPDF 功能

  • 使用 .NET C# 程式碼來建立、閱讀及簡單編輯 PDF 檔案。
  • 從網站 URL 連結創建 PDF 的過程中管理使用者代理、代理伺服器、Cookies、HTTP 標頭和表單變數,以使用 HTML 登入表單進行登入。
  • 從已存在的 PDF 文件中移除圖片的過程。
  • 包含 PDF 的元素:表格、文字、照片、書籤、浮水印、頁首、頁尾及其他。
  • 能夠輕鬆分離和合併多個 PDF 文件的頁面。

    如需了解有關 IronPDF 文件的更多資訊,請參閱這裡.

安裝 IronPDF

在 Visual Studio 工具中,選擇 NuGet 套件管理員,然後您可以在工具下找到 Visual 命令列介面。 以下命令應輸入到套件管理終端選項卡中。

Install-Package IronPdf

或者我們可以使用套件管理器方法。 可以使用 Visual Studio 的 NuGet 套件管理器選項將套件直接安裝到解決方案中。 在 NuGet 網站上有一個搜尋框可用於尋找套件。我們只需要在套件管理器中搜尋「IronPDF」,如下圖所示:

如何在 C# 中使用 iTextSharp 添加 PDF 頁碼:圖 1 - 從軟件包管理器安裝 IronPDF

相關搜尋結果的列表顯示在上圖中。 要在您的系統上安裝該套件,請進行必要的選擇。

現在已下載並安裝該套件,可以在當前專案中使用。

什麼是iTextSharp

iTextSharp是一個靈活的程式庫,用於在 C# 中生成和修改 PDF 文件。 它提供多項功能,如加密、PDF 合併、文字和圖片提取等。 iTextSharp 是一個高效的工具,可用於執行多項任務,包括向 PDF 新增頁碼。

iTextSharp 功能

  • 可透過iText庫使用生成PDF文件的API。
  • 可以使用iText程式將HTML和XML字串解析為PDF檔案。
  • 我們可以使用iText庫在PDF文件中添加書籤、頁碼和標記。
  • 我們也可以使用iText庫將PDF文件拆分成多個PDF,或將多個PDF文件合併成單個PDF。
  • 我們可以使用 iText 修改 PDF 表單。

安裝iTextSharp

使用 NuGet 套件管理器搜尋 iText。 由於 iText 功能分佈於多個套件,因此需要安裝 iText7 和 iText.pdfhtml。

如果您選擇使用可視化命令行界面,則需要安裝以下套件:

Install-Package iTextSharp

由於iText 7是最新版本,因此我們正在使用它作為我們的解決方案。

使用 IronPDF 添加頁碼

通過 IronPDF 的綜合庫,為 PDF 文件添加頁碼變得簡單易行。 舉例來說,請查看以下程式碼。

using IronPdf;
static void main(string [] args)
{ 
    var renderer = new IronPdf.HtmlToPdf();
    private string header = "<h1>Hello Ironpdf!<h1>";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(header);
    HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
    {
        HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
    };
    // Add footer
    pdf.AddHtmlFooters(htmlFooter);
    pdf.SaveAs("output.pdf");
}
using IronPdf;
static void main(string [] args)
{ 
    var renderer = new IronPdf.HtmlToPdf();
    private string header = "<h1>Hello Ironpdf!<h1>";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(header);
    HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
    {
        HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
    };
    // Add footer
    pdf.AddHtmlFooters(htmlFooter);
    pdf.SaveAs("output.pdf");
}
Imports IronPdf
Shared Sub main(ByVal args() As String)
	Dim renderer = New IronPdf.HtmlToPdf()
	private String header = "<h1>Hello Ironpdf!<h1>"
	Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(header)
	Dim htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}
	' Add footer
	pdf.AddHtmlFooters(htmlFooter)
	pdf.SaveAs("output.pdf")
End Sub
VB   C#

首先,我們定義需要轉換成 PDF 的 HTML 文本。 此 HTML 內容可能包含單一 HTML 段落或整個 HTML 頁面。 接下來,我們創建一個 HTMLToPdf 類別的實例,該類別提供 HTML 到 PDF 的轉換功能 RenderHtmlAsPdf

HTML內容作為參數傳遞給RenderHtmlAsPdf函數。 我們指定需要轉換成 PDF 的 HTML 材料。 頁碼表示為占位符,或{頁面}的{總頁數} __在此 HTML 文本的頁腳部分。

這個方法返回的 PDF 文件作為一個 PdfDocument 對象。 使用 SaveAs 方法,我們將 PDF 文件保存為名為 "output.pdf" 的檔案。 或者,我們可以使用 OpenInDefaultPDFViewer 函數,以系統的預設 PDF 閱讀器打開所建立的 PDF 文件。 我們也可以使用上述方法向現有的 PDF 文件添加頁碼。

如何在 C# 中使用 iTextSharp 添加 PDF 頁碼:圖 2 - IronPDF:輸出帶有頁碼的 PDF

若要了解有關 IronPDF 代碼的更多資訊,請參閱這裡.

使用 iTextSharp 添加頁碼

首先,讓我們使用 iTextSharp 生成一個新的 PDF 文件。 以下是如何創建帶有頁碼的新 PDF 文件的基本示例:

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(document, new FileStream("output.pdf", FileMode.Create));
            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);
            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);
            table.WriteSelectedRows(0, -1, 150, 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(document, new FileStream("output.pdf", FileMode.Create));
            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);
            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);
            table.WriteSelectedRows(0, -1, 150, 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(document, New FileStream("output.pdf", FileMode.Create))
			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)
			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)
			table.WriteSelectedRows(0, -1, 150, 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
VB   C#

首先,我們正在為DocumentPdfWriter創建一個新物件,這可以讓我們創建一個空的 PDF 檔案。您可以在 PDF 文件中包含文字、照片、表格和其他類型的資料。 讓我們利用新的段落來添加一些示範用的範例文本。 現在重要的步驟是將頁碼添加到 PDF 文件中。 我們將使用 iTextSharp 的頁面事件來做到這一點。 為了能夠覆寫在 PDF 生成過程中特定事件發生時調用的方法,我們首先來構造一個從 PdfPageEventHelper 類繼承的類。

此類別覆寫了 OnEndPage 函數,以添加一個包含當前頁碼的單元格的表格。 最後,在我們關閉文件之前,我們需要將我們的 PageNumberEventHandler 類的實例連接到 PdfWriter 對象。 透過此配置,PageNumberEventHandler 類的 OnEndPage 函數將在每次新增頁面到 PDF 文件時被調用,並將頁碼添加到每頁的底部。 我們也可以使用現有的 PDF 文件來添加頁碼。

如何使用iTextSharp在C#中為PDF添加頁碼:圖3 - iTextSharp:輸出包含頁碼的PDF

結論

總結來說,IronPDF其專門化、可用性及與 .NET 環境的無縫整合,使其在需要 HTML 到 PDF 轉換及相關功能的情境中成為最佳選擇,即便 iTextSharp 在 C# PDF 操作庫的領域中仍然是強大的競爭對手。 使用 IronPDF,您可以輕鬆地從 HTML 內容創建發票、報告和動態生成的文件,以在現代開發環境中取得成功所需的效率、有效性和適應性。

IronPDF 的 $749 Lite 版包含永久授權、升級選項和一年的軟體維護。 水印試用期讓用戶可以在實際環境中評估產品。 訪問授權頁面. 請到這個網站了解有關 Iron Software 的更多資訊。

< 上一頁
C# 報告工具(功能比較)
下一個 >
如何使用iTextSharp在C#中閱讀PDF文件:

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >