- 浏览: 900608 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 722转http://blog.csdn.net/zhengqiq ... -
ava操作word宏
2015-04-29 10:44 524转:http://aa8945163.iteye.com/b ... -
System.load 和 System.loadLibrary详解
2015-04-09 10:50 646转:http://www.cnblogs.com/h ... -
(转)谈谈对Java中Unicode、编码的理解
2015-03-03 11:07 415转:http://www.cnblogs.com/newst ... -
HTTP status code 说明
2015-01-15 16:15 474200 – 服务器成功返回 ... -
JAVA邮件发送
2015-01-13 16:56 620转:http://www.cnblogs.com/codep ... -
Java排序算法 记录
2015-01-13 10:24 415转:http://www.cnblogs.com/dians ... -
java中volatile关键字
2015-01-05 14:30 485转:http://www.cnblogs.com/aigon ... -
4.1 Servlet简介
2014-12-22 16:34 412转:http://www.blogjava.net/ ... -
在 Windows 中实现 Java 本地方法
2014-12-21 15:18 458转:http://www.ibm.com/devel ... -
严重: Error listenerStart
2014-11-18 17:14 4142007-5-31 14:27:13 org.apache. ... -
java.security.AccessControlException: access denied 的解决方法
2014-11-07 22:07 3329转:http://blog.csdn.net/maomao ... -
Linux下反斜杠号"\"
2014-10-27 13:36 2488转:http://www.cnblogs.com/Muyou ... -
@override在JDK1.5和JDK1.6中用法区别
2014-10-14 22:54 397转:http://gaowenming.iteye.com/ ... -
ClientAbortException:java.io.IOException解决方案
2014-09-09 10:13 12550转:http://blog.sina.com.cn/s/bl ... -
SchedulerFactoryBean 注入
2014-08-26 10:19 812转:http://blog.csdn.net/neutro ... -
Spring 3整合Quartz 2实现定时任务二:动态添加任务
2014-08-26 09:47 816转:http://www.meiriyouke.net/?p ... -
Spring 3整合Quartz 2实现定时任务一:常规整合
2014-08-26 09:45 655转:http://www.meiriyouke.net/?p ... -
Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
2014-08-26 09:21 2238转http://my.oschina.net/u/1177 ... -
java.lang.UnsupportedClassVersionError: Bad version number in .class file
2014-08-18 16:45 373今天新建了一个基于jdk6的工程,在tomcat中部署之后, ...
相关推荐
本教程将深入讲解如何使用iTextPDF库将HTML内容转化为PDF,并在生成的PDF文档中添加页眉和页脚,同时包含图片。 首先,我们需要了解iTextPDF的基本概念。iTextPDF库提供了一系列API,用于构建PDF文档。HTML转PDF的...
这些文件可能包含了如何使用Itext创建和定制报表的代码片段,包括设置页眉和页脚、添加图片(如`001.bmp`)以及处理复杂的数据结构。`AnotherPrint04016.java`和`AnotherPrint04016Service.java`可能涉及到服务层的...
2. **报表布局**:ITEXT支持复杂的页面布局,如页眉、页脚、多列布局、页码设置等。通过`HeaderFooter`类可以轻松定制这些元素,而`ColumnText`类则用于实现多列文本的自动分布。 3. **数据绑定**:在生成报表时,...
8. **事件处理**:开发者可以通过监听事件来控制PDF的生成过程,如页眉页脚的添加、页码的计算等,实现更精细的定制。 9. **PDF解析和解析器**:除了生成PDF,IText API还可以解析已存在的PDF文件,提取文本、图像...
6. **事件处理**:通过实现PdfWriter的事件接口,如PdfPageEventHelper,可以在PDF页面创建前后执行自定义逻辑,如添加页眉和页脚。 7. **PDF安全性**:Itextsharp也允许设置PDF文档的安全性,如限制打印、复制和...
在实际应用中,可能还需要处理更复杂的情况,如嵌套表格、图片、页眉页脚等,但基本流程与上述步骤相似,只是需要更精细地控制PDF元素的创建和填充。 总之,Itextsharp为.NET开发者提供了一种强大的工具来处理PDF...
5. **水印与页眉页脚**:通过`PdfStamper`类,可以在PDF上添加水印、页眉和页脚,增强文档的版权保护和视觉效果。 6. **PDF安全与加密**:可以对PDF进行加密,限制打印、复制、编辑等操作,保护文档内容的安全。 ...
通过API,你可以添加文本、图像、表格、超链接、页眉和页脚等元素。此外,5.5.4版本还支持对已有PDF文档进行编辑,如添加水印、删除页面、合并PDF等。 2. **字体支持** IText 支持多种字体,包括TrueType(TTF)和...
iava使用itext实现pdh的输出.doc”文档,虽然无法直接查看具体内容,但可以推测其可能包含了更多关于iText使用方法的实例和示例,包括如何处理表格的细节、样式设置、事件处理(如页眉页脚)以及如何与其他iText功能...
8. **事件处理**:通过PdfWriter的事件监听机制,可以在PDF生成过程中执行自定义操作,如页眉页脚的添加。 四、iText使用示例 在实际项目中,你可以通过以下步骤使用iText: 1. **初始化Document对象**:创建一个...
此外,还可以插入图片、创建复杂的表格、添加页眉页脚、设置页码、应用样式模板等。IText提供了API来实现这些功能,使得即使没有深入的Word编程经验,也能轻松创建高质量的文档。 在实际应用中,例如企业报表生成、...
此外,iText还支持事件处理,可以自定义页面事件,比如添加页眉、页脚,或者在每个页面上打印时间戳。通过实现`PdfWriter.PageEvent`接口,你可以定义自己的`onStartPage()`和`onEndPage()`方法。 总的来说,iText...
使用iText时,开发者需要理解PDF文档的结构,包括页眉、页脚、段落、字体、颜色等元素的设置。同时,iText提供了一套API,可以通过编程方式创建和操作PDF文档。例如,`ColumnText`类用于多列文本布局,`PdfWriter`...
7. **事件处理和自定义行为**:iText还支持回调机制,开发者可以通过实现特定接口在PDF生成过程中插入自定义逻辑,比如添加水印、页眉页脚等。 8. **性能优化**:对于大量HTML内容的转换,性能是一个重要的考虑因素...
7. **事件处理**:iText支持事件驱动模型,比如`PageEvent`可以用来在页面创建前后执行自定义操作,如添加页眉和页脚。 8. **版面设计**:通过`ColumnText`类,可以实现多列文本布局,适合创建复杂的报告或目录。 ...
4. **事件处理**:通过实现PdfWriter的监听器接口,可以在PDF生成过程中执行自定义操作,例如页码计数或页眉页脚的添加。 5. **数字签名**:iText 提供了添加数字签名的功能,增强了PDF的安全性。 6. **加密和权限...
4. **事件处理和自定义渲染**:iText允许注册事件监听器,以便在特定时刻执行自定义操作,如页面分割、页眉页脚的添加。此外,还可以实现自己的PdfWriter实例,控制PDF的渲染过程。 5. **数字签名和安全**:iText ...
4. **事件处理**:`iText`支持事件驱动的编程模型,通过监听器机制,可以在PDF生成过程中执行自定义操作,如页面创建、页眉页脚添加等。 5. **表单处理**:能够填充AcroForms或者创建交互式PDF表单,使得用户可以...
2. 在已有的PDF文档上添加水印、页眉页脚或注释。 3. 将HTML、XML转换为PDF,方便网页内容的离线阅读。 4. 处理PDF表单,填充数据、签名验证等。 5. 打包多个PDF文件为一个PDF,或者拆分大型PDF。 6. 对PDF进行加密...