【转】iText 绘制表格的诸多缺陷

http://www.iteye.com/topic/178465

    近日,工程中需要在JSP页面导出Word 和 PDF,导出的内容有一部分需要绘制成表格. 

 

    查了很多文档,发现PdfPTable和Table可以用来绘制表格. 

   问题出现了 

    我想自定义表格的总宽度 以及 每一列的的宽度,这个功能几乎成了不可能的事情 

    关于这点,我先说说Table 

    假设我现在定义一个Table对象如下 

    Table table = new Table(3); 

 

    1. table.setWidth(100f);  这句是说不管你表格多少列,每列的宽度都是100f; 

    2. float[] widths = {400f, 300f, 100f}; 

       tableInfo.setWidths(widths); 

       上面表面上定义表格的三列宽度分别为400f,300f,100f,但是...你自己打印出来看效果吧,总宽度绝对 

        没有800f,它的总宽度是固定了的,找了半天都找不到如何为我的表格设计总宽度.我惊讶的是,网上搜出 

        来的一些教你如何绘制表格的贴子或方法,居然对此只字不提!难道itext包给你多少宽,你就用多少宽? 

       再者,有些时候,我们不想让表格产生边框,于是大家都会调用table.setBorderWidth(0),没用的,依然 

      没有边框,最后没办法了,我让我所有Cell对象都调用cell.setBorderWidth(0),这样才解决去掉边框的问题. 

       再次让我惊讶的是,网上所有贴子,所谓的心得,完全没有讲这个事,全是setBorderWidth(1),我真的不信 

        你们没碰过这样的问题. 

 

    再来说下PdfPTable,这个比Table要强一些,Table里解决不了的问题PdfPTable有时候可以解决 

     比如设置表格总宽度和具体每一列的宽度. 

    float[] widths = {145f, 100f, 145f,100f}; 

PdfPTable table = new PdfPTable(widths); 

table.setTotalWidth(490); 

table.setLockedWidth(true); 

    这四句定义了表格总宽度和具体每列的宽度,但仍然解决不了边框问题,你如果不想要边框,仍然只有在所有 

     PdfCell后调用setBorderWidth(0) 

 

    写了这么多,我还是不能理解,网上那些所谓的经验心得,长篇累牍几千字,全是如下类似代码,画完一个不管能不能 

     用就没事了. 

     Table table = new Table(3); 

    table.setBorderWidth(1); 

    Cell cell = new Cell((new Paragraph("test",FontChinese))); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值