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); } }