Java生成PDF文檔(表格、列表、添加圖片等)


需要的兩個包及下載地址:

(1)iText.jar:http://download.csdn.net/source/296416

(2)iTextAsian.jar(用來進行中文的轉換):http://download.csdn.net/source/172399

 

代碼如下:

 1 import java.awt.Color;
 2 import java.io.FileOutputStream;
 3 import com.lowagie.text.Cell;
 4 import com.lowagie.text.Chapter;
 5 import com.lowagie.text.Document;
 6 import com.lowagie.text.Font;
 7 import com.lowagie.text.Image;
 8 import com.lowagie.text.List;
 9 import com.lowagie.text.ListItem;
10 import com.lowagie.text.PageSize;
11 import com.lowagie.text.Paragraph;
12 import com.lowagie.text.Section;
13 import com.lowagie.text.Table;
14 import com.lowagie.text.pdf.BaseFont;
15 import com.lowagie.text.pdf.PdfWriter;
16 public class ITextDemo {
17     public boolean iTextTest() {
18         try {
19             /** 實例化文檔對象 */
20             Document document = new Document(PageSize.A4, 50, 50, 50, 50);
21             /** 創建 PdfWriter 對象 */
22             PdfWriter.getInstance(document,// 文檔對象的引用
23                     new FileOutputStream("d://ITextTest.pdf"));//文件的輸出路徑+文件的實際名稱
24             document.open();// 打開文檔
25             /** pdf文檔中中文字體的設置,注意一定要添加iTextAsian.jar包 */
26             BaseFont bfChinese = BaseFont.createFont("STSong-Light",
27                     "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
28             Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);//加入document:
29             /** 向文檔中添加內容,創建段落對象 */
30             document.add(new Paragraph("First page of the document."));// Paragraph添加文本
31             document.add(new Paragraph("我們是害蟲", FontChinese));
32             /** 創建章節對象 */
33             Paragraph title1 = new Paragraph("第一章", FontChinese);
34             Chapter chapter1 = new Chapter(title1, 1);
35             chapter1.setNumberDepth(0);
36             /** 創建章節中的小節 */
37             Paragraph title11 = new Paragraph("表格的添加", FontChinese);
38             Section section1 = chapter1.addSection(title11);
39             /** 創建段落並添加到小節中 */
40             Paragraph someSectionText = new Paragraph("下面展示的為3 X 2 表格.",
41                     FontChinese);
42             section1.add(someSectionText);
43             /** 創建表格對象(包含行列矩陣的表格) */
44             Table t = new Table(3, 2);// 2行3列
45             t.setBorderColor(new Color(220, 255, 100));
46             t.setPadding(5);
47             t.setSpacing(5);
48             t.setBorderWidth(1);
49             Cell c1 = new Cell(new Paragraph("第一格", FontChinese));
50             t.addCell(c1);
51             c1 = new Cell("Header2");
52             t.addCell(c1);
53             c1 = new Cell("Header3");
54             t.addCell(c1);
55             // 第二行開始不需要new Cell()
56             t.addCell("1.1");
57             t.addCell("1.2");
58             t.addCell("1.3");
59             section1.add(t);
60             /** 創建章節中的小節 */
61             Paragraph title13 = new Paragraph("列表的添加", FontChinese);
62             Section section3 = chapter1.addSection(title13);
63             /** 創建段落並添加到小節中 */
64             Paragraph someSectionText3 = new Paragraph("下面展示的為列表.", FontChinese);
65             section3.add(someSectionText3);
66             /** 創建列表並添加到pdf文檔中 */
67             List l = new List(true, true, 10);// 第一個參數為true,則創建一個要自行編號的列表,
68             // 如果為false則不進行自行編號
69             l.add(new ListItem("First item of list"));
70             l.add(new ListItem("第二個列表", FontChinese));
71             section3.add(l);
72             document.add(chapter1);
73             /** 創建章節對象 */
74             Paragraph title2 = new Paragraph("第二章", FontChinese);
75             Chapter chapter2 = new Chapter(title2, 1);
76             chapter2.setNumberDepth(0);
77             /** 創建章節中的小節 */
78             Paragraph title12 = new Paragraph("png圖片添加", FontChinese);
79             Section section2 = chapter2.addSection(title12);
80             /** 添加圖片 */
81             section2.add(new Paragraph("圖片添加: 餅圖", FontChinese));
82             Image png = Image.getInstance("D:/pie.png");//圖片的地址
83             section2.add(png);
84             document.add(chapter2);
85             document.close();
86             return true;
87         } catch (Exception e2) {
88             System.out.println(e2.getMessage());
89         }
90         return false;
91     }
92     public static void main(String args[]) {
93         System.out.println(new ITextDemo().iTextTest());
94     }
95 }

如果發現中文無法顯示的時候,可以在你需要顯示中文的地方先new Paragraph("",FontChinese);

FontChinese:為中文字體的設置,見代碼中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM