我是iText的新手并直接跳到iText 7,但发现在我的桌子上设置列宽是非常具有挑战性的。显然,我有一些基本的东西。
在梳理网络寻找答案时,我发现一些基于itext 5的答案似乎与itext 7(硬编码固定宽度)无关。 iText 7的东西似乎假设我没有的知识! "相对列宽" - 那是什么意思?数字加起来应该是100吗?有2列或4列的简单示例是有意义的,但我很难将其转换为7列表。
我有一个包含7列的表格。第1列,第3列和第5列应该相对较窄,它们只是标签。第7列可以占用任何可用空间。例如:
Col1 Col2 Col3 Col4 Col5 Col6 Col7
CMS#: C34827284 Date: 12/5/16 End Date: 12/6/16 approved
我以为我拥有它,但是我的最新尝试产生了" Element不适合当前区域"错误。这是我如何定义它
Table htable = new Table(new float[] {3, 8, 5, 10, 5, 10, 30});
这些数字加起来为71,为什么它们不适合?他们是否需要添加最多100个或者我完全在错误的轨道上使用"加起来高达100"想法?
答案 0 :(得分:1)
您是否为整个表定义了宽度?
这就是我的尝试:
public void createPdf(String dest) throws IOException {
//Initialize PDF writer
PdfWriter writer = new PdfWriter(dest);
//Initialize PDF document
PdfDocument pdf = new PdfDocument(writer);
// Initialize document
Document document = new Document(pdf, PageSize.A4);
// Create table
Table htable = new Table(new float[] {3, 8, 5, 10, 5, 10, 30});
htable.setFontSize(8);
htable.setWidthPercent(100);
htable.addHeaderCell(new Cell().add("Col1"));
htable.addHeaderCell(new Cell().add("Col2"));
htable.addHeaderCell(new Cell().add("Col3"));
htable.addHeaderCell(new Cell().add("Col4"));
htable.addHeaderCell(new Cell().add("Col5"));
htable.addHeaderCell(new Cell().add("Col6"));
htable.addHeaderCell(new Cell().add("Col7"));
htable.addCell(new Cell().add("CMS#"));
htable.addCell(new Cell().add("C34827284"));
htable.addCell(new Cell().add("Date:"));
htable.addCell(new Cell().add("12/5/16"));
htable.addCell(new Cell().add("EndDate:"));
htable.addCell(new Cell().add("12/6/16"));
htable.addCell(new Cell().add("Approved"));
// Add the table
document.add(htable);
// Close the document
document.close();
}
结果如下所示:
请注意,我缩小了字体大小,以避免按照CMS#
拆分的方式拆分更多文本。
如果您尚未执行此操作,请尝试将htable.setWidthPercent(100);
添加到代码中。问题应该消失。