- 浏览: 2871398 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
在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型的数组,存放每列的宽度 */
- 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;i2 {
- DbgridColumn dbgridColumn = (DbgridColumn)cols.get(i);
- totalwidth = totalwidth + dbgridColumn.getWidth();
- return totalwidth;
- }
4、通过Servlet生成pdf文档,并弹出下载对话框。
java 代码
- public class ReportServlet extends HttpServlet
- public ReportServlet()
- {
- }
- <
发表评论
-
ATOM编辑器快捷键大全
2021-02-28 10:03 416在Github上总结的ATOM 快捷键,用ATOM 编辑器的 ... -
使用Amazon的AWS来搭建属于自己的shadowsocks服务器
2015-04-08 22:22 16182相信有不少水友已经 ... -
开车技术
2014-10-16 12:24 542如何判断车距,这个太实用了 一、超车变道时如何判 ... -
Running Jar file in Windows
2014-04-30 10:11 799Easiest route is probably upgr ... -
Windows的命令行下设置网络代理
2014-03-31 09:42 3396在公司访问网络的时候,需要设置代理,设置浏览器的代理是相当的 ... -
超全面的收房小知识
2013-12-29 15:09 744验房:就是竭尽全力发现问题,进而在装修的时候着手解决这些问题 ... -
Kmplayer的各种功能设置
2013-11-17 17:59 2137Kmplayer的各种功能设置 ... -
9 Ways To Make Thunderbird Load Your Email Faster
2013-09-14 15:57 1240If you asked anyone for the fi ... -
Protobuf 的安装使用总结
2013-09-12 13:28 8515ProtoBuf的官方下载包并不包含jar文件,需要用户自己 ... -
Java应用程序的MODBUS通讯
2013-09-06 14:15 17822实验目的 JAVA应用程序通过MODBUS协议RTU模式读 ... -
在本地使用java收发/调试Modbus协议数据
2013-08-28 13:59 185681. 安装Modbus仿真工具Mo ... -
Modbus Error Code List
2013-08-27 16:53 1668HEX Error Code for Modbus Plus ... -
49 款人脸检测/识别的API、库和软件
2013-08-26 19:58 1817自从谷歌眼镜被推出以 ... -
sublime配置全攻略
2013-08-17 14:16 2213sublime本身功能有限,我们需要装上一些插件使其变得 ... -
程序员提高效率工具
2013-08-12 11:14 1405windows下的虚拟桌面管理工具 windows xp ... -
Go 编程语言的 12 条最佳实践
2013-08-09 17:53 1101最佳实践 维基百科的定义是: “最佳实践是一种方法或技术 ... -
sublime 插件管理
2013-08-08 18:00 1240插件管理 1、安装Package Control 按C ... -
sublime2快捷键
2013-08-08 17:51 1129快捷键 Ctrl+L 选择整行(按住-继续选择下行) C ... -
sublime及相关资源
2013-08-08 17:10 914Sublime Text3 Buld 3038 中文优化注 ... -
为设计师准备的 15 个免费新鲜的字体
2013-08-04 17:45 1111Axe Handel Going Fast Ka ...
相关推荐
itext是一个开放源代码的免费PDF库,使用它可以很轻松地创建pdf文档.它可以应用在j2se中,也可用在j2ee中.然而,关于这itext方面的资料实在是太少了,这本电子书是我花了很长时间从网上找来的,在此与大家分享一下. ...
iText的jar包包括`itextpdf`、`itext-xmlworker`等,这些库提供了丰富的API,可用于生成复杂的报表、电子发票或者任何形式的PDF文档。通过iText,开发者可以方便地在Java应用中集成PDF生成和处理功能。 除了这三个...
这个文档可能提供了使用J2EE(Java Enterprise Edition)开发PDF套打功能的指南,涵盖了服务器端的PDF生成、模板设计、数据绑定和打印流程控制等关键点。 综上所述,这个主题覆盖了PDF模板设计、编程实现、J2EE应用...
在J2EE(Java 2 Platform, Enterprise Edition)环境中,PDF阅读软件可以作为Web应用程序的一部分,为用户提供在线浏览PDF文档的功能。J2EE是一个多层的、企业级的开发平台,主要用于构建分布式、基于组件的Web应用...
itext是一个开放源代码的免费PDF库,使用它可以很轻松地创建pdf文档.它可以应用在j2se中,也可用在j2ee中.然而,关于这itext方面的资料实在是太少了,这本电子书是我花了很长时间从网上找来的,在此与大家分享一下.由于...
- 文件输出流:在生成PDF和Excel文件时,需要通过文件输出流将数据写入文件系统。 - 字体处理:在生成PDF时,若报表中包含中文等非英文字符,需要正确处理字体,确保字符显示的正确性。 在技术实现上,WEB报表的...
这个实践项目展示了如何结合J2EE、PDF生成库、CSV处理库和Excel操作库,为用户提供便捷的数据导出和下载服务,这在许多企业应用中是非常常见的需求。掌握这些技能对于开发高效、健壮的业务系统至关重要。
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`:...
是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit...
是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iTextAsian.jar itext中关于亚洲编码的类库,在这里用于中文字体的输入。 junit.jar Junit包,...
### iReport使用教程详解 ...通过上述步骤,用户可以轻松地使用iReport设计复杂的报表模板,并将其输出为所需的格式。此外,还可以利用iReport提供的各种功能进行更高级的报表设计,如添加图表、自定义样式等。
虽然POI最初并未涵盖处理Word文档的功能,但随着时间的发展,其他项目如iText也致力于提供这样的解决方案。此外,Apache POI的部分代码来源于OpenOffice项目,后者是一个开源的办公套件,包含C++实现的Word和Excel...
- **iText**:是一个开源的Java库,能创建和修改PDF文档,也可将XML、HTML转换为PDF。 - **OpenOffice**:开源软件,可在Windows和Linux平台上运行,可将Word或Excel转换为PDF。 ### 2. JasperReport框架介绍 ...
4. **数据库数据导入导出基础类库**:如处理Dbf、Excel和PDF文件的库,例如Apache POI和iText,方便数据的导入导出。 5. **Java设计模式**:包括单例、工厂、观察者、装饰者、适配器等基本设计模式,以及在J2EE环境...
Spring 使用 iText 提供 web 层的 PDF 支持。只有你的 web 应用需要生成 PDF 输出时才需包含这个 JAR 文件。 j2eeactivation.jar, connector-api.jar, ejb.jar, jaxrpc.jar, jdbc2_0-stdext.jar, jms.jar, jstl.jar...
用iText类库制作PDF文档.rar 用JAVA做的聊天软件,有安装程序和源代码.rar 用java写的SFTP代码.rar 用Java加密类实现DES、RSA及SHA的加密算法.rar 用jdom解析xml.rar 电子书店管理系统.rar 编译原理--LR(1)分析表...
得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...
得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于...