文章目录
  1. 1. itext制作pdf表格
    1. 1.1. 添加单元格
    2. 1.2. 合并单元格

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();
       } 
  }
  }
  • 效果如下:


更多精彩内容,请关注公众号:轮子工厂,公众号内回复:我要造轮子,可免费获得100本计算机经典电子图书; 回复:福利,获取大学生礼包; 回复:加群,邀请您进高手如云技术交流群。

文章目录
  1. 1. itext制作pdf表格
    1. 1.1. 添加单元格
    2. 1.2. 合并单元格