Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3245219
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Java

2011-12-29 20:46:45

1.概述
       iText是着名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、 Html文件转化为PDF文件。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。
       下载地址: ,最新版本是:itext-5.1.3.zip。
        解压缩后,提取itextpdf-5.1.3.jar,itext-xtra-5.1.3.jar复制到项目的lib目录下

        从http://qingfengxia.iteye.com/blog/684288,下载《更改.rar》,里面存放iTextAsian.jar,复制到项目的lib目录下。注意,不能用其它地方的包,原因如下:
       TextAsian.jar只是包含了亚洲国家的文字信息。打开iTextAsian.jar发现它采用了与原来iText-2.1.3.jar一样的包名:com.lowagie.text.Font而现在的iText5.0包名已经改为了com.itextpdf.text.Font,显然我们更一下包名就可以解决问题。在winrar中把对应包名重命名加进来即可。我把改好的jar放在附件的更改.rar中。好了,那么现在使用iText.jar+更改.rar中的iTextAsian.jar测试就不会报错了。

2.创建一个简单的PDF文档
(1) 创建一个Document对象的实例:
       Document document = new Document();
(2) 为该Document创建一个Writer实例:
       PdfWriter.getInstance(document, new FileStream("Chap0101.pdf", FileMode.Create));
(3) 打开当前Document
       document.Open();
(4) 为当前Document添加内容
       document.Add(new Paragraph("Hello World"));
(5) 关闭Document
       document.Close();
完整的代码如下
  1. import java.io.FileNotFoundException;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4.   
  5. import com.itextpdf.text.Document;
  6. import com.itextpdf.text.DocumentException;
  7. import com.itextpdf.text.Paragraph;
  8. import com.itextpdf.text.pdf.PdfWriter;
  9. public class PrintStudent {
  10.     public static void main(String[] args) {
  11.         try {
  12.             Document doc = new Document();
  13.             PdfWriter.getInstance(doc, new FileOutputStream("c:\\good.pdf"));
  14.             doc.open();
  15.             Paragraph pf = new Paragraph("eee");
  16.             doc.add(pf);
  17.             doc.close();
  18.         } catch (FileNotFoundException e) {
  19.             e.printStackTrace();
  20.         } catch (DocumentException e) {
  21.             e.printStackTrace();
  22.         } catch (IOException e) {
  23.             e.printStackTrace();
  24.         }
  25.     }
  26. }

3. 书写器(Writer)对象

一旦文档(document)对象建立好之后,需要建立一个或多个书写器(Writer)对象与之关联。通过书写器(Writer)对象可以将具体文档存盘成需要的格式,如PDF.PDFWriter可以将文档存成PDF文件, html.HtmlWriter可以将文档存成html文件。

4. 设置文档摘要
(1) 设置文档的标题
       public boolean addTitle(String title)
(2) 设置文档的主题、、创建程序
       public boolean addSubject(String subject)
(3) 设置文档的关键字
       public boolean addKeywords(String keywords)
(4) 设置文档的作者
       public boolean addAuthor(String author)
(5) 设置文档的创建者
       public boolean addCreator(String creator)
(6) 设置文档的生产者
       public boolean addProducer()
(7) 设置文档的创建日期
       public boolean addCreationDate()
(8) 设置文档的头信息
       public boolean addHeader(String name, String content)
       addHeader对于PDF文档无效,addHeader仅对html文档有效,用于添加文档的头信息。

代码如下
  1. public static void createSummary(Document doc){
  2.             doc.addSubject("subject");
  3.             doc.addTitle("title");
  4.             doc.addKeywords("keywords");
  5.             doc.addAuthor("Author");
  6.             doc.addCreator("creator");
  7.             doc.addProducer();
  8.             doc.addCreationDate();
  9.             doc.addHeader("name", "content");
  10.   }
       查看PDF文件的附件即可查看相关信息。

5. 文档的初始化
(1) 设置类库提供的页面
Document-object共有三个构造函数:
       public Document();
       public Document(Rectangle pageSize);
       public Document(Rectangle pageSize,int marginLeft,int marginRight,int marginTop,int marginBottom);

       marginLeft,marginRight,marginTop,marginBottom:表示距离页面的左、右、上、下边距,默认为36, 如果你修改了页面尺寸,仅仅影响到下一页,如果你修改了页边距,则影响到全部,故慎用。
       pageSize:表示页面的幅面,默认为A4幅面,可以选择的部分值如下
                          POSTCARD,A0-A10,B0-B10,LETTER等

       Document document = new Document(PageSize.A4,20,20,20,20);
       指定页面的幅面为A4,各边的边距是20。
(2) 设置自定义页面
       Rectangle pageSize = new Rectangle(144, 720);
       Document document = new Document(pageSize);
(3) 设置横向页面
       大多数情况下使用纵向页面,如果希望使用横向页面,你只须使用rotate()函数:
       Document document = new Document(PageSize.A4.rotate());

(4) 设置页数
       setPageCount(int pageN)



参考文献
1.Itext中文处理(更新版). http://quicker.iteye.com/blog/549876
2.使用Java组件itext 生成pdf介绍.
阅读(6173) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

泡沫夏的男生2014-09-26 15:03:31

zyh228913:附件在哪来呢

什么附件啊?

回复 | 举报

zyh2289132014-05-12 16:18:53

附件在哪来呢