iText 7 列宽为什么不适合?
iText 7 column widths why do these not fit?
我是 iText 的新手,直接进入了 iText 7,但发现在我的 table 上设置列宽非常具有挑战性。显然有一些基本的东西我没有得到。
在网上寻找答案时,我发现一些基于 itext 5 的答案似乎与 itext 7 无关(硬编码固定宽度)。 iText 7 的东西似乎假设了我没有的知识! "relative column widths" -- 这是什么意思?这些数字加起来应该是 100 吗?具有 2 列或 4 列的简单示例很有意义,但我很难将其转换为 7 列 table.
我有一个有 7 列的 table。第 1、3、5 列应该比较窄,它们只是标签。第 7 列可以占用 space 可用的任何内容。例如:
Col1 Col2 Col3 Col4 Col5 Col6 Col7
CMS#: C34827284 Date: 12/5/16 End Date: 12/6/16 approved
我以为我已经成功了,但我最近的尝试产生了 "Element does not fit current area" 个错误。这是我的定义
Table htable = new Table(new float[] {3, 8, 5, 10, 5, 10, 30});
这些数字加起来是 71,为什么不合适?他们需要恰好加到 100 还是我的 "adds up to 100" 想法完全走错了路?
您是否为 table 整体定义了宽度?
这是我试过的:
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);
添加到您的代码中(如果您尚未这样做)。问题应该消失了。
我是 iText 的新手,直接进入了 iText 7,但发现在我的 table 上设置列宽非常具有挑战性。显然有一些基本的东西我没有得到。
在网上寻找答案时,我发现一些基于 itext 5 的答案似乎与 itext 7 无关(硬编码固定宽度)。 iText 7 的东西似乎假设了我没有的知识! "relative column widths" -- 这是什么意思?这些数字加起来应该是 100 吗?具有 2 列或 4 列的简单示例很有意义,但我很难将其转换为 7 列 table.
我有一个有 7 列的 table。第 1、3、5 列应该比较窄,它们只是标签。第 7 列可以占用 space 可用的任何内容。例如:
Col1 Col2 Col3 Col4 Col5 Col6 Col7
CMS#: C34827284 Date: 12/5/16 End Date: 12/6/16 approved
我以为我已经成功了,但我最近的尝试产生了 "Element does not fit current area" 个错误。这是我的定义
Table htable = new Table(new float[] {3, 8, 5, 10, 5, 10, 30});
这些数字加起来是 71,为什么不合适?他们需要恰好加到 100 还是我的 "adds up to 100" 想法完全走错了路?
您是否为 table 整体定义了宽度?
这是我试过的:
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);
添加到您的代码中(如果您尚未这样做)。问题应该消失了。