- 浏览: 885129 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (354)
- Java学习 (122)
- jstl el表达式 (2)
- struts2 标签 (6)
- Ibatis (14)
- S2SH (3)
- struts2 json (2)
- JDK1.6-JDK1.5 (1)
- spring mvc (1)
- 工作项目开发 (8)
- jxl (3)
- jqgrid (9)
- POI (10)
- jQuery (9)
- itext (11)
- oracle (56)
- js (20)
- treegrid (1)
- myeclipse (4)
- Jforum (1)
- iphone (2)
- 角色权限 (1)
- Log4J (5)
- WebService (1)
- spring定时 (1)
- swfupload (12)
- Servlet (1)
- KindEditor (1)
- Java学习,httpclient (2)
- http (4)
- datagrid (1)
- KinSlideshow (1)
- android (7)
- html (1)
- CSS (1)
- 正则表达式 (3)
- easyui (6)
- JSONP (1)
- SQLServer (1)
- tomcat (2)
- Spring (4)
- Jquery plugins (2)
- windows7 (3)
- bootstrap (1)
- FreeMarker (1)
- flex (1)
- ExtJS (6)
- tTP-Link (1)
- MySQL (4)
- JavaScript (3)
- Notepad++ (1)
- ora (1)
- C语言 (1)
- 计算机 (1)
- DWR (2)
- 吉他 (1)
- hibernate (1)
- eclipse (1)
最新评论
-
天使建站:
这里的这篇文章写得很好:http://www.aijquery ...
jS 如何删除二维数组的重复项 -
羽翼的心动:
POI处理的格式单一,无法导出格式比较复杂的表格。POI不能使 ...
poi合并单元格同时导出excel -
zhixinhuacom:
jqgrid 按回车键默认提交数据,怎么做才能时回车不提交数据 ...
JQgrid要实现在jqGrid表格上动态的加行、删行,最后点击“保存”按钮,与后台交互,保存数据 -
w_mojian180:
nice 很多情况都是因为引入文件导入
Uncaught SyntaxError: Unexpected token < -
springdata_springmvc:
bootstrap demo实例教程源代码下载:http:// ...
bootstrap-switch开关按钮表单插件
撞转载自:
1.概述
iText5中并没有之前版本HeaderFooter对象设置页眉和页脚,可以利用PdfPageEventHelper来完成页眉页脚的设置工作。PdfPageEventHelper中包含以下事件处理器。
onOpenDocument() — 当打开一个文档时触发,可以用于初始化文档的全局变量。
onStartPage() — 当一个页面初始化时触发,可用于初始化页面的设置参数,但是注意这个函数触发时,该页面并没有创建好,不用利用这个函数添加内容,最好利用onEndPage()处理页面的初始化。
onEndPage() — 在创建一个新页面完成但写入内容之前触发,是添加页眉、页脚、水印等最佳时机。
onCloseDocument() — 在文档关闭之前触发,可以用于释放一些资源。
2.重载PdfPageEventHelper类
定义一个类HeaderFooter,继承了父类PdfPageEventHelper
在文档的每个页面中,必须定义一个Ractangle矩形,其中参数为art,这样在HeaderFooter类中就可以通过这个矩形,获取文档的边框位置,从而设置页眉和页脚。
代码如下:
iText5中并没有之前版本HeaderFooter对象设置页眉和页脚,可以利用PdfPageEventHelper来完成页眉页脚的设置工作。PdfPageEventHelper中包含以下事件处理器。
onOpenDocument() — 当打开一个文档时触发,可以用于初始化文档的全局变量。
onStartPage() — 当一个页面初始化时触发,可用于初始化页面的设置参数,但是注意这个函数触发时,该页面并没有创建好,不用利用这个函数添加内容,最好利用onEndPage()处理页面的初始化。
onEndPage() — 在创建一个新页面完成但写入内容之前触发,是添加页眉、页脚、水印等最佳时机。
onCloseDocument() — 在文档关闭之前触发,可以用于释放一些资源。
2.重载PdfPageEventHelper类
定义一个类HeaderFooter,继承了父类PdfPageEventHelper
在文档的每个页面中,必须定义一个Ractangle矩形,其中参数为art,这样在HeaderFooter类中就可以通过这个矩形,获取文档的边框位置,从而设置页眉和页脚。
代码如下:
-
import
com.itextpdf.text.Document;
-
import com.itextpdf.text.Element;
-
import com.itextpdf.text.Phrase;
-
import com.itextpdf.text.Rectangle;
-
import com.itextpdf.text.pdf.ColumnText;
-
import com.itextpdf.text.pdf.PdfPageEventHelper;
-
import com.itextpdf.text.pdf.PdfWriter;
-
public class HeaderFooter extends PdfPageEventHelper{
- public void onEndPage (PdfWriter writer, Document document) {
- Rectangle rect = writer.getBoxSize("art");
- switch(writer.getPageNumber() % 2) {
- case 0:
- ColumnText.showTextAligned(writer.getDirectContent(),
- Element.ALIGN_RIGHT,
new Phrase("even
header"),
- rect.getRight(), rect.getTop(), 0);
- break;
- case 1:
- ColumnText.showTextAligned(writer.getDirectContent(),
- Element.ALIGN_LEFT,
new Phrase("odd
header"),
- rect.getLeft(), rect.getTop(), 0);
- break;
- }
- ColumnText.showTextAligned(writer.getDirectContent(),
- Element.ALIGN_CENTER,
new Phrase(String.format("page
%d", writer.getPageNumber())),
- (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);
- }
- }
-
import
com.itext.HeaderFooter;
-
import com.itextpdf.text.pdf.PdfPageEventHelper;
-
import com.itextpdf.text.pdf.PdfWriter;
-
import com.itextpdf.text.pdf.ColumnText;
-
import com.itextpdf.text.*;
-
import java.io.FileOutputStream;
-
public class HeaderAndFooterDemo {
public static void main(String[] args){
- Document document =
new Document(PageSize.A4, 50, 50, 50, 50);
- try{
- PdfWriter writer=PdfWriter.getInstance(document,
- new FileOutputStream("C:\\testHeaderAndFooter.pdf") );
- Rectangle rect = new Rectangle(36, 54, 559,
788);
- rect.setBorderColor(BaseColor.BLACK);
- writer.setBoxSize("art", rect);
- HeaderFooter header=new HeaderFooter();
- writer.setPageEvent(header);
- document.open();
- document.newPage();
- Paragraph par = new Paragraph("first
paragraph");
- document.add(par);
- document.newPage();
- Paragraph par2 = new Paragraph("second
paragraph");
- document.add(par2);
- document.close();
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- }
3. 解决第X页/共Y页问题
我们通过PdfWriter中的getPageNumber()函数获取当前是第几页,但是没有办法获取文档共多少页。
我们可以利用XObject对象,iText仅在调用释放模板方法后才将PdfTemplate写入到OutputStream中,否则对象将一直保存在内存中,直到关闭文档。
我们可以给第1个页面添加template,直到最后一个页面才将内容写入到这个模板。
-
import
com.itextpdf.text.Document;
-
import com.itextpdf.text.DocumentException;
-
import com.itextpdf.text.Element;
-
import com.itextpdf.text.ExceptionConverter;
-
import com.itextpdf.text.Image;
-
import com.itextpdf.text.Phrase;
-
import com.itextpdf.text.Rectangle;
-
import com.itextpdf.text.pdf.ColumnText;
-
import com.itextpdf.text.pdf.PdfPCell;
-
import com.itextpdf.text.pdf.PdfPTable;
-
import com.itextpdf.text.pdf.PdfPageEventHelper;
-
import com.itextpdf.text.pdf.PdfTemplate;
-
import com.itextpdf.text.pdf.PdfWriter;
-
public class TableHeader extends PdfPageEventHelper{
- String header;
- PdfTemplate total;
-
- public void setHeader(String
header){
- this.header=header;
- }
-
- public void onOpenDocument(PdfWriter writer,Document document){
- total = writer.getDirectContent().createTemplate(30,16);
- }
-
- public void onEndPage (PdfWriter writer, Document document)
{
- PdfPTable table = new
PdfPTable(3);
- try{
- table.setWidths(new int[]{24,24,2});
- table.setTotalWidth(527);
- table.setLockedWidth(true);
- table.getDefaultCell().setFixedHeight(20);
- table.getDefaultCell().setBorder(Rectangle.BOTTOM);
- table.addCell(header);
- table.getDefaultCell().setHorizontalAlignment(
- Element.ALIGN_RIGHT);
- table.addCell(String.format("page %d of",writer.getPageNumber()));
- PdfPCell cell = new PdfPCell(Image.getInstance(total));
- cell.setBorder(Rectangle.BOTTOM);
- table.addCell(cell);
- table.writeSelectedRows(0,-1,34,803,writer.getDirectContent());
- }
- catch(DocumentException de){
- throw new ExceptionConverter(de);
- }
- }
-
- public void onCloseDocument(PdfWriter writer,Document document){
- ColumnText.showTextAligned(total,Element.ALIGN_LEFT,new
Phrase(String.valueOf(writer.getPageNumber()-1)),2,2,0);
-
- }
- }
参考文献
1.Adding page events to PdfWriter (iText 5).http://what-when-how.com/itext-5/adding-page-events-to-pdfwriter-itext-5/
2iText5参考. http://api.itextpdf.com/itext/
发表评论
-
Java中List Set Map 是否有序等总结
2015-05-05 11:09 665转http://blog.csdn.net/zhengqiq ... -
ava操作word宏
2015-04-29 10:44 474转:http://aa8945163.iteye.com/b ... -
System.load 和 System.loadLibrary详解
2015-04-09 10:50 572转:http://www.cnblogs.com/h ... -
(转)谈谈对Java中Unicode、编码的理解
2015-03-03 11:07 383转:http://www.cnblogs.com/newst ... -
HTTP status code 说明
2015-01-15 16:15 449200 – 服务器成功返回 ... -
JAVA邮件发送
2015-01-13 16:56 589转:http://www.cnblogs.com/codep ... -
Java排序算法 记录
2015-01-13 10:24 385转:http://www.cnblogs.com/dians ... -
java中volatile关键字
2015-01-05 14:30 454转:http://www.cnblogs.com/aigon ... -
4.1 Servlet简介
2014-12-22 16:34 390转:http://www.blogjava.net/ ... -
在 Windows 中实现 Java 本地方法
2014-12-21 15:18 422转:http://www.ibm.com/devel ... -
严重: Error listenerStart
2014-11-18 17:14 3842007-5-31 14:27:13 org.apache. ... -
java.security.AccessControlException: access denied 的解决方法
2014-11-07 22:07 3289转:http://blog.csdn.net/maomao ... -
Linux下反斜杠号"\"
2014-10-27 13:36 2434转:http://www.cnblogs.com/Muyou ... -
@override在JDK1.5和JDK1.6中用法区别
2014-10-14 22:54 359转:http://gaowenming.iteye.com/ ... -
ClientAbortException:java.io.IOException解决方案
2014-09-09 10:13 12459转:http://blog.sina.com.cn/s/bl ... -
SchedulerFactoryBean 注入
2014-08-26 10:19 778转:http://blog.csdn.net/neutro ... -
Spring 3整合Quartz 2实现定时任务二:动态添加任务
2014-08-26 09:47 789转:http://www.meiriyouke.net/?p ... -
Spring 3整合Quartz 2实现定时任务一:常规整合
2014-08-26 09:45 618转:http://www.meiriyouke.net/?p ... -
Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
2014-08-26 09:21 2196转http://my.oschina.net/u/1177 ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2014-08-18 16:45 344今天新建了一个基于jdk6的工程,在tomcat中部署之后, ...
相关推荐
itext7 html转换为pdf;iText7页码、页眉、页脚,itext 的复杂表格实现;完整springboot项目代码
常用报表操作,itext_make_pdf,itext_make_word,jexcel_make_excel,poi_make_excel,pdf,Word,excel
iText页码、页眉、页脚,itext 的复杂表格实现、保留表头、表尾、根据需求生成不同的iText表格
itext 生成pdf的中文帮助文档,具体有:图片、块(下划线/删除线、上标/下标)、短句、段落等。
主要介绍了itext生成PDF设置页眉页脚的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
搜索了好多篇例子,算是强拼硬凑成现在的样子,还算比较满意吧。 此包中包含可测试成功代码,关联模板、字体文件、jar等 希望能帮助到大家。 这篇文章的作者蛮厉害,有不少借鉴。 ...
itext2.17
iText 是一个开源的PDF文件操作类库,它可以动态生成PDF文档以及对PDF文件进行编辑更改,比如:从XML文件或数据库生成动态PDF文档、添加/更改书签、页码、添加数字签名、页面排版操作等等。功能非常强大。
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。... iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了
itext in action 的源代码,学习的好资源
通过itextpdf生成页眉页脚
iTextAsian_1.5.2iTextAsian_1.5.2iTextAsian_1.5.2
itextpdf 使用之 html 转 pdf 页眉页脚带图片,详见:https://blog.csdn.net/z1353095373/article/details/124762949
NULL 博文链接:https://housen1987.iteye.com/blog/1335036
iText核心包,iTextAsian_1.5.2支持中文jar包
在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText。通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表,这样就很好的解决了B/...
iText是一个JAVA中快速制作PDF文件的类库,如果你想用JAVA制作PDF文档,这个源码包可不要错过哟。
IText PDF开发工具说明文档,使用很方便。
itext2.06报表工具是基于Java开发PDF,Excel等开源包。
用java代码实现,将docx转换成pdf文件, (Convert files to PDF files)