iText操作PDF基础-2

2014-11-24 09:10:00 · 作者: · 浏览: 1

UML 元素类图:

clip_image001

Chunk & Phase
Chunk
最小的元素(有同一种类型的字体,颜色,样式组成的字符串)。字体属性都是由Font对象来定义。

一般不直接添加chunk元素,而是使用chunk组成其他大元素后,添加到文档中。

不过Chunk.NEWLINE是直接添加到文档中。

LEADING
文字之间的间距,Chunk对象不包含文字间距设置。

1
PdfWriter.getInstance(document, new FileOutputStream(RESULT)).setInitialLeading(16);
PHRASE
由一系列带有leading属性的chunk对象组成。

基本样例:

01
public static void main(String[] args) throws DocumentException,
02

03
IOException {
04

05
Document document = new Document(); // 创建一个文档
06

07
PdfWriter.getInstance(document, new FileOutputStream("D:/demo.pdf")); // 获取PdfWriter实例
08

09
document.open(); // 打开文档
10

11
Phrase phase = new Phrase();
12

13
phase.add(new Chunk("first line"));
14

15
phase.add(Chunk.NEWLINE); //换行
16

17
phase.add(new Chunk("second Line"));
18

19
document.add(phase);
20

21
document.close(); // 关闭文档
22

23
}
结果:

clip_image001[7]

Paragraph
有一系列phrase和一些额外的属性带有换行标识组成。

代码:

01
public static void main(String[] args) throws FileNotFoundException,
02

03
DocumentException {
04

05
Document document = new Document(); // 创建一个文档
06

07
PdfWriter.getInstance(document, new FileOutputStream("D:/demo.pdf")); // 获取PdfWriter实例
08

09
document.open(); // 打开文档
10

11
Paragraph para = new Paragraph();
12

13
para.add(new Chunk("first chunk"));
14

15
para.add(new Chunk(",second chunk"));
16

17
para.setAlignment(Element.ALIGN_RIGHT); // 右对齐
18

19
document.add(para);
20

21
// Pharagraph带有换行标识符
22

23
Paragraph paraL = new Paragraph();
24

25
paraL.add(new Chunk("2 : first chunk"));
26

27
paraL.add(new Chunk(",second chunk"));
28

29
paraL.setAlignment(Element.ALIGN_LEFT);// 左对齐
30

31
document.add(paraL);
32

33
Paragraph paraR = new Paragraph();
34

35
paraR.add(new Chunk("3 : first chunk"));
36

37
paraR.add(new Chunk(",second chunk"));
38

39
paraR.setAlignment(Element.ALIGN_LEFT);// 左对齐
40

41
paraR.setLeading(30f);// 设置和上面一段paragraph间距
42

43
document.add(paraR);
44

45
document.close(); // 关闭文档
46

47
}

List
一系列Paragraph组成

代码:

01
public static void main(String[] args) throws FileNotFoundException,
02
DocumentException {
03
Document document = new Document(); // 创建一个文档
04
PdfWriter.getInstance(document, new FileOutputStream("D:/demo.pdf")); // 获取PdfWriter实例
05
document.open(); // 打开文档
06
List pList = new List();
07
ListItem li = new ListItem();
08
for (int i = 0; i < 3; i++) {
09
Paragraph p = new Paragraph();
10
p.add(new Chunk("item : " + i));
11
li.add(p);
12
}
13
pList.setNumbered(true);
14
pList.add(li);
15
document.add(pList);
16
document.add(Chunk.NEWLINE);
17
List pList2 = new List();
18
ListItem li2 = new ListItem();
19
for (int i = 0; i < 3; i++) {
20
li2.add(new Chunk("mainItem : " + i));
21
for (int j = 0; j < 3; j++) {
22
List pList3 = new List();
23
ListItem li3 = new ListItem();
24
Paragraph p = new Paragraph();
25
p.add(new Chunk("subItem : " + j));
26
li3.add(p);
27
pList3.add(li3);
28
pList3.setIndentationLeft(10f);
29
li2.add(pList3);
30
}
31
}
32
pList2.add(li2);
33
document.add(pList2);
34
document.close(); // 关闭文档
35
}
clip_image003