Spire.PDF for .NET【页面设置】演示:对PDF 文件进行分页

devtools/2024/10/4 19:00:45/

PDF 分页不仅允许用户在 PDF 文件中添加页码,还可以将 PDF 文档分成几部分,以便添加一些附加信息,例如 PDF 文件封面、简介或参考资料。因此,PDF 分页为管理大型文件或组织书籍提供了极大的便利。本节将向您展示一种通过C#、VB.NET 中的.NET PDF组件对 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 是一个用于管理 PDF 文件的 PDF 组件,它使您可以使用 C#、VB.NET 快速分页 PDF 页面。在阐述主要代码之前,我想展示输出 PDF 文件的屏幕截图,如下所示:

设置 PDF 分页

您可以在此处下载适用于 .NET 的 Spire.PDF并将其安装在您的系统上。添加 Spire.Pdf dll 后,让我们一起开始对 PDF 文件进行分页。

在整个解决方案中,对 PDF 文件进行分页主要有三个步骤。一个是绘制页码;另一个是绘制内容;最后一个是绘制 PDF 封面,以便您可以添加其他信息。让我们一一看看它们。

分页 PDF - 绘制 PDF 页码

绘制页码时,页面标签也在下面的方法中设置。通过调用此方法:DrawString(string s, PdfFontBase font, PdfBrush brush, float x, float y, PdfStringFormat format)。您不仅可以设置页面标签字体、颜色、位置和格式。请参阅下面的详细代码:

【C# 】

foreach (PdfPageBase page in section.Pages)
{
page.Canvas.SetTransparency(0.5f);
PdfBrush brush = PdfBrushes.Black;
PdfPen pen = new PdfPen(brush, 0.75f);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Italic), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Right);
format.MeasureTrailingSpaces = true;
float space = font.Height * 0.75f;
float x = margin.Left;
float width = page.Canvas.ClientSize.Width - margin.Left - margin.Right;
float y = page.Canvas.ClientSize.Height - margin.Bottom + space;
page.Canvas.DrawLine(pen, x, y, x + width, y);
y = y + 1;
String numberLabel
= String.Format("{0} of {1}", startNumber++, pageCount);
page.Canvas.DrawString(numberLabel, font, brush, x + width, y, format);
page.Canvas.SetTransparency(1);
}

【VB.NET 】

For Each page As PdfPageBase In section.Pages
page.Canvas.SetTransparency(0.5!)
Dim brush As PdfBrush = PdfBrushes.Black
Dim pen As PdfPen = New PdfPen(brush, 0.75!)
Dim font As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Arial", 9!, FontStyle.Italic), true)
Dim format As PdfStringFormat = New PdfStringFormat(PdfTextAlignment.Right)
format.MeasureTrailingSpaces = true
Dim space As Single = (font.Height * 0.75!)
Dim x As Single = margin.Left
Dim width As Single = (page.Canvas.ClientSize.Width _
- (margin.Left - margin.Right))
Dim y As Single = ((page.Canvas.ClientSize.Height - margin.Bottom) _
+ space)
page.Canvas.DrawLine(pen, x, y, (x + width), y)
y = (y + 1)
Dim numberLabel As String = String.Format("{0} of {1}", startNumber++, pageCount)
page.Canvas.DrawString(numberLabel, font, brush, (x + width), y, format)
page.Canvas.SetTransparency(1)
Next
分页 PDF - 绘制 PDF 封面

封面始终是添加有关此 PDF 文件的附加信息的最佳位置。在下面的方法中,我忽略了添加参考内容和文档标题,您可以在 PDF 封面中添加封面图像类 PdfImage。请参阅以下代码:

【C# 】

//cover
PdfBrush brush3 = PdfBrushes.Black;
PdfBrush brush4 = new PdfSolidBrush(new PdfRGBColor(0xf9, 0xf9, 0xf9));
PdfImage image
= PdfImage.FromFile(@"..\potala palace1.jpg");
String text = paginate_PDF.Properties.Resources.ImageDescription;
float r = image.PhysicalDimension.Height / image.Height;
PdfPen pen = new PdfPen(brush1, r);
SizeF size = font1.MeasureString(text, image.PhysicalDimension.Width - 2);
PdfTemplate template
= new PdfTemplate(image.PhysicalDimension.Width + 4 * r + 4,
image.PhysicalDimension.Height + 4 * r + 7 + size.Height);
template.Graphics.DrawRectangle(pen, brush4, 0, 0, template.Width, template.Height);

【VB.NET 】

'cover
Dim brush3 As PdfBrush = PdfBrushes.Black
Dim brush4 As PdfBrush = New PdfSolidBrush(New PdfRGBColor(249, 249, 249))
Dim image As PdfImage = PdfImage.FromFile("..\potala palace1.jpg")
Dim text As String = paginate_PDF.Properties.Resources.ImageDescription
Dim r As Single = (image.PhysicalDimension.Height / image.Height)
Dim pen As PdfPen = New PdfPen(brush1, r)
Dim size As SizeF = font1.MeasureString(text, (image.PhysicalDimension.Width - 2))
Dim template As PdfTemplate = New PdfTemplate((image.PhysicalDimension.Width _
+ ((4 * r) _
+ 4)), (image.PhysicalDimension.Height _
+ ((4 * r) + (7 + size.Height))))
template.Graphics.DrawRectangle(pen, brush4, 0, 0, template.Width, template.Height)

http://www.ppmy.cn/devtools/119133.html

相关文章

Excel 获取某列不为空的值【INDEX函数 | SMALL函数或 LARGE函数 | ROW函数 | ISBLANK 函数】

〇、需求 Excel 获取某列不为空的值(获取某列中第一个非空值 或 获取某列中最后一个非空值)。 一、知识点讲解 INDEX函数 和 SMALL函数 两个函数搭配使用都可以实现上述需求 获取某列中第一个非空值 。 INDEX函数 和 LARGE函数 两个函数搭配使用都可以实现上述需求 获取某…

【CKA】二、节点管理-设置节点不可用

2、节点管理-设置节点不可用 1. 考题内容: 2. 答题思路: 先设置节点不可用,然后驱逐节点上的pod 这道题就两条命令,直接背熟就行。 也可以查看帮助 kubectl cordon -h kubectl drain -h 参数详情: –delete-empty…

关于音频噪音处理【常见问题、解决方案等】

1、降噪 【1】动物叫声处理 问题描述 原视频的人声与动物叫声重合,想清除动物的声音。 解决方案 [1] 声音模型噪音消除 1、将音频文件导入Adobe Audition 2、打开频谱图,找到相应噪音的特征,用画笔工具选择所有噪音区域 3、使用“学习声音模…

【Golang】Go语言中type关键字到底是什么?

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

普通二叉搜索树的模拟实现【C++】

二叉搜素树简单介绍 二叉搜索树又称二叉排序树,是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜索树 注意…

ssm模糊知识点整合

一、参数绑定常用注解 RequestParam:用于将请求参数绑定到你的方法参数上。 PathVariable:用于将路径变量绑定到你的方法参数上。 RequestBody:用于将请求主体绑定到你的方法参数上,通常用于绑定POST请求的JSON或XML数据。 Req…

每天五分钟深度学习框架pytorch:交叉熵计算时的维度是什么?

本文重点 前面我们学习了pytorch中已经封装好的损失函数,已经封装好的损失函数有很多,但是我们并没有详细介绍,原因就是单独介绍损失函数可能难以理解,我们上一章节的目的是让大家先了解一下常见的损失函数,然后再之后的实际使用中遇到哪个损失函数,我们就使用哪个损失函…

YOLOv7改进:Unified-loU,用于高品质目标检测的统一loU ,2024年8月最新IoU

💡💡💡现有IoU问题点:IoU (Intersection over Union)作为模型训练的关键,极大地显示了当前预测框与Ground Truth框之间的差异。后续研究者不断在IoU中加入更多的考虑因素,如中心距离、纵横比等。然而,仅仅提炼几何差异是有上限的;而且新的对价指数与借据本身存在潜在…