- 浏览: 426984 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
iwwenbo:
别逗好不好
Popup.js 弹出窗口 -
bugnuke:
尼玛 跑不了。。。
Popup.js 弹出窗口 -
tangzhifei:
创建Subversion授权文件放哪目录下?前面我的都对了,到 ...
Trac系列(8):windows下Apache+SVN+Trac安装及配置(一) -
zoutuo1986:
正在安装,确实很慢,一定要选择网速快的时候安装,
eclipse 插件springide安装 -
johnsonyang:
this.jmsTemplate.send(
...
spring,weblogic配置jms
在B/S结构的项目中,经常需要将一些数据导出为PDF文档,项目中我们使用的就是iText包,该包可以从其官方网上下载: http://www.lowagie.com/iText/ 。
下面就来讲一下具体的使用方法。
1、首先我们建一个叫做DbgridColumn的Java类,用来表示标题信息,具体字段如图。
java 代码
- List columns = new ArrayList();
- DbgridColumn column = new DbgridColumn();
- column.setProperty = "DM";
- column.setCaption = "代码";
- column.setWidth = 35;
- columns.add(column);
- column.setProperty = "MC";
- column.setCaption = "名称";
- column.setWidth = 175;
- columns.add(column);
2、我们需要构建演示数据,数据列表与Java构建函数。
java 代码
- Collection collection = new ArrayList();
- Map map = new HashMap();
- map.put("DM",new String("01");
- map.put("MC",new String("设置成功");
- collection.add(map);
- map.put("DM",new String("02");
- map.put("MC",new String("中继命令没有返回");
- collection.add(map);
- map.put("DM",new String("03");
- map.put("MC",new String("设置内容非法");
- collection.add(map);
- map.put("DM",new String("04");
- map.put("MC",new String("密码权限不足");
- collection.add(map);
- map.put("DM",new String("05");
- map.put("MC",new String("无此数据项");
- collection.add(map);
- map.put("DM",new String("06");
- map.put("MC",new String("命令时间失效");
- collection.add(map);
- map.put("DM",new String("07");
- map.put("MC",new String("目标地址不存在");
- collection.add(map);
- map.put("DM",new String("08");
- map.put("MC",new String("发送失败");
- collection.add(map);
- map.put("DM",new String("09");
- map.put("MC",new String("短消息帧太长");
- collection.add(map);
3、将上面格式的数据转换为iText的PdfPTable格式。
java 代码
- public class PdfReport extends ReportModal
- {
- public PdfReport(OutputStream out,DbgridModal modal)
- {
- this.out = out;
- this.modal = modal;
- }
- public PdfReport()
- { }
- public void out()
- {
- Document document = new Document();
- try
- {
- public class PdfReport extends ReportModal
- {
- public PdfReport(OutputStream out,DbgridModal modal)
- {
- this.out = out;
- this.modal = modal;
- }
- public PdfReport()
- {
- }
- /* 输出 */
- public void out()
- {
- Document document = new Document();
- try
- {
- PdfWriter.getInstance(document, out);
- document.open();
- document.add(DbgridToPdfTable(modal.columns,modal.collection));
- }
- catch (DocumentException e)
- {
- throw new Error(e.getMessage(), e);
- }
- catch (IOException e)
- {
- throw new Error(e.getMessage(), e);
- }
- if(document.isOpen())
- {
- document.close();
- }
- public PdfPTable DbgridToPdfTable(List columns,Collection collection)
- throws BadElementException,DocumentException,IOException
- {
- int columnsCount = columns.size();
- int rowsCount = collection.size();
- //创建Pdf Table
- PdfPTable table = new PdfPTable(columnsCount);
- //table总宽度
- table.setTotalWidth((float)getTotalWidth(columns));
- table.setWidths(getWidths(columns));
- //每列之间的间隔
- table.setSpacingBefore(Float.parseFloat("1.0"));
- //使用中文字符,要支持中文字符,还需要在其官方网站下载iTextAsian.jar和iTextAsianCmaps.jar 两个包
- BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
- com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 9, com.lowagie.text.Font.NORMAL);
- //开始写标题
- for (int i=0;i
- {
- DbgridColumn dbgridColumn = (DbgridColumn)columns.get(i);
- //创建单元格
- PdfPCell cell = new PdfPCell(new Phrase(dbgridColumn.getCaption(), FontChinese ));
- //标题的背景颜色
- cell.setBackgroundColor(new Color(212,208,200));
- //左右对齐方式
- cell.setHorizontalAlignment(getCellAlign(dbgridColumn.getAlign()));
- //垂直对齐方式默认为中间对齐
- cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
- table.addCell(cell);
- }
- //写表格数据
- Object[] objects = (Object[])collection.toArray();
- for (int j=0;j,@gdE} {
- Map map = (Map)objects[j];
- for (int i=0;i&Uo(} {
- String value = "";
- DbgridColumn dbgridColumn = (DbgridColumn)columns.get(i);
- //根据字段名取数据
- Object bean = map.get(dbgridColumn.getProperty());
- //getRealValue函数是对具体的一些数据类型(比如日期、double、integer等)进行格式化处理,如果为null,则返回空字符串
- value = getRealValue(bean,dbgridColumn);
- //创建单元格
- PdfPCell cell = new PdfPCell(new Phrase(value, FontChinese ));
- //对齐方式
- cell.setHorizontalAlignment(getCellAlign(dbgridColumn.getAlign()));
- cell.setVerticalAlignment(Element.ALIGN_TOP);
- table.addCell(cell);
- }
- }
- return table;
- }
- /* 把字符串型对齐方式 left,right,center 转化为pdf格式的对齐方式 */
- public int getCellAlign(String align)
- {
- if (align==null)
- {
- return Cell.ALIGN_LEFT;
- }
- if (align.toLowerCase().equals("left"))
- {
- return Cell.ALIGN_LEFT;
- }
- if (align.toLowerCase().equals("right"))
- {
- return Cell.ALIGN_RIGHT;
- }
- if (align.toLowerCase().equals("center"))
- {
- return Cell.ALIGN_CENTER;
- }
- return Cell.ALIGN_LEFT;
- /* 返回一个int型的数组,存放每列的宽度 */
- public int[] getWidths(java.util.List cols)
- {
- int widths[]=new int[cols.size()];
- for (int i=0;i
- {
- DbgridColumn dbgridColumn = (DbgridColumn)cols.get(i);
- widths[i] = dbgridColumn.getWidth();
- }
- return widths;
- }
- /* 返回表格的总宽度 */
- public int getTotalWidth(java.util.List cols)
- {
- int totalwidth = 0;
- for (int i=0;i2N {
- DbgridColumn dbgridColumn = (DbgridColumn)cols.get(i);
- totalwidth = totalwidth + dbgridColumn.getWidth();
- }
- return totalwidth;
- }
- PdfWriter.getInstance(document, out);
- document.open();
- document.add(DbgridToPdfTable(modal.columns,modal.collection));
- }
- catch (DocumentException e)
- {
- throw new Error(e.getMessage(), e);
- }
- catch (IOException e)
- {
- throw new Error(e.getMessage(), e);
- }
- if(document.isOpen())
- {
- document.close();
- }
- public PdfPTable DbgridToPdfTable(List columns,Collection collection)
- throws BadElementException,DocumentException,IOException
- {
- int columnsCount = columns.size();
- int rowsCount = collection.size();
- //创建Pdf Table
- PdfPTable table = new PdfPTable(columnsCount);
- //table总宽度
- table.setTotalWidth((float)getTotalWidth(columns));
- //每列的宽度
- table.setWidths(getWidths(columns));
- //每列之间的间隔
- table.setSpacingBefore(Float.parseFloat("1.0"));
- //使用中文字符,要支持中文字符,还需要在其官方网站下载iTextAsian.jar和iTextAsianCmaps.jar 两个包
- BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
- com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 9, com.lowagie.text.Font.NORMAL);
- //开始写标题
- for (int i=0;i
- {
- DbgridColumn dbgridColumn = (DbgridColumn)columns.get(i);
- //创建单元格
- PdfPCell cell = new PdfPCell(new Phrase(dbgridColumn.getCaption(), FontChinese ));
- //标题的背景颜色
- cell.setBackgroundColor(new Color(212,208,200));
- //左右对齐方式
- cell.setHorizontalAlignment(getCellAlign(dbgridColumn.getAlign()));
- //垂直对齐方式默认为中间对齐
- cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
- table.addCell(cell);
- }
- //写表格数据
- Object[] objects = (Object[])collection.toArray();
- for (int j=0;j,@gdE}Guest {
- Map map = (Map)objects[j]; for (int i=0; {
- String value = "";
- DbgridColumn dbgridColumn = (DbgridColumn)columns.get(i);
- //根据字段名取数据
- Object bean = map.get(dbgridColumn.getProperty());
- //getRealValue函数是对具体的一些数据类型(比如日期、double、integer等)进行格式化处理,如果为null,则返回空字符串
- value = getRealValue(bean,dbgridColumn);
- //创建单元格
- PdfPCell cell = new PdfPCell(new Phrase(value, FontChinese ));
- //对齐方式
- cell.setVerticalAlignment(Element.ALIGN_TOP);
- table.addCell(cell);
- return table;
- }
- /* 把字符串型对齐方式 left,right,center 转化为pdf格式的对齐方式 */
- public int getCellAlign(String align)
- {
- if (align==null)
- {
- return Cell.ALIGN_LEFT;
- }
- if (align.toLowerCase().equals("left"))
- {
- return Cell.ALIGN_LEFT;
- }
- if (align.toLowerCase().equals("right"))
- {
- return Cell.ALIGN_RIGHT;
- }
- if (align.toLowerCase().equals("center"))
- {
- return Cell.ALIGN_CENTER;
- }
- return Cell.ALIGN_LEFT;
- }
- /* 返回一个int型的数组,存放每列的宽度 */
发表评论
-
Java SE 6 新特性: Java DB 和 JDBC 4.0
2009-10-11 16:29 11862006 年底,Sun 公司发布了 Java Stan ... -
Java SE 6 Web Service 之旅
2009-10-11 16:17 1851在过去的几个月里,Sun ... -
用Java动态代理实现AOP
2009-10-10 13:38 1003目前整个开发社区对AOP(Aspect Oriented Pr ... -
泛型DAO类设计模式
2009-10-10 11:56 970Generic Data Access Objects ... -
理解ThreadLocal
2009-07-27 22:29 869ThreadLocal是什么 早在JDK ... -
JSON taglib学习笔记
2008-11-04 10:11 1372JSON-taglib 是 JSP 2.0 标签库,用于 ... -
页面生成打开excel(运用poi)
2008-10-29 09:45 1203把excel作为流在页面输出 publ ... -
java操作Excel(Jakarta_POI)
2008-09-09 17:22 4023微软在桌面系统上的成 ... -
优化Java中的正则表达式
2008-09-09 14:14 1796如果你花费了数小时和正则表达式做斗争,只是为了让它完成它几秒内 ... -
Java对象池技术的原理及其实现
2008-09-09 09:24 1135Java对象的生命周期分析 Java对象的生命周期大致包括 ... -
jakarta commons logging 的使用方法(续一)
2008-09-08 11:36 862常用log4j配置,一般可以采用两种方式,.propertie ... -
jakarta commons logging 的使用方法(续)
2008-09-08 11:28 1923JCL(Jakarta Commons Logging)和lo ... -
在 Web 应用中增加用户跟踪功能
2008-09-08 11:02 1251随着 Web 应用的复杂化 ... -
在Java应用程序中访问USB设备
2008-09-08 10:48 1194Java 平台一直都以其平台无关性自豪。虽然这种无关性 ... -
正则表达式
2008-09-05 17:29 1200Java代码 检测时间 ([0-1]?[0-9]|2[ ... -
汉字验证码
2008-09-05 09:38 1535Java代码 package com.toy; ... -
java数字签名
2008-09-05 09:30 2148... -
jakarta commons logging 的使用方法
2008-09-05 09:30 1617日志(Logging)使得我们能够调试和跟踪应用程序任意时刻的 ...
相关推荐
itext是一个开放源代码的免费PDF库,使用它可以很轻松地创建pdf文档.它可以应用在j2se中,也可用在j2ee中.然而,关于这itext方面的资料实在是太少了,这本电子书是我花了很长时间从网上找来的,在此与大家分享一下. ...
4. **报表编译与执行**:在J2EE应用中,你需要将jrxml文件编译为.jasper二进制文件,然后通过Java代码调用JasperFillManager填充数据并使用JasperExportManager导出报表。编译过程通常使用JasperCompileManager,而...
iText则是一个用于处理PDF文档的Java库,它允许开发者创建、修改和读取PDF文件。iText的jar包包括`itextpdf`、`itext-xmlworker`等,这些库提供了丰富的API,可用于生成复杂的报表、电子发票或者任何形式的PDF文档。...
这可能涵盖了编程语言如Java、Python或JavaScript,以及可能用到的库,如iText、PDFBox或Apache FOP,这些工具可以帮助开发者生成和操作PDF文件。 “工具”标签则可能指的是使用特定的软件或应用程序,比如Adobe ...
在J2EE(Java 2 Platform, Enterprise Edition)环境中,PDF阅读软件可以作为Web应用程序的一部分,为用户提供在线浏览PDF文档的功能。J2EE是一个多层的、企业级的开发平台,主要用于构建分布式、基于组件的Web应用...
itext是一个开放源代码的免费PDF库,使用它可以很轻松地创建pdf文档.它可以应用在j2se中,也可用在j2ee中.然而,关于这itext方面的资料实在是太少了,这本电子书是我花了很长时间从网上找来的,在此与大家分享一下.由于...
- iText Java库的使用:iText是一个用于创建和操作PDF文件的开源Java库。可以用来生成PDF文件、添加文本和图像、创建表格等。在WEB报表设计中,iText用于生成PDF格式的报表,如通过创建Document对象、实例化...
生成PDF文件通常需要使用专门的库,如iText或Apache PDFBox。这些库允许开发者将HTML、文本或图像转换为PDF格式,确保用户可以离线查看内容。 CSV(Comma Separated Values)文件是一种常见的数据交换格式,常用于...
5. `iText-2.1.5.jar`:iText是一个用于生成PDF文档的库,可用于生成和导出报表。 6. `xerces-2.6.2.jar`:Xerces是Apache的XML解析器,用于处理XML文档。 7. `poi-2.5.1.jar`:Apache POI是用于读写Microsoft ...
- `itext-1.3.jar`:用于生成PDF文档,可能用于导出报表或合同。 - `freemarker.jar`:FreeMarker模板引擎,用于生成动态HTML页面。 - `c3p0-*.jar`:连接池库,提高数据库连接的复用和管理。 - `antlr-*.jar`:...
10. **J2EE反模式**:在J2EE应用开发中,过度使用EJB、Session Beans等技术可能导致性能下降,复杂度增加。理解微服务、轻量级框架(如Spring Boot)的优势,并根据项目需求选择合适的技术栈。 阅读《Java 反模式 ...
在实际应用中,JFreeReport还可以与其他组件结合增强功能,例如使用JFreeChart生成报表中的图表,或者使用iText库导出PDF。此外,为了提高用户体验,可以考虑使用Ajax技术实现报表的动态加载和刷新,或者利用...
如果需要在PDF文件中显示中文等亚洲字符,则还需要下载itext的亚洲字符包`iTextAsian.jar`。 - **jfreechart-1.0.0-rc1.jar**:这是一个强大的统计图表生成工具,支持生成PNG、JPG等多种格式的图表。JFreeChart可以...
JasperReport是一个强大的开源报表生成工具,它采用Java编写,适用于各种Java应用程序,包括J2EE和Web应用,可以生成包含丰富页面内容的报表,并将其导出为PDF、HTML或XML格式。而iReport是与JasperReport配套的开源...
通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试...
通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,当你运行Hibernate自带的测试代码的...
虽然POI最初并未涵盖处理Word文档的功能,但随着时间的发展,其他项目如iText也致力于提供这样的解决方案。此外,Apache POI的部分代码来源于OpenOffice项目,后者是一个开源的办公套件,包含C++实现的Word和Excel...
5. **iText-1.3.jar**(1.09M)和 **iTextAsian.jar**(0.33M):这两个文件分别用于支持 PDF 输出和亚洲字体的支持。安装过程中需要将它们添加到指定目录。 #### 四、安装步骤 ##### 1. 安装 RCP Designer 2.1.2 ...
4. **数据库数据导入导出基础类库**:如处理Dbf、Excel和PDF文件的库,例如Apache POI和iText,方便数据的导入导出。 5. **Java设计模式**:包括单例、工厂、观察者、装饰者、适配器等基本设计模式,以及在J2EE环境...