既然是要导出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就可以了。小弟初出茅庐有什么不对的地方,再看这篇随笔的人可以指出。