利用itext创建PDF表格

来源:互联网 发布:桑植县启航网络咨询 编辑:程序博客网 时间:2024/06/10 01:34

学习生活中,经常需要制作或填写各种各样的表。这些表往往写成PDF文件,然后打印出来最为方便。那么,如果用Java写这样的PDF文件,该怎么做呢?


itext是一个处理该问题的不错的类库,首先需要将itext的jar包添加到开发环境中,接下来我演示在eclipse下用Java写出pdf文件。文件内容以下截图给出:



方法如下:

public class Test_登记表{public static void main(String[] args) throws Exception {//创建Document对象Document doc=new Document(PageSize.A4,0,0,50,0);//获得PdfWriter实例,将文档放到输出流上PdfWriter.getInstance(doc, new FileOutputStream("f:\\登记表.pdf"));//字体设置/* * 由于itext不支持中文,所以需要进行字体的设置,我这里让itext调用windows系统的中文字体, * 找到文件后,打开属性,将文件名及所在路径作为字体名即可。 *///创建BaseFont对象,指明字体,编码方式,是否嵌入BaseFont bf=BaseFont.createFont("C:\\Windows\\Fonts\\simkai.ttf", BaseFont.IDENTITY_H, false);//创建Font对象,将基础字体对象,字体大小,字体风格Font font=new Font(bf,13,Font.NORMAL);Font font1=new Font(bf,15,Font.BOLD);/* * 添加7列的表格 *///创建PdfTable对象PdfPTable table=new PdfPTable(7);//设置各列的列宽table.setTotalWidth(new float[]{100,100,100,100,100,100,80});//添加表格内容table.addCell(getPDFCell("姓名",font));table.addCell("");table.addCell(getPDFCell("性别",font));table.addCell("");table.addCell(getPDFCell("出生年月",font));table.addCell("");//添加图片Image img=Image.getInstance("Hebe (2).jpg",true);img.scaleAbsolute(57, 75);PdfPCell cell=new PdfPCell(img);cell.setRowspan(3);table.addCell(cell);table.addCell(getPDFCell("学历",font));table.addCell("");table.addCell(getPDFCell("婚否",font));table.addCell("");table.addCell(getPDFCell("民族",font));table.addCell("");table.addCell(getPDFCell("专业",font));cell=mergeCol("", font, 2);table.addCell(cell);table.addCell(getPDFCell("毕业学校",font));cell=mergeCol("", font, 2);table.addCell(cell);table.addCell(getPDFCell("健康状况",font));cell=mergeCol("", font, 2);table.addCell(cell);table.addCell(getPDFCell("户籍所在地",font));cell=mergeCol("", font, 3);table.addCell(cell);table.addCell(getPDFCell("政治面貌",font));cell=mergeCol("", font, 2);table.addCell(cell);table.addCell(getPDFCell("身份证号码",font));cell=mergeCol("", font, 3);table.addCell(cell);table.addCell(getPDFCell("参加工作时间",font));cell=mergeCol("", font, 2);table.addCell(cell);table.addCell(getPDFCell("有无住房",font));table.addCell("");table.addCell(getPDFCell("要求待遇",font));table.addCell("");table.addCell(getPDFCell("联系电话",font));cell=mergeCol("", font, 2);table.addCell(cell);table.addCell(getPDFCell("电子邮件",font));table.addCell("");table.addCell(getPDFCell("手机",font));table.addCell("");table.addCell(getPDFCell("联系地址",font));cell=mergeCol("", font, 6);table.addCell(cell);table.addCell(getPDFCell("现工作所在地",font));cell=mergeCol("", font, 6);table.addCell(cell);table.addCell(getPDFCell("离职原因",font));cell=mergeCol("", font, 6);table.addCell(cell);cell=mergeRow("简历", font, 6);table.addCell(cell);table.addCell(getPDFCell("起止时间",font));cell=mergeCol("学习/工作单位", font, 3);table.addCell(cell);cell=mergeCol("专业/职位", font, 2);table.addCell(cell);for(int i=0;i<5;i++){table.addCell(getPDFCell(" ",font));cell=mergeCol(" ", font, 3);table.addCell(cell);cell=mergeCol(" ", font, 2);table.addCell(cell);}cell=mergeRow("家庭情况", font, 6);table.addCell(cell);table.addCell(getPDFCell("姓名",font));table.addCell(getPDFCell("关系",font));table.addCell(getPDFCell("年龄",font));table.addCell(getPDFCell("文化程度",font));cell=mergeCol("现工作单位", font, 2);table.addCell(cell);for(int i=0;i<5;i++){table.addCell(getPDFCell(" ",font));table.addCell(getPDFCell(" ",font));table.addCell(getPDFCell(" ",font));table.addCell(getPDFCell(" ",font));cell=mergeCol(" ", font, 2);table.addCell(cell);}table.addCell(getPDFCell("特别提示",font));cell=mergeCol("1. 本人承诺保证所填写资料真实。 \n2. 保证遵守公司招聘有关规程和国家有关法规。  \n3. 请填写好招聘登记表,带齐照片、学历、职称证书的有效证件及相关复印件。\n", font, 6);cell.setHorizontalAlignment(Element.ALIGN_LEFT);table.addCell(cell);//文档写入内容doc.open();Paragraph title=new Paragraph("招聘人员登记表\n\n\n",font1);title.setAlignment(Paragraph.ALIGN_CENTER);doc.add(title);doc.add(table);doc.close();}//合并行的静态函数public static PdfPCell mergeRow(String str,Font font,int i) {//创建单元格对象,将内容及字体传入PdfPCell cell=new PdfPCell(new Paragraph(str,font));//设置单元格内容居中cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//将该单元格所在列包括该单元格在内的i行单元格合并为一个单元格cell.setRowspan(i);return cell;}//合并列的静态函数public static PdfPCell mergeCol(String str,Font font,int i) {PdfPCell cell=new PdfPCell(new Paragraph(str,font));cell.setMinimumHeight(25);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//将该单元格所在行包括该单元格在内的i列单元格合并为一个单元格cell.setColspan(i);return cell;}//获取指定内容与字体的单元格public static PdfPCell getPDFCell(String string, Font font) {//创建单元格对象,将内容与字体放入段落中作为单元格内容PdfPCell cell=new PdfPCell(new Paragraph(string,font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置最小单元格高度cell.setMinimumHeight(25);return cell;}}

f盘即可找到所写文件。

0 0