C#Spire.PDF生成PDF时如何获取最大页数和当前页数
网上找到的都是在页脚处生成页码。
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:页码要用于显示在页面文字中。生成在页脚的方法只能把页码固定在一个位置上生成。