我正在创建一个使用Java和iText生成PDF文件的程序。
我使用PDFContentByte添加了一个Rectangle,使用PDFPTable添加了表。
我创建的第一件事就是桌子,它工作正常但是当我添加了Rectangle时,我发现它与我刚才创建的表格重叠。我不知道如何解决这个问题。我希望看起来像这样:
====================================
________________________________
| RECTANGLE |
|______________________________|
________________________________
|____________TABLE_____________|
|________|___________|_________|
|________|___________|_________|
|________|___________|_________|
====================================
答案 0 :(得分:0)
您将直接内容(在您定义的坐标处添加)与遵循iText定义的布局的内容混合(因为您使用的是document.add()
)。您应该坚持定义自己的布局,或者让iText进行布局。
(1 :)定义您自己的布局意味着:请勿使用document.add(table);
使用table.writeSelectedRows()
来添加表格。这种方法存在危险:如果表格超出了页面的大小,它将“掉落页面”。为什么?因为你已经控制了布局。您需要确保在正确的位置添加所有内容。
(2 :)让iText执行布局意味着:添加Rectangle
一列和一行,而不是添加PdfContentByte
PdfTable
。为单个PdfPCell
定义固定高度,并使用单元格的边框,边框颜色和背景颜色来定义边框和矩形的颜色。首先添加特殊表(看起来像Rectangle
),然后添加真实表。也许你想要为表格定义一些'spacing-before'或'spacing-after'。