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