时间的法外狂徒

导航

itextpdf5操作表格

下面是一些对表格排版的常用方法,是在制作pdf的时候通过查看ipa和一些博客积累下来的。

包括,表格的宽度,对齐方式,表的页眉页脚,前后间距,padding;

单元格对齐方式,线条设置,段落于单元格之间的间距,单元格里面的文本的行间距设置。

这些是通过查看ipa记录其中的一部份,还有很多已于理解的ipa没有记录。

package dbzx.pdf;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import org.junit.Test;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

public class AllTableMethod {
    
    @Test
    public void createTable() throws FileNotFoundException, DocumentException {
        String FONT = "C:/WINDOWS/Fonts/simsun.ttc,0";
        Font textFont = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED,10,Font.NORMAL,BaseColor.BLACK);
        String path = "E:/demo/pdfCreat/"+System.currentTimeMillis()+".pdf";//输出pdf的路径
        Document doc = new Document();
        PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(path));
        doc.open();
        PdfPTable table = new PdfPTable(4);
        //设置控制
        table.setSpacingBefore(40);//表格前间距
        table.setSpacingAfter(100);//表格后间距
        table.setWidthPercentage(80);//表格宽占page比例
        table.setHorizontalAlignment(Element.ALIGN_LEFT);//表格水平对齐方式
       /*
        *      设置构成标题的顶部行数。只有当表被添加到文档并且表跨页时,这个header才有意义。
        */
        
        table.setHeaderRows(2);
        /*
         *     设置页脚要使用的行数。页脚的数量从页眉行中减去。例如,对于一个有两个页眉行和一个页脚行的表,代码应该是:
         *    table.setHeaderRows (3);
         *    table.setFooterRows (1);
         *    第0行和第1行是页眉行,第2行是页脚行。
         */
        table.setFooterRows(1);
        table.setPaddingTop(10f);//设置表格顶部padding
        //设置单元格
        /**
         * getDefaultCell()得到的Cell代表所有不是table.add(PdfPCell)的Cell。例:table.add(new Paragraph("test")).
         */
        table.getDefaultCell().setVerticalAlignment(Element.ALIGN_TOP);//单元格中文字垂直对齐方式
        table.getDefaultCell().setBorderColor(BaseColor.WHITE);//单元格线条颜色
        table.getDefaultCell().setMinimumHeight(30);//单元格最小高度
        table.getDefaultCell().setExtraParagraphSpace(5);//段落文字与表格之间的距离,底部距离
        table.getDefaultCell().setLeading(15, 0);//设置行间距
//        table.getDefaultCell().setFixedHeight(20f);//表格固定高度
        for(int i=0;i<16;i++) {
            table.addCell(new Paragraph("test"));
        }
        doc.add(table);
        doc.close();
        
    }
}

 

posted on 2019-11-01 13:28  抄手砚  阅读(4581)  评论(1编辑  收藏  举报