itextpdf中表格中单元格的文字水平垂直居中的设置

在使用itextpdf,使用Doucument方式生成pdf时,设置单元格中字体的对齐方式时,发现一些问题。

1、com.itextpdf.text.pdf.PdfPCell类中的对齐方式的设置完全不齐作用,只能使用padding设置。

2、在使用padding设置时顶部和底部时,数值不一致。

下面是设置的部分代码:

PdfPTable table01 = new PdfPTable(3);
        table01.setHorizontalAlignment(Element.ALIGN_CENTER);//表格整体水平居中
        table01.setTotalWidth(400);
        
        PdfPCell cell01 = new PdfPCell();//单元格
        
        cell01.setVerticalAlignment(PdfPCell.ALIGN_CENTER);//设置单元格的垂直对齐方式
        cell01.setHorizontalAlignment(Element.ALIGN_RIGHT);//设置单元格的水平对齐方式
        Paragraph p01 = new Paragraph("一个我嘻嘻嘻", headFont);//新建段落
        cell01.addElement(p01);
        
        table01.addCell(cell01);

其中:

cell01.setVerticalAlignment(PdfPCell.ALIGN_CENTER);//设置单元格的垂直对齐方式
cell01.setHorizontalAlignment(Element.ALIGN_RIGHT);//设置单元格的水平对齐方式

这两行代码是不起作用的。

我画了一个模型:

如果模型是正确的,那么对cell类的操作其实并没有操作空间,因为它和表格自带边框其实是重合的。

而如果这个时候使用Paragraph类的水平居中设置可以起到居中的作用。

 另外也可以解释在设置上下padding是数值不一致的原因,因为设置cell的上下padding的时候段落文字在段落框里并不居中,所以需要补齐这个差距。

总结:

1、com.itextpdf.text.pdf.PdfPCell类中的对齐方法无效,使用padding设置来起到对齐作用。

2、设置上下padding时补齐差距。

另外:

我试过直接在table里面添加Paragraph,这样是没有办法设置对齐方式的,只用cell类可以设置对齐方式,Paragraph只能设置水平居中。

代码:

        PdfPTable table01 = new PdfPTable(3);
        table01.setHorizontalAlignment(Element.ALIGN_CENTER);//表格整体水平居中
        table01.setTotalWidth(400);
        
        PdfPCell cell01 = new PdfPCell();//单元格
        cell01.setPaddingTop(0f);
        cell01.setPaddingBottom(10f);
        cell01.setBorderColor(BaseColor.GREEN);
        
        Paragraph p01 = new Paragraph("一个我嘻嘻嘻", headFont);//新建段落
        p01.setAlignment(Paragraph.ALIGN_CENTER);//段落的对齐方式
        
        cell01.addElement(p01);
        
        table01.addCell(cell01);

猜你喜欢

转载自www.cnblogs.com/whalesea/p/11698695.html