itext制作pdf表格
添加单元格
- 把下面这几项顺次的加入到表格中,当一行充满时候自动换行到下一行
PdfPTable table = new PdfPTable(3);
table.addCell("1.1");
table.addCell("1.2");
table.addCell("1.3");
table.addCell("2.1");
table.addCell("2.2");
table.addCell("2.3");
- 以上程序运行结果将显示三行二列的表格。
- 添加单元格的内容还可以是以下几种形式。
public void addCell(PdfPCell cell);
public void addCell(PdfPTable table);
public void addCell(Phrase phrase);
public void addCell(String text);
public void addCell(Paragraph paragraph);
- 本文用的是最后一种。
合并单元格
iText合并单元格的过程如下,首先创建一个cell,设置这个单元格的跨度,
如果是横向合并,则通过
cell.setColspan(n); //n代表从当前单元格的位置开始,合并的单元格数
如果是纵向合并,
cell.setRowspan(n);//n代表从当前单元格的位置开始,合并的单元格数
代码举例:(一开始是用数组添加单元格的,后来改成直接添加了,更简洁了)
package com.pdf;
import java.io.FileOutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
public class pdf_Table {
public static void main(String[] args) {
Document document = new Document();
try {
BaseFont bfChinese = BaseFont.createFont("C:\\Windows\\Fonts\\simkai.ttf",
BaseFont.IDENTITY_H,false); // 中文处理
Font titleChinese = new Font(bfChinese, 20, Font.BOLD);
Font font = new Font(bfChinese, 20, Font.ITALIC);// 模板抬头的字体
Font moneyFontChinese = new Font(bfChinese, 11, Font.ITALIC); // 币种和租金金额的小一号字体
PdfWriter.getInstance(document,
new FileOutputStream("text1.pdf"));
document.open();
PdfPTable table = new PdfPTable(1);//创建一个有1列的表格
table.setTotalWidth(15);//设置表格的各列宽度
PdfPCell cell1 = new PdfPCell(new Paragraph("招聘人员登记表", titleChinese));
cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell1);
document.add(table);
float f[] = {2,3,2,3,2};
PdfPTable table1 = new PdfPTable(5);
table1.setTotalWidth(f);
String str1[] = {"姓名","出生年月","婚否","专业","健康状况","政治面貌","家庭住址","简历","家庭情况"};
String str2[] = {"性别","学历","名族","毕业学校","户籍所在地","身份证号","姓名","亲属关系","年龄","健康状况"};
PdfPCell ce1 = null;
PdfPCell ce2 = null;
PdfPCell ce3 = null;
ce1 = new PdfPCell(new Paragraph(str1[0],moneyFontChinese));
ce1.setHorizontalAlignment(Element.ALIGN_CENTER);
table1.addCell(ce1);
table1.addCell("");
ce2 = new PdfPCell(new Paragraph(str2[0],moneyFontChinese));
ce2.setHorizontalAlignment(Element.ALIGN_CENTER);
table1.addCell(ce2);
table1.addCell("");
ce3 = new PdfPCell(new Paragraph("照片",moneyFontChinese));
ce3.setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中
ce3.setUseAscender(true);//垂直居中
ce3.setVerticalAlignment(ce3.ALIGN_MIDDLE);//垂直居中
ce3.setRowspan(4); //合并同一行的四个格
Image img = Image.getInstance("E:\\我的电脑备份\\照片\\照片素材\\旅行\\长城\\IMG_20140727_095516.jpg");//选择图片
// img.setAlignment(1);
// img.scaleAbsolute(110,150);//控制图片大小
ce3.setImage(img);
table1.addCell(ce3);
for(int i=1;i<4;i++){
ce1 = new PdfPCell(new Paragraph(str1[i],moneyFontChinese));
ce1.setHorizontalAlignment(Element.ALIGN_CENTER);
table1.addCell(ce1);
table1.addCell("");
ce2 = new PdfPCell(new Paragraph(str2[i],moneyFontChinese));
ce2.setHorizontalAlignment(Element.ALIGN_CENTER);
table1.addCell(ce2);
table1.addCell("");
}
for(int i=4;i<6;i++){
ce1 = new PdfPCell(new Paragraph(str1[i],moneyFontChinese));
ce1.setHorizontalAlignment(Element.ALIGN_CENTER);
table1.addCell(ce1);
table1.addCell("");
ce2 = new PdfPCell(new Paragraph(str2[i],moneyFontChinese));
ce2.setHorizontalAlignment(Element.ALIGN_CENTER);
table1.addCell(ce2);
ce3 = new PdfPCell(new Paragraph(""));
ce3.setColspan(2); //合并同一行的2个格
table1.addCell(ce3);
}
ce1 = new PdfPCell(new Paragraph(str1[6],moneyFontChinese));
ce1.setHorizontalAlignment(Element.ALIGN_CENTER);
table1.addCell(ce1);
ce3 = new PdfPCell(new Paragraph(""));
ce3.setColspan(4); //合并同一行的2个格
table1.addCell(ce3);
ce1 = new PdfPCell(new Paragraph(str1[8],moneyFontChinese));
ce1.setHorizontalAlignment(Element.ALIGN_CENTER);
ce1.setUseAscender(true);//垂直居中
ce1.setVerticalAlignment(ce1.ALIGN_MIDDLE);//垂直居中
ce1.setRowspan(5); //合并同一行的四个格
table1.addCell(ce1);
for(int i=0;i<4;i++){
ce2 = new PdfPCell(new Paragraph(str2[i+6],moneyFontChinese));
ce2.setHorizontalAlignment(Element.ALIGN_CENTER);
table1.addCell(ce2);
}
for(int i=0;i<16;i++){
table1.addCell(" ");
}
ce1 = new PdfPCell(new Paragraph(str1[7],moneyFontChinese));
ce1.setMinimumHeight(90);
ce1.setHorizontalAlignment(Element.ALIGN_CENTER);
ce1.setUseAscender(true);//垂直居中
ce1.setVerticalAlignment(ce1.ALIGN_MIDDLE);//垂直居中
table1.addCell(ce1);
ce2 = new PdfPCell(new Paragraph(" "));
ce2.setColspan(4);
table1.addCell(ce2);
String str = "1.多说几句话身份和空间分割法与人文u影的交付该雕。"
+"2.活动官方发布没办法长三角和环境事故。"
+ "3,白癜风是快捷方便和技术快递费";
ce1 = new PdfPCell(new Paragraph("注意事项",moneyFontChinese));
ce1.setMinimumHeight(90);
ce1.setHorizontalAlignment(Element.ALIGN_CENTER);
ce1.setUseAscender(true);//垂直居中
ce1.setVerticalAlignment(ce1.ALIGN_MIDDLE);//垂直居中
table1.addCell(ce1);
ce2 = new PdfPCell(new Paragraph(str,moneyFontChinese));
ce2.setHorizontalAlignment(Element.ALIGN_CENTER);
ce2.setUseAscender(true);//垂直居中
ce2.setVerticalAlignment(ce2.ALIGN_MIDDLE);//垂直居中
ce2.setColspan(4);
table1.addCell(ce2);
// Image img = Image.getInstance("E:\\我的电脑备份\\照片\\照片素材\\旅行\\长城\\IMG_20140727_095516.jpg");//选择图片
// img.setAlignment(1);
// img.scaleAbsolute(100,100);//控制图片大小
// img.setAbsolutePosition(0,200);//控制图片位置
// table1.addCell(img);
// ce3 = new PdfPCell(new Paragraph(""));
// ce3.setColspan(4); //合并同一行的2个格
// table1.addCell(ce3);
// for(int i=1;i<9;i++){
// if(i<6){
// ce1[i] = new PdfPCell(new Paragraph(str1[i],moneyFontChinese));
// ce1[i].setHorizontalAlignment(Element.ALIGN_CENTER);
// ce2[i] = new PdfPCell(new Paragraph(""));
// ce3[i] = new PdfPCell(new Paragraph(str2[i],moneyFontChinese));
// ce3[i].setHorizontalAlignment(Element.ALIGN_CENTER);
// ce4[i] = new PdfPCell(new Paragraph(""));
// ce5[i] = new PdfPCell(new Paragraph(" "));
// }
// else {
// ce1[i] = new PdfPCell(new Paragraph(str1[i],font));
// ce1[i].setHorizontalAlignment(Element.ALIGN_CENTER);
// ce2[i] = new PdfPCell(new Paragraph(""));
// ce3[i] = new PdfPCell(new Paragraph(str2[i],font));
// ce3[i].setHorizontalAlignment(Element.ALIGN_CENTER);
// ce4[i] = new PdfPCell(new Paragraph(""));
// ce5[i] = new PdfPCell(new Paragraph(""));
// }
// // document.add(table1[i]);
// }
//
// // ce5[0].setRowspan(4);
// ce4[4].setColspan(2); //合并同一行的两个格
// ce4[5].setColspan(2);
// ce2[6].setColspan(4); //合并同一行的四个格
// ce2[7].setColspan(4);
// ce2[8].setColspan(4);
// for(int i=0;i<9;i++){
// table1[i].addCell(ce1[i]);
// table1[i].addCell(ce2[i]);
// table1[i].addCell(ce3[i]);
// table1[i].addCell(ce4[i]);
// if(i>0)
// table1[i].addCell(ce5[i]);
// document.add(table1[i]);
// }
document.add(table1);
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}效果如下: