iText生成pdf文档

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列的table
			PdfPTable table = new PdfPTable(4);
			// 设置table每一列的宽度,widths里写的是百分比,他们加和需要是1
			table.setWidths(widths);
			// 设置表格在页面上的宽度,设成100表示可以表格填满页面,但是要去掉页面margin
			table.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 block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		List<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);
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值