注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淡泊明智

 
 
 

日志

 
 

jText 生成PDF介绍(2008-06-24 17:13:08| 分类: java 技术)  

2012-04-18 10:57:19|  分类: java基础知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一.准备工作

       首先需要加载 itext-1.1.4.jar和iTextAsian.jar两个jar包,其中iTextAsian.jar用于中日韩文字的显示问题.

二.主要类   

  • com.lowagie.text.Paragraph —— 这个类表示一个缩进的段落。
  • com.lowagie.text.Chapter —— 这个类表示 PDF 文档中的章节。使用 Paragraph 作为题目并使用 int 作为章节号码来创建它。
  • com.lowagie.text.Font —— 这个类包含了全部的字体规范,例如字体、大小、样式和颜色。各种字体都在这个类中声明为静态常数。
  • com.lowagie.text.List —— 这个类表示一个列表,按顺序包含许多 ListItems
  • com.lowagie.text.Table —— 这个类表示包含单元格的表,单元格有序地排列在矩阵中。
  • SIMSUN.TTC:宋体和新宋体

    SIMKAI.TTF:楷体

    SIMHEI.TTF:黑体

    SIMFANG.TTF:仿宋体

  • 三.步骤

         一个PDF文件的输出,总共只需要5个步骤
           a.创建一个Document实例
           Document document = new Document(PageSize.A4, 50, 50, 50, 50);

          第一个参数是页面大小A4大小,默认为竖置,改为横置PageSize.A4.rotate();。接下来的参数分别是左、右、上和下页边距

         b.将Document实例和文件输出流用PdfWriter类绑定在一起
         PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("HelloWorld.pdf"));

           其他写入器为 HtmlWriter、RtfWriter、XmlWriter 等等,不同的类对应不同的文件格式.
          c.打开文档
        document.open();


         d.在文档中添加文字, 图片、表格、标题等.

       1.添加章

       chapterFont = FontFactory.getFont(FontFactory.HELVETICA, 18,
         com.lowagie.text.Font.NORMAL, Color.black);  // 设置字体大小、颜色

        Paragraph cTitle = new Paragraph("第一章", chapterFont);
         chapter1 = new Chapter(cTitle, 1);      

        document.add(chapter1); //添加新章

      2.添加节

       Paragraph sTitle = new Paragraph("第一章第一节", , sectionFont);
       Section section = chapter1.addSection(sTitle, 2); 

       3.添加表格

         table = new Table(n);  //n表示有多少列

        Table table = new Table(8);
         float[] widths = { 0.10f, 0.15f, 0.21f, 0.22f, 0.08f, 0.08f, 0.10f,
                        
    0.06f };
        table.setWidths(widths);  //假设有8列,并设置每列的列宽

      table中添加cell内容,

        Cell cell = new Cell(new Phrase("内容", tableHeaderFont));// 或者   Cell cell = new Cell("内容");
        cell.setBackgroundColor(Color.gray);  //设置背景色
        cell.setHorizontalAlignment(Element.ALIGN_CENTER); //设置为居中,默认为左对齐
        table.addCell(cell);

    section.add(table); //把表加入节中

    4.添加图片

    Section subsection = section21.addSection(subTitle, 3); //节下再加新的节

    subsection.add("图表"); //给图表加个小标题

       通过URL得到图片实例:

    Image wmf = Image.getInstance(new URL("../examples/harbour.wmf"));

    Image gif = Image.getInstance(new URL("../examples/vonnegut.gif"));

    Image jpeg = Image.getInstance(new URL("../examples/myKids.jpg"));

    Image png = Image.getInstance(new URL("../examples/hitchcock.png"));

    通过文件名得到图片实例:

    Image gif = Image.getInstance("vonnegut.gif");

    Image jpeg = Image.getInstance("myKids.jpg");

    Image png = Image.getInstance("hitchcock.png"); // 在本地的完整路径也可以

     subsection.add(image);
      Paragraph endPgh = new Paragraph("\n");   //换行的作用
      endPgh.setAlignment(com.lowagie.text.Image.MIDDLE); //设置图表位置
      subsection.add(endPgh);

    5.一般的文字
     document.add(new Paragraph("Hello World"));

    6.添加页码

     HeaderFooter footer = new HeaderFooter(new Phrase("页码:",getChineseFont()), true);
                 footer.setBorder(Rectangle.NO_BORDER);
                 document.setFooter(footer);
                 document.open();

        e.关闭文档
      document.close();

      评论这张
     
    阅读(195)| 评论(0)
    推荐 转载

    历史上的今天

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2018