博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
当PDF页面总数不确定的时候导出PDF增加页码(i of n)
阅读量:5067 次
发布时间:2019-06-12

本文共 2480 字,大约阅读时间需要 8 分钟。

既然是要导出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

你可能感兴趣的文章
ES6内置方法find 和 filter的区别在哪
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
java学习笔记之String类
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>
蓝桥杯-分小组-java
查看>>
Android Toast
查看>>
iOS开发UI篇—Quartz2D使用(绘制基本图形)
查看>>
docker固定IP地址重启不变
查看>>
桌面图标修复||桌面图标不正常
查看>>
JavaScript基础(四)关于对象及JSON
查看>>
JAVA面试常见问题之Redis篇
查看>>
jdk1.8 api 下载
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
雨林木风 GHOST_XP SP3 快速装机版YN12.08
查看>>