Java iText 生成PDF表格

近期项目需要将计算结果(二维表格)导出为PDF,所需jar包:


然后新建PDF文档:

// 创建Document对象(页面的大小为A4,左、右、上、下的页边距为10)
        Document document = new Document(PageSize.A4, 10, 10, 10, 10);
        // 建立书写器
        PdfWriter.getInstance(document, new FileOutputStream("F:\\test.pdf"));
        // 打开文档
        document.open();
        // 使用iTextAsian.jar中的字体
        BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        Font font = new Font(baseFont);
             
        Table table = PDFTest.setTable(source1,source2,receiver,json);  //表格设计  
        document.add(table);
        
        // 关闭文档
        document.close();
其中字体及表格单元的设置可参考:

/**
     * 设置字体编码格式
     * @return
     */
    public static Font setFont(){
        BaseFont baseFont = null;
        try {
            baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Font font = new Font(baseFont, 8, Font.NORMAL,Color.BLUE);
        return font;
    }
    /**
     * 设置cell
     * @param name
     * @return
     * @throws BadElementException
     */
    public static Cell setTableHeader(String name) throws BadElementException{
        
        Cell cell = new Cell(new Phrase(name,PDFTest.setFont()));
        //单元格水平对齐方式
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        //单元格垂直对齐方式
        cell.setVerticalAlignment(Element.ALIGN_CENTER);
//        cell.setHeader(true);
        //cell.setBackgroundColor(Color.RED);
        return cell;
    }

表格设置:

public static Table setTable(List<String> source1,List<String> source2,List<String> receiver,JSONObject json) throws BadElementException{
        
        Table table = new Table(2+source1.size()+source2.size());//参数为表格的列数
        table.setBorderWidth(1);
        // 创建表头
        Cell cell = PDFTest.setTableHeader("");
        cell.setColspan(2);//合并列
        cell.setRowspan(2);//合并行
        table.addCell(cell);
        Cell cell2 = PDFTest.setTableHeader("场景1");
        cell2.setColspan(source1.size());
        table.addCell(cell2);
        Cell cell3 = PDFTest.setTableHeader("场景2");
        cell3.setColspan(source2.size());
        table.addCell(cell3);
        
        for(int i=0;i<source1.size();i++){
        	Cell cell4 = PDFTest.setTableHeader(source1.get(i));
        	table.addCell(cell4);
        }
        for(int i=0;i<source2.size();i++){
        	Cell cell4 = PDFTest.setTableHeader(source2.get(i));
        	table.addCell(cell4);
        }
        
        for(int i=0;i<receiver.size()*2;i=i+2){
        	Cell cell5 = PDFTest.setTableHeader(receiver.get(i/2));
        	cell5.setRowspan(2);
        	table.addCell(cell5); 
        	
        	Cell cell7 = PDFTest.setTableHeader("昼间");
        	table.addCell(cell7);
        	
        	JSONArray array = (JSONArray) json.get(i+"");
        	for(int j=0;j<array.size();j++){
        		Cell cell6 = PDFTest.setTableHeader(array.getString(j));
        		table.addCell(cell6);
        	}
        	
        	Cell cell8 = PDFTest.setTableHeader("夜间");
        	table.addCell(cell8);
        	
        	JSONArray array2 = (JSONArray) json.get(i+1+"");
        	for(int j=0;j<array2.size();j++){
        		Cell cell6 = PDFTest.setTableHeader(array2.getString(j));
        		table.addCell(cell6);
        	}
        	      	
        }
        return table;
        
    }

然后,便可得自定义可变表头含表格的PDF文件。

可参考博客:(扩展学习)

1.点击打开链接

2.java使用iText生成pdf表格

3.Java导出pdf表格

4.Java iText导出pdf功能实现

5.java动态生成pdf含表格table和 合并两个pdf文件功能

6.使用iText在word文档中插入复杂的表格

7.利用itext操作pdf从数据库导出大量数据--功能汇总(一)

8.java 如何在pdf中生成表格

9. java根据模板生成pdf文件并导出



  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值