浏览 9337 次
锁定老帖子 主题:iText 绘制表格的诸多缺陷
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-01
查了很多文档,发现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))); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-06-26
也碰到这个问题,设置宽度只在pdf里面有效,html格式无效。提供的setWidths是忽悠人的,对html格式完全没有用,连设置每列的绝对宽度都不能,真是郁闷。
|
|
返回顶楼 | |
发表时间:2008-11-21
同样的问题也遇到过,发现回贴的同志好多没有责任心,拷贝过来一贴就OK了,连调试都没有做过,实在太....
|
|
返回顶楼 | |
发表时间:2008-11-24
最后修改:2008-11-24
从html转成pdf时,表格的宽度设置也有bug,表格列的宽度必须在第一行,而且从第二列开始,必须设置宽度*10
例如:如果要设置第二列为10%的宽度,实际就要写成100%itext才能识别为10% |
|
返回顶楼 | |
发表时间:2008-12-15
的确;我也是研究了一天我都没有看到什么效果;LZ 你讲的确;他们什么心得;鬼德呀;都是一样的;还写那么多;害得我苦苦的找;气死我也; 什么table 什么pdf 搞什么呀;画了半天都没有画个东西;
|
|
返回顶楼 | |