使用IRONPDF

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

雷根·彭
雷根·彭
2022年六月23日
更新 2024年一月21日
分享:

介绍

"便携式文档格式 "或 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");
}

首先,我们定义要转换成 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);
        }
    }
}

首先,我们要为 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 的更多信息。

雷根·彭
软件工程师
Regan毕业于雷丁大学,拥有电子工程学士学位。在加入Iron Software之前,他的前工作职位要求他专注于单一任务;他在Iron Software最喜欢的是能进行多种工作,无论是增加销售价值、技术支持、产品开发还是营销。他喜欢了解开发人员如何使用Iron Software的库,并利用这些知识不断改进文档和开发产品。
< 前一页
如何在C#中从PDF中提取数据
下一步 >
C# 将图像添加到 PDF(开发者教程)