- 浏览: 74339 次
- 性别:
- 来自: 惠州
文章分类
最新评论
-
woyaonuli:
各位大侠,请教下,怎么让生成的pdf每页都有背景图片, ...
iText 跨行and背景图片 -
lixia0417:
恩,LZ,谢谢了,那我还是练习把SSh的例子改成S2sh的吧, ...
struts2+hibernate3+spring2读书笔记4(数据校验器) -
hhr_michael:
哥们,你好,这本书着重s2sh的各个部分开发,而整合的例子不是 ...
struts2+hibernate3+spring2读书笔记4(数据校验器) -
lixia0417:
对,哥们,问一下,这本书中关于S2SH整合开发的例子多吗,就是 ...
struts2+hibernate3+spring2读书笔记4(数据校验器) -
hhr_michael:
谢谢提醒,由于只是着重校验的过程,所以这代码没有在struts ...
struts2+hibernate3+spring2读书笔记4(数据校验器)
最近由于项目需要,开始使用iText写PDF文件,从网上搜索到一些信息,但都是零碎的一些,现在稍微整理一下,仅限于写pdf文件部分。
首先创建一个pdfWriter的模板
1. /*
2. * Created on 2005-7-1
3. *
4. * TODO To change the template for this generated file go to
5. * Window - Preferences - Java - Code Style - Code Templates
6. */
7. package javax.print.PDF;
8.
9. import java.io.FileNotFoundException;
10. import java.io.FileOutputStream;
11. import java.io.IOException;
12.
13. import com.lowagie.text.Cell;
14. import com.lowagie.text.Document;
15. import com.lowagie.text.DocumentException;
16. import com.lowagie.text.Paragraph;
17. import com.lowagie.text.Rectangle;
18. import com.lowagie.text.Table;
19. import com.lowagie.text.pdf.PdfWriter;
20.
21. /**
22. * @author jcoder
23. *
24. * TODO To change the template for this generated type comment go to Window -
25. * Preferences - Java - Code Style - Code Templates
26. */
27. abstract public class PDFWriter {
28. protected Document document = null;
29. protected FileOutputStream out = null;
30. protected Rectangle pageSize = null;
31. protected String filePath = null;
32. protected Cell cell = null;
33. protected Paragraph header = null;
34. protected Paragraph prg = null;
35. protected Table table = null;
36.
37. public PDFWriter(String filePath) {
38. try {
39. this.filePath = filePath;
40. document = new Document();
41. out = new FileOutputStream(filePath);
42. PdfWriter.getInstance(document, out);
43. document.open();
44. } catch (FileNotFoundException e) {
45. // TODO Auto-generated catch block
46. e.printStackTrace();
47. } catch (DocumentException e) {
48. // TODO Auto-generated catch block
49. e.printStackTrace();
50. }
51.
52. }
53.
54. public void close() {
55. try {
56. document.close();
57. out.close();
58. } catch (IOException e) {
59. // TODO Auto-generated catch block
60. e.printStackTrace();
61. }
62. }
63.
64. }
由于我需要在pdf中创建表格,要使用到com.lowagie.text.Cell,com.lowagie.text.Paragraph, com.lowagie.text.Table,com.lowagie.text.Cell,
com.lowagie.text.Chunk,com.lowagie.text.Font等类,cell为表格中的每个单元格的内容,paragraph为段落内容,cell的构造函数有很多,这里不一一列举了,因为我要用到中文字符,所以特别使用了cell(Element e)这个构造函数,Element为一个接口,实现此接口的类有很多,包含chunk,meta等,表明cell里可以添加很多不同的内容,可以实现自己的定制,chunk的构造函数为Chunk(String content,Font f),在这里我定制了自己的cell,代码如下:
1. /*
2. * Created on 2005-7-1
3. *
4. * TODO To change the template for this generated file go to
5. * Window - Preferences - Java - Code Style - Code Templates
6. */
7. package javax.print.PDF;
8.
9. import com.lowagie.text.BadElementException;
10. import com.lowagie.text.Cell;
11. import com.lowagie.text.Chunk;
12. import com.lowagie.text.Font;
13.
14. /**
15. * @author jcoder
16. *
17. * TODO To change the template for this generated type comment go to Window -
18. * Preferences - Java - Code Style - Code Templates
19. */
20. public class PDFCell extends Cell {
21.
22. public PDFCell(String content, int rowspan, int colspan)
23. throws BadElementException {
24. super(new Chunk(content, PDFChineseFont
25. .createChineseFont(10, Font.NORMAL)));
26. setRowspan(rowspan);
27. setColspan(colspan);
28. setHeader(false);
29. }
30. }
稍许解释一下,rowspan和colspan为Cell的两个属性,写过网页的朋友都知道,表格中的行和列有的时候有必要进行合并,这里就实现了这个功能。
Paragraph类我也进行了封装:
1. /*
2. * Created on 2005-7-5
3. *
4. * TODO To change the template for this generated file go to
5. * Window - Preferences - Java - Code Style - Code Templates
6. */
7. package javax.print.PDF;
8.
9. import com.lowagie.text.Element;
10. import com.lowagie.text.Font;
11. import com.lowagie.text.Paragraph;
12.
13. /**
14. * @author Administrator
15. *
16. * TODO To change the template for this generated type comment go to Window -
17. * Preferences - Java - Code Style - Code Templates
18. */
19. public class PDFParagragh extends Paragraph {
20.
21. public PDFParagragh(String content, int alignment, int fontSize) {
22. super(content, PDFChineseFont.createChineseFont(fontSize, Font.NORMAL));
23. setAlignment(alignment);
24. }
25.
26. public static final int CENTER = Element.ALIGN_CENTER;
27. public static final int LEFT = Element.ALIGN_LEFT;
28. public static final int RIGHT = Element.ALIGN_RIGHT;
29. public static final int TOP = Element.ALIGN_TOP;
30. public static final int MIDDLE = Element.ALIGN_MIDDLE;
31. public static final int BOTTOM = Element.ALIGN_BOTTOM;
32.
33. }
从以上两个代码段中可以看到PDFChineseFont.createChineseFont(int fontSize,int fontStyle)函数 这个也进行了封装,为自定义函数:
1. /*
2. * Created on 2005-7-1
3. *
4. * TODO To change the template for this generated file go to
5. * Window - Preferences - Java - Code Style - Code Templates
6. */
7. package javax.print.PDF;
8.
9. import java.io.IOException;
10.
11. import com.lowagie.text.DocumentException;
12. import com.lowagie.text.Font;
13. import com.lowagie.text.pdf.BaseFont;
14.
15. /**
16. * @author jcoder
17. *
18. * TODO To change the template for this generated type comment go to Window -
19. * Preferences - Java - Code Style - Code Templates
20. */
21. public class PDFChineseFont {
22. private static Font chineseFont;
23.
24. public final static Font createChineseFont(int size, int style) {
25. try {
26. chineseFont = new Font(BaseFont.createFont("STSong-Light",
27. "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), size, style);
28. } catch (DocumentException e) {
29. // TODO Auto-generated catch block
30. e.printStackTrace();
31. } catch (IOException e) {
32. // TODO Auto-generated catch block
33. e.printStackTrace();
34. }
35. return chineseFont;
36. }
37. }
如果无此函数定义,生成的pdf文件中的中文字符将不显示。
最后实现自己定制好的pdf文档格式
1. /*
2. * Created on 2005-7-1
3. *
4. * TODO To change the template for this generated file go to
5. * Window - Preferences - Java - Code Style - Code Templates
6. */
7. package javax.print.PDF;
8.
9. import com.lowagie.text.BadElementException;
10. import com.lowagie.text.DocumentException;
11. import com.lowagie.text.Table;
12.
13. /**
14. * @author jcoder
15. *
16. * TODO To change the template for this generated type comment go to Window -
17. * Preferences - Java - Code Style - Code Templates
18. */
19. public class MyWriter extends PDFWriter {
20. public MyWriter(String path) {
21. super(path);
22. try {
23. header = new PDFParagraph("仪器设备调拨单");
24. document.add(header);
25. table = new Table(14);
26. table.setBorderWidth(0);
27. table.addCell(new PDFCell("(单价:500元以上含500元)", 1, 5));
28. table.addCell(new PDFCell("2005年7月1号", 1, 9));
29. document.add(table);
30. table = new Table(14);
31. table.setBorderWidth(1);
32. table.addCell(new PDFCell("设备编号", 1, 2));
33. table.addCell(new PDFCell("设备名称", 1, 3));
34. table.addCell(new PDFCell("型号规格", 1, 2));
35. table.addCell(new PDFCell("数量", 1, 1));
36. table.addCell(new PDFCell("单价", 1, 1));
37. table.addCell(new PDFCell("总价", 1, 1));
38. table.addCell(new PDFCell("附件", 1, 2));
39. table.addCell(new PDFCell("备注", 1, 2));
40. table.endHeaders();//换行
41. table.addCell(new PDFCell("0126242245", 1, 2));
42. table.addCell(new PDFCell("IBM大型机", 1, 3));
43. table.addCell(new PDFCell("5465-445GH", 1, 2));
44. table.addCell(new PDFCell("3", 1, 1));
45. table.addCell(new PDFCell("299,000", 1, 1));
46. table.addCell(new PDFCell("2,230,200", 1, 1));
47. table.addCell(new PDFCell("无", 1, 2));
48. table.addCell(new PDFCell("软件学院买入", 1, 2));
49. table.endHeaders();
50. table.addCell(new PDFCell("调出单位意见:", 1, 11));
51. table.addCell(new PDFCell("院(系)签章", 1, 3));
52. table.endHeaders();
53. table.addCell(new PDFCell("申请调入单位意见:", 1, 11));
54. table.addCell(new PDFCell("院(系)签章", 1, 3));
55. table.endHeaders();
56. table.addCell(new PDFCell("设备管理科审批:", 1, 5));
57. table.addCell(new PDFCell("实验室与设备管理处审批", 1, 4));
58. table.addCell(new PDFCell("校部审批:", 1, 5));
59. table.endHeaders();
60. document.add(table);
61. close();//别忘记关闭
62. } catch (BadElementException e) {
63. // TODO Auto-generated catch block
64. e.printStackTrace();
65. } catch (DocumentException e) {
66. // TODO Auto-generated catch block
67. e.printStackTrace();
68. }
69. }
70. }
测试类:
1. /*
2. * Created on 2005-7-1
3. *
4. * TODO To change the template for this generated file go to
5. * Window - Preferences - Java - Code Style - Code Templates
6. */
7. package javax.print.PDF;
8.
9. /**
10. * @author jcoder
11. *
12. * TODO To change the template for this generated type comment go to Window -
13. * Preferences - Java - Code Style - Code Templates
14. */
15. public class Test {
16.
17. public static void main(String[] args) {
18. PDFWriter pdf = new MyWriter("mine.pdf");
19. }
20. }
写iText需要iText包 下载地址为http://prdownloads.sourceforge.net/itext/itext-1.3.jar
如果要加入中文,请再下载一个包,地址为:http://itext.sourceforge.net/downloads/iTextAsian.jar
写的比较浅,希望对大家会有帮助
http://www.javaresearch.org/article/31218.htm
发表评论
-
itext 带表头
2010-08-12 16:19 1503itext 带表头有两种方法以: 第一种是Table的,第二 ... -
extremeTable 介绍
2010-08-10 16:12 1121何为 extremeTable,又一个开源taglib ext ... -
Java线程:创建与启动 (转)
2010-07-21 08:54 1942版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 ... -
用Java简单的读取pdf文件中的数据(转)
2010-05-20 09:44 1293用Java简单的读取pdf文件中的数据: 第一步:下载PDFB ... -
非java.util.zip,使用ant.jar制作zip压缩文件,以及相关中文解决方法(轉)
2010-02-10 10:52 916用java.util.zip制作zip压缩文件时,如果制作的压 ... -
JSP环境配置使用fckeditor
2010-02-09 09:45 866JSP环境配置使用fckeditor 关键字: jsp环境配置 ... -
jsp分页
2010-02-09 09:32 942jsp分页 (轉) 关键字: jsp分页 public cl ... -
java 生成excel
2010-02-09 09:18 979java 生成excel (轉) 关键字: java 生成 ... -
iText 跨行and背景图片
2010-02-09 09:11 2444iText 跨行and背景图片(轉) 最近用iText生成p ... -
input只能输入数字
2010-01-07 15:35 1549input只能输入数字 方法一: <input t ... -
关于DIV被SELECT遮挡问题
2009-12-14 09:00 1049<html> <head> ... -
iText加入页码
2009-11-30 09:18 2894在網上找了點資料,如果單單實現頁碼的顯示,隻需在Documen ... -
struts标签使用举例--logic篇
2009-11-09 15:59 628来源:http://hi.baidu.com/lissnet/ ... -
Eclipse快捷键大全
2009-11-09 12:20 725Ctrl+1 快速修复(最经典 ... -
class.forName().newInstance()的作用
2009-11-02 09:49 1977在Java开发特别是数据库开发中,经常会用到Class.for ... -
[SQLServer]传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确2008-05-28 17:57关键字: sqlserver 2000 d
2009-10-27 15:49 1210[SQLServer]传入的表格格式数据流(TDS)远程过程调 ... -
itext實現水印功能
2009-09-07 12:04 2617近日要用itext來做水印功能,在網上找了好多資料,但都是把原 ...
相关推荐
本篇PDF文档为“希望杯五年级精品课学生书”,主要围绕五年级学生的数学学习需求,以希望杯数学竞赛为背景,涵盖了计算专题、应用题专题、几何专题、方法和原理专题、综合专题等多个领域的内容,旨在帮助学生提高...
在研究生精品课程建设中,"现代CAD技术"课程的改革是一项重要的实践探索。CAD技术,即计算机辅助设计(computer-aided design),是利用计算机系统辅助工程师和设计师进行产品设计和绘图的高效技术手段,广泛应用于...
全套精品PDF讲稿提供了深入浅出的讲解,有助于学习者系统地掌握这一领域的核心知识。 1. **经典控制理论**:这部分内容主要包括根轨迹法、频率响应法和状态空间法。根轨迹法通过分析系统的开环极点和零点分布,研究...
《PLC基础与应用》课程自2005年开设以来,通过院级精品课程立项和结题验收,不断更新教学内容和方法,以满足自动化生产制造业对人才的需求。 2. 实践教学条件的建设与使用:实践是学习PLC不可或缺的部分。PLC实训室...
【标题】: "2021精品苏教版八年级物理下册全册课件.pdf" 这本2021年的精品苏教版八年级物理下册全册课件是针对初中二年级学生设计的教学资源,旨在深入浅出地讲解物理学的基本概念和原理。苏教版教材以其严谨性和...
"最新人教版四年级语文下册《快乐读书吧》精品教案-.pdf" 本资源是一个四年级语文下册的精品教案,主要目标是鼓励学生阅读《十万个为什么》,在交流阅读感受的过程中体会阅读的乐趣,引导学生体会《十万个为什么》...
【新Scratch教案精品收集.pdf】是一份针对初学者的Scratch编程教程,旨在通过趣味性的教学活动激发学生对编程的兴趣。课程分为多个环节,逐步引导学生掌握Scratch编程的基本步骤和方法。 教学目标: 1. 通过在...
- 教学手段与方法:阐述课程采用的教学方法和技术手段。 - 教学条件:说明开展课程所需的学习资源和设施条件。 - 教学效果:评估课程的实际教学效果,提供学生评价反馈。 - 特色与政策支持:介绍课程特色以及...
综上所述,工业机器人应用技术精品课程的建设是一项系统工程,需要在课程内容、教学方法、校企合作、评价体系和教师发展等方面进行全面规划和实施。通过这样的精品课程,不仅可以提升学生的专业技能,还能培养他们的...
不过,我可以根据标题“2020大学毕业生租住蓝皮书-人民网-***精品报告.pdf”和描述中的“行业咨询”标签,推断出这份报告可能涉及到的知识点,并基于此构建一个符合要求的详细分析。 ### 2020大学毕业生租住蓝皮书...
在本文中,作者探讨了如何利用Oracle ADF来设计和实现一个基于数字测图原理与方法的精品课程网站。 首先,精品课程网站是教育信息化的重要组成部分,它能够将优质的教学资源通过网络共享,扩大课程的受众范围,提高...
很抱歉,根据您提供的信息,"加减混合精品公开课共6页.pdf.zip"这个文件标题和描述似乎与IT行业专业知识不直接相关。它们更倾向于教育或数学领域,特别是关于加减法的教学材料。标签和压缩包内的文件名称"赚钱项目...
"2021精品最新湘教版三年级英语下册(湘鲁版)电子课本课件.pdf" 基于给定的文件信息,我们可以生成以下相关知识点: 知识点1:英语教学资源 湘教版三年级英语下册电子课本课件.pdf是一个英语教学资源,旨在帮助三...
《2018年大学生心理健康教育全套精品教案》是一份针对大学生心理健康教育的重要参考资料,旨在帮助大学生理解心理健康的重要性,掌握心理健康的理论知识,并识别和处理常见的心理问题。本教案主要包含三个部分:心理...
本篇文档以广东省精品资源共享课程《数据结构》为例,介绍了构建基于神经网络的学习评价系统的方法,并通过实验验证了其有效性。 在教育教学论坛文章中,作者提到网络学习评价是一个需要解决的重要问题。网络学习...
4. 调试与测试:包括调试方法、测试结果分析与讨论、测试过程中遇到的主要问题及采取的解决措施 5. 源程序清单和执行结果:清单中应有足够的注释 系统的主要功能包括: 1. 学生基本信息及成绩录入 2. 基本信息的...
根据提供的文件信息,我们可以提炼出以下几个关于高职高专精品课程建设的核心知识点: 1. 高职高专精品课程建设的...通过上述方法和理论的运用,高职高专院校能够更有效地开发出符合市场需求和学生发展的精品课程。
建筑CAD精品课程建设的要点涉及了教育技术、教学方法和课程内容的创新等多个方面。以下是建筑CAD精品课程建设需要重点掌握的知识点: 1. 精品课程建设总体思想与目标:精品课程的建设需要紧随教育改革的步伐,体现...
以上知识点详细说明了《机械CAD/CAM》精品课程的建设过程,从教材编制到教学方法的创新,再到考核方式的改革以及实践教学体系的完善,最终到教学制度的建设和行业合作,形成了一套全面、系统的课程建设方案,旨在...
本次调查报告的主题是针对大学生追星现象进行的深入分析与研究。追星文化作为一种青年文化现象,已经成为了当今社会的一种普遍现象,尤其在大学校园中,追星行为更为明显。本次调查旨在了解当前大学生的追星状况,...