六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 247|回复: 0

iText生成pdf文档

[复制链接]

升级  63.33%

39

主题

39

主题

39

主题

秀才

Rank: 2

积分
145
 楼主| 发表于 2013-2-8 00:37:31 | 显示全部楼层 |阅读模式
package com.ly.test;import java.awt.Color;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import com.lowagie.text.Document;import com.lowagie.text.DocumentException;import com.lowagie.text.Element;import com.lowagie.text.Font;import com.lowagie.text.HeaderFooter;import com.lowagie.text.PageSize;import com.lowagie.text.Paragraph;import com.lowagie.text.Phrase;import com.lowagie.text.Rectangle;import com.lowagie.text.pdf.BaseFont;import com.lowagie.text.pdf.PdfPCell;import com.lowagie.text.pdf.PdfPTable;import com.lowagie.text.pdf.PdfWriter;public class ToPdf {public static void creatPdf(List<Object[]> list){try {BaseFont bfChinese = BaseFont.createFont("C:/WINDOWS/Fonts/SIMKAI.TTF",BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);Font FontChinese = new Font(bfChinese, 14, Font.NORMAL);Font font = new Font(bfChinese, 25, Font.NORMAL);Document document = new Document(PageSize.A4,20,20,20,20);PdfWriter pdfWrite = PdfWriter.getInstance(document,new FileOutputStream("E:\\totalPlantArea.pdf"));HeaderFooter footer = new HeaderFooter(new Phrase(), new Phrase()); footer.setBorder(Rectangle.NO_BORDER); footer.setAlignment(Element.ALIGN_RIGHT); footer.setPageNumber(2);document.setFooter(footer); document.open();// define table float[] widths = { 0.25f, 0.25f, 0.25f ,0.25f};   // new 一个3列的tablePdfPTable table = new PdfPTable(4);// 设置table每一列的宽度,widths里写的是百分比,他们加和需要是1table.setWidths(widths);// 设置表格在页面上的宽度,设成100表示可以表格填满页面,但是要去掉页面margintable.setWidthPercentage(77);// 设置表格上端的空白距离,类似css中的margin-top:xxpx;这样在给表格加上标题后,标题就不会跟表格重叠在一起了。table.setSpacingBefore(10f);table.setSpacingAfter(10f);PdfPCell number = new PdfPCell();number.setBackgroundColor(new Color(201, 215, 250));number.setPhrase(new Phrase("序号",FontChinese));PdfPCell plant = new PdfPCell();plant.setBackgroundColor(new Color(201, 215, 250));plant.setPhrase(new Phrase("作物",FontChinese));PdfPCell area = new PdfPCell();area.setBackgroundColor(new Color(201, 215, 250));area.setPhrase(new Phrase("地块数",FontChinese));PdfPCell num = new PdfPCell();num.setBackgroundColor(new Color(201, 215, 250));num.setPhrase(new Phrase("面积(亩)",FontChinese));table.addCell(number);table.addCell(plant);table.addCell(area);table.addCell(num);for (int i = 0; i <list.size(); i++) {     Object[] obj = (Object[])list.get(i); for(int j=0;j<obj.length;j++){ if(j == 0){ PdfPCell cell = new PdfPCell(); cell.setBackgroundColor(new Color(241, 241, 241)); cell.setPhrase(new Phrase((i+1)+"",FontChinese));     table.addCell(cell);     PdfPCell cell2 = new PdfPCell(); cell2.setBackgroundColor(new Color(241, 241, 241)); cell2.setPhrase(new Phrase(obj[j].toString()+"",FontChinese));     table.addCell(cell2);     }else if(j==1){     PdfPCell cell = new PdfPCell(); cell.setBackgroundColor(new Color(241, 241, 241)); cell.setPhrase(new Phrase(obj[j].toString()+"",FontChinese));     table.addCell(cell);     }else{     PdfPCell cell = new PdfPCell(); cell.setBackgroundColor(new Color(241, 241, 241)); cell.setPhrase(new Phrase(obj[j].toString()+"",FontChinese));     table.addCell(cell);     } } }Paragraph par = new Paragraph("作物面积统计", font);par.setAlignment(Element.ALIGN_CENTER);par.setSpacingAfter(20f);document.add(par);// 由于设置了table.setSpacingBefore(3f);所以table跟标题不会重合。document.add(table);document.newPage();document.close();} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubList<Object[]> li = new ArrayList<Object[]>();li.add(new Object[]{"瓜果","125","125"});li.add(new Object[]{"西瓜","125","125"});li.add(new Object[]{"瓜果","125","125"});li.add(new Object[]{"西红柿","26","125"});li.add(new Object[]{"瓜果","125","125"});ToPdf.creatPdf(li);}} 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表