你的位置:首页 > ASP.net教程

[ASP.net教程]当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就可以了。小弟初出茅庐有什么不对的地方,再看这篇随笔的人可以指出。