Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3331807
  • 博文数量: 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

2012-01-02 14:47:46

1.块操作
       Chunk (块),是PDF文档中描述的最小原子元素。
       块可以用于构建其他基础元素如短句、段落、锚点等,块是一个有确定字体的字符串,要添加块到文档中时,其他所有布局变量均要被定义。

1.1 定义一个基本的Chunk块
      下面一行中,我们创建了一个内容为“hello World”、红色、斜体、COURIER字体、尺寸20的一个块:
                  Chunk chunk = new Chunk("Hello world", FontFactory.getFont(FontFactory.COURIER, 20, Font.ITALIC, new Color(255, 0, 0)));

1.2 修改块的背景
      使用方法setBackground(Color color). 如下所示:
                  chunk .setBackground(new Color(0xFF, 0xFF, 0x00));

1.3 通过Chunk换行
      doc.add(Chunk.NEWLINE); 

2. 字体
2.1 下划线/删除线
       文字添加下划线或删除线,代码如下
              Chunk chunk1 = new Chunk("This text is underlined", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE));
             Chunk chunk2 = new Chunk("This font is of type ITALIC | STRIKETHRU", FontFactory.getFont(FontFactory.HELVETICA, 12, Font.ITALIC | Font.STRIKETHRU));

2.2 上标/下标
       通过 setTextRise(float f)设置上标或下标。

2.3 块的背景
      修改块的背景,使用方法setBackground(Color color).代码如下:
             chunk.setBackground(new Color(0xFF, 0xFF, 0x00));

2.4 更改分割符
       当文本不能放在一行时,文本将被分割成不同的部分,iText首先会查找分割符,如果没有找到,文本将在行尾被截断。有一些预定的分割符如“ ”空格和“-”连字符,但是你可以使用setSplitCharacter方法来覆盖这些默认值。

3.短句(Phrases)
       短句是一系列以特定间距(两行之间的距离)作为参数的块,一个短句有一个主字体,但短句中的一些块具有不同于主字体的字体,你可以创建短句去完成。

3.1 字体的延续
      字体(非默认字体)创建一个短句或者段落后再添加更多内容时,初始对象的字体风格将被延续。
             Phrase myPhrase = new Phrase("Hello 2! ", new Font(Font.TIMES_NEW_ROMAN, 8, Font.BOLD));
             myPhrase.Add(new Phrase("some other font ", new Font(Font.HELVETICA, 8, Font.ITALIC)));
             myPhrase.Add(new Phrase("This is the end of the sentence.\n", new Font(Font.TIMES_NEW_ROMAN, 8, Font.ITALIC)));
             document.Add(myPhrase);
      我们由Times New Roman 粗体字开始,添加一些文本使用Helvetica字体而不指定风格,我们发现文本被改变成了粗体,当我们再加一些文本使用Times New Roman字体和斜体风格,结果变成了粗斜体。

       如果我们使用FontFactory来创建字体,字体风格不会被延续,因为FontFactory使用了另外的技术构建一个字体:
             myPhrase = new Phrase("Hello 1bis! ", FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 8, Font.BOLD));
             myPhrase.Add(new Phrase("some other font ", FontFactory.getFont(FontFactory.HELVETICA, 8, Font.ITALIC)));
             myPhrase.Add(new Phrase("This is the end of the sentence.\n", FontFactory.getFont(FontFactory.TIMES_NEW_ROMAN, 8, Font.ITALIC)));
             document.Add(myPhrase);

4.段落

       段落是一系列块和(或)短句。同短句一样,段落有确定的间距。用户还可以指定缩排;在边和(或)右边保留一定空白,段落可以左对齐、右对齐和居中对齐。添加到文档中的每一个段落将自动另起一行。
有几种办法建立一个段落,如:
              Paragraph p1 = new Paragraph(new Chunk("This is my first paragraph.", FontFactory.getFont(FontFactory.HELVETICA, 12)));
              Paragraph p2 = new Paragraph(new Phrase("This is my second paragraph.", FontFactory.getFont(FontFactory.HELVETICA, 12)));
              Paragraph p3 = new Paragraph("This is my third paragraph.", FontFactory.getFont(FontFactory.HELVETICA, 12));

所有有些对象将被添加到段落中:
              p1.add("you can add strings, ");
              p1.add(new Chunk("you can add chunks "));
              p1.add(new  Phrase("or you can add phrases."));

        说明:一个段落有一个且仅有一个间距,如果你添加了一个不同字体的短句或块,原来的间距仍然有效,你可以通过SetLeading来改变间距,但是段落中所有内容将使用新的中的间距。





参考文献
1.业务单据举例.http://blog.csdn.net/sunzuqiang/article/details/6590369
2.
阅读(3586) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~