当PDF页面总数不确定的时候导出PDF增加页码(i of n)

既然是要导出PDF首先肯定是导出PDF的代码。

  代码如下:

 1 Document document1 = new Document();//创建一个Document 实例 
 2             PdfWriter.GetInstance(document1, new FileStream(@"C:\001.pdf", FileMode.Create));//创建一个PDF            
 3             document1.Open();//打开页面
 4             Random ran = new Random();//定义一个随机数 模拟不确定页数
 5             for (int i = 0; i < ran.Next(30, 100); i++)
 6             {
 7                 document1.SetPageSize(PageSize.A4);//设置页面大小
 8                 document1.NewPage();//新开一页
 9                 document1.Add(new Paragraph("PDF1, PDF1, PDF1, PDF1, PDF1"));//增加点东西
10             }
11             document1.Close();

此时一个001.pdf已经新建完毕,接下来开始给这个pdf增加页码。
  代码如下

 1  // 创建一个PdfReader对象
 2 PdfReader reader = new PdfReader(@"C:\001.pdf");
 3   // 获得文档页数
 4 int n = reader.NumberOfPages;
 5 // 创建一个文档变量
 6 Document document = new Document();
 7 // 创建该文档
 8 PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"C:\002.pdf", FileMode.Create));
 9 // 打开文档
10 document.Open();
11  // 添加内容
12 PdfContentByte cb = writer.DirectContent;
13  for (int i = 0; i < reader.NumberOfPages; i++)
14                 {
15                     //获取大小
16                     Rectangle psize = reader.GetPageSize(i + 1);
17                     float width = psize.Width;
18                     float height = psize.Height;
19                     //设置页面大小
20                     document.SetPageSize(psize);
21                     //新开一页
22                     document.NewPage();
23                     //添加内容
24                     PdfImportedPage page1 = writer.GetImportedPage(reader, i + 1);
25                     cb.AddTemplate(page1, 0, 0);
26                     cb.MoveTo(0, height);
27                     cb.Stroke();
28                     cb.MoveTo(width, height);
29                     cb.Stroke();
30                     //写入页码
31                     BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
32                     cb.BeginText();
33                     cb.SetFontAndSize(bf, 14);
34                     cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, string.Format("{0} of {1}", (i + 1).ToString(), n.ToString()), width / 2, 18, 0);
35                     cb.EndText();
36                 }
37                 // 关闭文档
38                 document.Close();
39                 reader.Close();

此时已经新建了一个新的002.pdf,内容完全一致,唯独多了页码(例如:1 of 35);接下来只要将原来的001.pdf删除并且将002.pdf修改为001.pdf就可以了。小弟初出茅庐有什么不对的地方,再看这篇随笔的人可以指出。

转载于:https://www.cnblogs.com/MageChen/p/5753464.html

你可能感兴趣的:(当PDF页面总数不确定的时候导出PDF增加页码(i of n))