C#Spire.PDF生成PDF时如何获取最大页数和当前页数

qq_29715381 2018-05-15 03:34:43
网上找到的都是在页脚处生成页码。
static void Main(string[] args)
{
//新建一个PDF文档并添加一页
PdfDocument doc = new PdfDocument();
PdfPageBase page = doc.Pages.Add();

//设置margin
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
PdfMargins margin = new PdfMargins();
margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Bottom = margin.Top;
margin.Left = unitCvtr.ConvertUnits(4.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
margin.Right = margin.Left;

//调用AddFooter方法添加页脚
AddFooter(doc, PdfPageSize.A4, margin);

//调用AddPageNumber方法添加页码
AddPageNumber(doc, margin);

//保存文档
doc.SaveToFile("PDF页脚.pdf");
System.Diagnostics.Process.Start("PDF页脚.pdf");
}

static void AddFooter(PdfDocument doc, SizeF pageSize, PdfMargins margin)
{
//初始化一个PdfPageTemplateElement对象,用于创建页脚
PdfPageTemplateElement footerSpace = new PdfPageTemplateElement(pageSize.Width, margin.Bottom);
footerSpace.Foreground = true;
doc.Template.Bottom = footerSpace;

//在页脚部分绘入文字
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center);
String headerText = "页面文字";
float x = PdfPageSize.A4.Width / 2;
float y = 0;
footerSpace.Graphics.DrawString(headerText, font, PdfBrushes.BlueViolet, x, y, format);
}
static void AddPageNumber(PdfDocument doc, PdfMargins margin)
{
//添加页码到页脚部分
foreach (PdfPageBase page in doc.Pages)
{
PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Left);
int x1 = Convert.ToInt32(page.Canvas.ClientSize.Width / 2);
int y1 = Convert.ToInt32(page.Canvas.ClientSize.Height - margin.Bottom + 20);
Rectangle bounds = new Rectangle(x1, y1, 20, 20);
PdfPageNumberField field = new PdfPageNumberField();
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", 10f), true);
field.Font = font;
field.StringFormat = format1;
field.Brush = PdfBrushes.BlueViolet;
field.Bounds = bounds;
field.Draw(page.Canvas);
}

}
求各位大神帮忙在不使用field.Draw()的情况下,怎么才能获取到生成到页脚的页码数值呢
ps:页码要用于显示在页面文字中。生成在页脚的方法只能把页码固定在一个位置上生成。
...全文
1700 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2018-05-16
  • 打赏
  • 举报
回复
不会吧?虽然没有用过 Spire.PDF,但相信他会有 PageCount 之类的属性,再不济,也应该可以从页数据缓冲区,推算出来 难道他不提供自动页码和指定页编辑功能?
qq_29715381 2018-05-16
  • 打赏
  • 举报
回复
谢谢各位大神的帮助,一开始用了笨方法,在for循环外围设了一个int a = 0,每次for循环创建doc.Pages.Add()的时候a++,最后统计出的总页数和当前页数 关于指定页编辑的方法网上也没有找到,只能通过PdfTextFind去找对应的几个字段,通过找到字段的页面来指定页面编辑了,如果哪位大神知道更好的指定页面方法还请告知。
threenewbee 2018-05-15
  • 打赏
  • 举报
回复
用iText.NET吧,文档比较齐全,支持比较好一些。 很容易实现你说的功能,参考:https://blog.csdn.net/aasswwe/article/details/7639768

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧