Spire.PDF for .NET【页面设置】演示:向 PDF 文档添加页码

news/2024/12/16 11:04:33/

在 PDF 文档中添加页码不仅实用,而且美观,因为它提供了类似于专业出版材料的精美外观。无论您处理的是小说、报告还是任何其他类型的长文档的数字副本,添加页码都可以显著提高其可读性和实用性。在本文中,您将学习如何使用Spire.PDF for .NET在 C# 中向 PDF 文档添加页码

Spire.PDF for .NET 是一款独立 PDF 控件,用于 .NET 程序中创建、编辑和操作 PDF 文档。使用 Spire.PDF 类库,开发人员可以新建一个 PDF 文档或者对现有的 PDF 文档进行处理,且无需安装 Adobe Acrobat。

E-iceblue 功能类库Spire 系列文档处理组件均由中国本土团队研发,不依赖第三方软件,不受其他国家的技术或法律法规限制,同时适配国产操作系统如中科方德、中标麒麟等,兼容国产文档处理软件 WPS(如 .wps/.et/.dps 等格式

Spire.PDF for.net下载 

安装 Spire.PDF for .NET

首先,您需要将 Spire.PDF for.NET 包中包含的 DLL 文件作为引用添加到您的 .NET 项目中。 可以从此链接下载 DLL 文件,也可以通过NuGet安装。

PM> Install-Package Spire.PDF
PDF 坐标系

当使用 Spire.PDF for .NET 操作现有的 PDF 文档时,需要注意的是坐标系的原点位于页面的左上角。x 轴向右延伸,y 轴向下延伸。

通常,页码位于文档的页眉或页脚部分。因此,在确定页码的适当位置时,考虑页面大小和页边距至关重要。

C#:向 PDF 文档添加页码

在 C# 中的页脚中添加左对齐页码

在 Spire.PDF for .NET 库中,有两个可用的类:PdfPageNumberFieldPdfPageCountField。这些类允许您在将当前页码和总页数添加到 PDF 文档的页面时检索和显示它们。如果您希望插入诸如“第 X 页”或“第 X 页,共 Y 页”之类的文本,则可以使用PdfCompositeField类,该类使您能够将所需文本与一个或多个字段组合成单个字段。以下是使用 C# 在 PDF 页脚中添加左对齐页码的步骤。

  • 创建一个Document对象。
  • 从指定页面加载 PDF 文件。
  • 创建一个PdfPageNumberField对象和一个PdfPageCountField对象。
  • 创建一个PdfCompositeField对象来创建“第 X 页,共 Y 页”格式。
  • 使用PdfCompositeField.Location属性指定 PdfCompositeField 对象的位置。
  • 遍历文档中的页面,并使用PdfCompositeField.Draw()方法将“第 X 页,共 Y 页”添加到页脚部分的左上角。
  • 将文档保存为不同的 PDF 文件。

【C#】

using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.License;namespace AddPageNumbersToLeftCorner
{
class Program
{
static void Main(string[] args)
{
// Apply your license key
LicenseProvider.SetLicenseKey("License Key");// Create a PdfDocument object
PdfDocument doc = new PdfDocument();// Load a PDF file
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");// Create font, brush and pen, which determine the appearance of the page numbers to be added
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", 12, FontStyle.Regular), true);
PdfBrush brush = PdfBrushes.Black;
PdfPen pen = new PdfPen(brush, 1.0f);// Create a PdfPageNumberField object and a PdfPageCountField object
PdfPageNumberField pageNumberField = new PdfPageNumberField();
PdfPageCountField pageCountField = new PdfPageCountField();// Create a PdfCompositeField object to combine page count field and page number field in a single field
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "Page {0} of {1}", pageNumberField, pageCountField);// Get the page size
SizeF pageSize = doc.Pages[0].Size;// Set the location of the composite field
compositeField.Location = new PointF(72, pageSize.Height - 45);// Iterate through the pages in the document
for (int i = 0; i < doc.Pages.Count; i++)
{// Get a specific page
PdfPageBase page = doc.Pages[i];// Draw a line at the specified position
page.Canvas.DrawLine(pen, 72, pageSize.Height - 50, pageSize.Width - 72, pageSize.Height - 50);// Draw the composite field on the page
compositeField.Draw(page.Canvas);
}// Save to a different PDF file
doc.SaveToFile("AddPageNumbersToLeftCorner.pdf");// Dispose resources
doc.Dispose();
}
}
}

C#:向 PDF 文档添加页码

在 C# 中的页脚中添加居中对齐的页码

为了将页脚部分的页码与中心对齐,动态计算文本“第 X 页,共 Y 页”的宽度至关重要。此计算至关重要,因为它决定了页码 ( PdfCompositeField ) 的 X 坐标。要实现居中对齐,X 坐标的计算方法是从页面宽度中减去页码的宽度,然后将结果除以 2,如下所示:(PageWidth - PageNumberWidth)/2。

以下是使用 C# 在 PDF 页脚中添加居中对齐页码的步骤。

  • 创建一个Document对象。
  • 从指定页面加载 PDF 文件。
  • 创建一个PdfPageNumberField对象和一个PdfPageCountField对象。
  • 创建一个PdfCompositeField对象来创建“第 X 页,共 Y 页”格式。
  • 使用PdfCompositeField.Location属性指定 PdfCompositeField 对象的位置。
  • 遍历文档中的页面,并使用PdfCompositeField.Draw()方法将“第 X 页,共 Y 页”添加到页脚部分的中心。
  • 将文档保存为不同的 PDF 文件。

【C#】

using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.License;namespace AddPageNumbersToCenter
{
class Program
{
static void Main(string[] args)
{
// Apply your license key
LicenseProvider.SetLicenseKey("License Key");// Create a PdfDocument object
PdfDocument doc = new PdfDocument();// Load a PDF file
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");// Create font, brush and pen, which determine the appearance of the page numbers to be added
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", 12, FontStyle.Regular), true);
PdfBrush brush = PdfBrushes.Black;
PdfPen pen = new PdfPen(brush, 1.0f);// Create a PdfPageNumberField object and a PdfPageCountField object
PdfPageNumberField pageNumberField = new PdfPageNumberField();
PdfPageCountField pageCountField = new PdfPageCountField();// Create a PdfCompositeField object to combine page count field and page number field in a single field
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "Page {0} of {1}", pageNumberField, pageCountField);// Iterate through the pages in the document
for (int i = 0; i < doc.Pages.Count; i++)
{// Get a specific page
PdfPageBase page = doc.Pages[i];// Get the page size
SizeF pageSize = doc.Pages[i].Size;// Draw a line at the specified position
page.Canvas.DrawLine(pen, 72, pageSize.Height - 50, pageSize.Width - 72, pageSize.Height - 50);// Measure the size the "Page X of Y"
SizeF pageNumberSize = font.MeasureString(string.Format("Page {0} of {1}", i + 1, doc.Pages.Count));// Set the location of the composite field
compositeField.Location = new PointF((pageSize.Width - pageNumberSize.Width) / 2, pageSize.Height - 45);// Draw the composite field on the page
compositeField.Draw(page.Canvas);}// Save to a different PDF file
doc.SaveToFile("AddPageNumbersToCenter.pdf");// Dispose resources
doc.Dispose();
}
}
}

C#:向 PDF 文档添加页码

在 C# 中的页脚中添加右对齐页码

要将页码定位在页脚部分的右上角,还必须动态计算文本“第 X 页,共 Y 页”的宽度。因为页码 ( PdfCompositeField ) 的 X 坐标是通过从页面宽度中减去页码和右页边距的组合宽度来确定的,如下所示:PageWidth - (PageNumberWidth + RightPageMargin)。

以下是使用 C# 在 PDF 页脚中添加右对齐页码的步骤。

  • 创建一个Document对象。
  • 从指定页面加载 PDF 文件。
  • 创建一个PdfPageNumberField对象和一个PdfPageCountField对象。
  • 创建一个PdfCompositeField对象来创建“第 X 页,共 Y 页”格式。
  • 使用PdfCompositeField.Location属性指定 PdfCompositeField 对象的位置。
  • 遍历文档中的页面,并使用PdfCompositeField.Draw()方法将“第 X 页,共 Y 页”添加到页脚部分的右上角。
  • 将文档保存为不同的 PDF 文件。

【C#】

using Spire.Pdf.AutomaticFields;
using Spire.Pdf.Graphics;
using Spire.Pdf;
using System.Drawing;
using Spire.Pdf.License;namespace AddPageNumbersToRigthCorner
{
class Program
{
static void Main(string[] args)
{
// Apply your license key
LicenseProvider.SetLicenseKey("License Key");// Create a PdfDocument object
PdfDocument doc = new PdfDocument();// Load a PDF file
doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");// Create font, brush and pen, which determine the appearance of the page numbers to be added
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Times New Roman", 12, FontStyle.Regular), true);
PdfBrush brush = PdfBrushes.Black;
PdfPen pen = new PdfPen(brush, 1.0f);// Create a PdfPageNumberField object and a PdfPageCountField object
PdfPageNumberField pageNumberField = new PdfPageNumberField();
PdfPageCountField pageCountField = new PdfPageCountField();// Create a PdfCompositeField object to combine page count field and page number field in a single field
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "Page {0} of {1}", pageNumberField, pageCountField);// Iterate through the pages in the document
for (int i = 0; i < doc.Pages.Count; i++)
{// Get a specific page
PdfPageBase page = doc.Pages[i];// Get the page size
SizeF pageSize = doc.Pages[i].Size;// Draw a line at the specified position
page.Canvas.DrawLine(pen, 72, pageSize.Height - 50, pageSize.Width - 72, pageSize.Height - 50);// Measure the size the "Page X of Y"
SizeF pageNumberSize = font.MeasureString(string.Format("Page {0} of {1}", i + 1, doc.Pages.Count));// Set the location of the composite field
compositeField.Location = new PointF(pageSize.Width - pageNumberSize.Width - 72, pageSize.Height - 45);// Draw the composite field on the page
compositeField.Draw(page.Canvas);}// Save to a different PDF file
doc.SaveToFile("AddPageNumbersToRigthCorner.pdf");// Dispose resources
doc.Dispose();
}
}
}

C#:向 PDF 文档添加页码


http://www.ppmy.cn/news/1555568.html

相关文章

游戏引擎学习第47天

仓库: https://gitee.com/mrxiao_com/2d_game 昨天我们花了一点时间来修复一个问题&#xff0c;但基本上是在修复这个问题的过程中&#xff0c;我们决定添加一个功能&#xff0c;那就是在屏幕上控制多个实体。所以如果我有一个手柄&#xff0c;我可以添加另一个角色&#xff0…

java agent-03-Java Instrumentation 结合 bytekit 实战笔记 agent attach

java agent 系列 java agent 介绍 java agent-02-Java Instrumentation API java agent-03-Java Instrumentation 结合 bytekit 实战笔记 agent attach java agent-03-Java Instrumentation 结合 bytekit 实战笔记 agent premain 拓展阅读 前面几篇文档&#xff0c;我们简…

⭐Redis - 手动实现分布式锁 Redisson 的使用

概述 定义&#xff1a;分布式系统或集群模式下&#xff0c;多进程或多节点之间 “可见” 并且 “互斥” 的锁机制 功能&#xff1a;确保同一时刻只有一个进程或节点能够获取某项资源的访问权 特点 互斥高可用多进程可见高并发 (高性能)安全性 (避免死锁问题) 常见的分布式锁 …

【软件工程】第八章·单元/集成测试程序

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;软件开发必练内功_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前…

vue2-请求代理,动态target

当你在 Vue 2 项目中将 axios 的 baseURL 配置为 http://192.168.11.111:8762 时&#xff0c;所有请求都被认为是绝对路径请求&#xff0c;这种请求会直接发送到目标服务器&#xff0c; 跳过开发服务器的代理。 baseURL具体值 这就是为什么代理配置无法拦截 /exportPdf 的原因…

商协会管理系统:沃德商协会管理系统微信小程序公众号

智慧化会员体系 在线入会、会费缴纳、到期提醒、会员管理、消息群发、线上证书、会员通讯录、有效供需匹配等。 智敏化内容运营活动接龙&#xff0c;问卷调查&#xff0c;党建新闻资讯发布&#xff0c;多方位满足会员内容信息运营。 智能化活动构建为商会提供多种活动营解决…

【网络】五种IO模型多路转接select/poll/epollReactor反应堆模式

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;计算机网络原理_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.五种 IO 模型 1.1 阻塞 IO 1.2 非阻塞 IO 1.3 信号驱动 IO 1.4 IO 多路转接 1.5 异步 IO 2.高级 IO 重要概念 2.1 …

Redis缓存应用场景【Redis场景上篇】

文章目录 1.缓存基础2.缓存异步场景1.缓存穿透2.缓存击穿3.缓存雪崩总结 3.缓存一致性 1.缓存基础 Redis由于性能高效&#xff0c;通常可以做数据库存储的缓存。一般而言&#xff0c;缓存分为服务端缓存和客户端缓存。缓存有以下三种模式&#xff1a; Cache Aside&#xff08…