您的位置:首页 > Web前端 > HTML

解决itext-rtf.jar 对html转换后生成rtf文档 其中表格行列合并的问题

2011-03-16 16:07 627 查看
itext-rtf.jar 对用通过 HTMLWork 类解析html 生成rtf 文档,如果其中含有表格 ,源码对表格行列合并支持的很差

尤其是行合并 根本没有做支持源码如下

this.colspan = cell.getColspan();
this.rowspan = 1; //cell.getRowspan();
//        if(cell.getRowspan() > 1) {
//            this.mergeType = MERGE_VERT_PARENT;
//        }


无论是否有行合并都设置了 rowspan=1 不做处理

下面说下要修改的几个类

第一步 修改com.lowagie.text.rtf.table.RtfCell

修改方法private void importCell(PdfPCell cell)



this.rowspan = 1; //cell.getRowspan();
//        if(cell.getRowspan() > 1) {
//            this.mergeType = MERGE_VERT_PARENT;
//        }


改为

//this.rowspan = 1;
cell.getRowspan();
if(cell.getRowspan() > 1) {
this.mergeType = MERGE_VERT_PARENT;
}


第二步 修改com.lowagie.text.rtf.table.RtfTable

修改方法private void importTable(PdfPTable table)

this.rows = new ArrayList();
this.tableWidthPercent = table.getWidthPercentage();
//以下为添加
if(this.tableWidthPercent == 0f){
this.tableWidthPercent = 80f;
}
//此处省去一个判断 主要判断 proportionalWidths 这个数组
//  如果为空 或者数组每项都为 0 做以下处理  经过分析 通过html解析
//出来的 这个数组 每项应该都为 0
int columnNumber = table.getNumberOfColumns();
this.proportionalWidths = new float[columnNumber ];
float columnWidth = this.tableWidthPercent/columnNumber;
for(int j =0;j<columnNumber;j++){
this.proportionalWidths[j]=columnWidth;
}


经过如上修改 一切ok

以上代码为手写记录 由于环境原因不能拷贝,如有笔误 请自行分析上下文找到错误

转载请注明 :http://blog.csdn.net/zidasine
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: