产品比较

如何使用iTextSharp在C#中向PDF添加页码

发布 2024年四月3日
分享:

介绍

"便携式文档格式 "或 PDF 是 Adobe 公司创建的一种文件格式。 在提交需要对文本和照片进行格式化的论文时,PDF 文件就会派上用场。 在当今世界,PDF 文件是必不可少的,所有企业部门都使用它来创建文档和开具发票。 得益于目前市场上的多个 PDF 库,创建 PDF 几乎成为了一种本能。要选择适合自己的 PDF 库,关键是在为自己的项目使用一个 PDF 库之前,要权衡每个 PDF 库的优势和特点。

在本文中,我们将了解如何使用 iTextSharp C# 在 PDF 中添加页码。 此外,我们还将比较 iTextSharpIronPDF.

如何使用 iTextSharp C&num 在 PDF 中添加页码;

  1. 使用任何集成开发环境创建一个新的 C# 项目。
  2. 创建一个新的 PDF 对象。
  3. 在 HTML 页脚添加页码。
  4. 根据 HTML 资料创建 PDF。
  5. 将 PDF 文件保存到电脑中。

什么是 IronPDF

IronPDF 是一个强大的 PDF .NET Framework,开发人员可利用它轻松制作、查看和编辑 PDF。 IronPDF 是一款复杂的工具,内部使用 chromium 引擎。 它可以将 HTML5、JavaScript、CSS 和图片文件转换为 PDF,添加自定义页眉和页脚,并生成与浏览器中显示完全一致的 PDF。 IronPDF 支持许多在线和 .NET 格式,包括 HTML、ASPX、Razor View 和 MVC。

IronPDF 功能

  • 利用 .NET C# 代码创建、读取和简单编辑 PDF 文件。
  • 从网站 URL 链接创建 PDF 的过程,同时管理用户代理、代理、Cookie、HTTP 标头和表单变量,以便使用 HTML 登录表单进行登录。
  • 从已有的 PDF 文件中删除图片的过程。
  • 包括 PDF 的元素:表格、文本、照片、书签、水印、页眉、页脚等。
  • 能轻松分离和合并大量 PDF 文档的页面。

    要了解有关 IronPDF 文档的更多信息,请参阅 *这里***.

安装 IronPDF

在 Visual Studio 工具中,选择 NuGet 包管理器,就能在工具下找到 Visual Command-Line 界面。 应在软件包管理终端选项卡中输入以下命令。

Install-Package IronPdf

或者,我们也可以使用软件包管理器方法。 使用 Visual Studio 的 NuGet 包管理器选项,可以直接将软件包安装到解决方案中。 在 NuGet 网站上有一个用于查找软件包的搜索框。我们只需在软件包管理器中查找 "IronPDF",如下图所示:

如何使用 C# 中的 iTextSharp 在 PDF 中添加页码:图 1 - 从软件包管理器安装 IronPDF

相关搜索结果列表显示在上图中。 要在系统中安装软件包,请进行必要的选择。

现在软件包已经下载并安装完毕,可以在当前项目中使用。

什么是 iTextSharp

iTextSharp 是一个灵活的库,用于用 C# 制作和修改 PDF 文档。 它提供多种功能,如加密、PDF 合并、文本和图片提取等。 iTextSharp 是一款高效的工具,可用于多种任务,包括为 PDF 添加页码。

iTextSharp 的功能

  • iText 库提供了生成 PDF 文档的应用程序接口。
  • HTML 和 XML 字符串均可使用 iText 程序解析为 PDF 文件。
  • 我们可以使用 iText 库为 PDF 文档添加书签、页码和标记。
  • 我们还可以使用 iText 库将 PDF 文档分割成多个 PDF 文档,或将多个 PDF 文档合并成一个 PDF 文档。
  • 我们可以使用 iText 修改 PDF 表单。

安装 iTextSharp

使用 NuGet 软件包管理器查找 iText。 iText7 和 iText.pdfhtml 是必须安装的软件,因为 iText 的功能分属多个软件包。

如果选择 Visual Command-Line 界面,则需要安装以下软件包:

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对象。 使用此配置后,每次在 PDF 文档中添加新页面时,都会调用PageNumberEventHandler类的OnEndPage函数,并在每页底部添加页码。 我们还可以使用现有的 PDF 文档来添加页码。

如何使用 C# 中的 iTextSharp 在 PDF 中添加页码:图 3 - iTextSharp:输出带页码的 PDF

结论

总而言之 IronPDFiTextSharp 的专业性、可用性以及与 .NET 环境的无缝集成,使其成为需要将 HTML 转换为 PDF 及相关功能的情况下的最佳选择,尽管 iTextSharp 仍是 C# PDF 操作库中的有力竞争者。 有了 IronPDF,您可以从 HTML 内容创建发票、报告和动态生成的文档,其简便性、有效性和适应性是在现代开发环境中取得成功所必需的。

IronPDF 的"$liteLicense "精简版许可中包含永久许可、升级选项和一年的软件维护服务。 带水印的试用期允许用户在实际环境中对产品进行评估。 访问许可证 . 转到这里 网站 了解有关 Iron Software 的更多信息。

< 前一页
C# 报告工具(功能比较)
下一步 >
在 C# 中使用 iTextSharp 阅读 PDF 文档的方法:

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >