UML 元素類圖:
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
}
結果:
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
}