问题描述
在这里,我使用 iText 7 来处理几代 pdf。我已使用 100% 设置表格宽度
table.setWidthPercent(100)
并且我想要固定的列宽,以百分比表示。
我设置列宽如下
float columnWidth[] = {33,34,33};
Table table = new Table(columnWidth);
但是当我们执行时它不是百分比,它会给出具有此相对宽度的 3 列,但是当我们为最后一个单元格提供左边距时,这一列会中断。
每个单元格的左边距、右边距都影响列宽我想要以百分比为单位的固定列大小
String pdfPath = "first.pdf";
PdfWriter pdfWriter = new PdfWriter(pdfPath);
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
Document document = new Document(pdfDocument);
pdfDocument.setDefaultPageSize(PageSize.A4);
document.setMargins(20,20,20);
float columnWidth[] = {33,33};
Table table = new Table(columnWidth);
table.setWidthPercent(100);
table.addCell(new Cell().add("First").setFontSize(7).setMargins(0,0));
table.addCell(new Cell().add("Second").setFontSize(7).setMargins(0,0));
table.addCell(new Cell().add("Third").setFontSize(7).setMargins(0,50));
document.add(table);
document.close();
System.out.println("pdf created");
即使应用左边距也需要固定的列大小。它应该只影响文本而不是列这里列大小正在改变
想要这种行为:
解决方法
而不是直接给出浮点值
float columnWidth[] = {33,34,33};
Table table = new Table(columnWidth);
UnitValue 解决了我的疑问
Table table = new Table(UnitValue.createPercentArray(columnWidth));
现在列宽是固定的。单元格边距不会影响列宽。