我正在编写以下代码,以便创建一个包含表格的PDF文件。
Document document = new Document(PageSize.A4, 20, 20, 20, 80);
Font myfont = new Font(FontFactory.getFont(FontFactory.COURIER_BOLD, 13, Font.NORMAL));
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(request.getRealPath("/") + "SAMPLE.pdf"));
document.open();
Table table = new Table(2);
Cell c2 = new Cell();
int[] widths = {8, 150}; //Tried different values, but no change
table.setBorder(Rectangle.BOX);
table.setAlignment(Element.ALIGN_LEFT);
table.setSpacing(0);
table.setPadding(0);
table.setTableFitsPage(true); //Tried with 'false', even removed it, but no change
table.setWidths(widths);
c2 = new Cell(new Paragraph("1. ", myfont));
c2.setBorder(Rectangle.NO_BORDER);
table.addCell(c2);
c2 = new Cell(new Paragraph("TEST DATA ", myfont));
c2.setBorder(Rectangle.NO_BORDER);
table.addCell(c2);
c2 = new Cell(new Paragraph("2. ", myfont));
c2.setBorder(Rectangle.NO_BORDER);
table.addCell(c2);
c2 = new Cell(new Paragraph("TEST DATA", myfont));
c2.setBorder(Rectangle.NO_BORDER);
table.addCell(c2);
c2 = new Cell(new Paragraph("3. ", myfont));
c2.setBorder(Rectangle.NO_BORDER);
table.addCell(c2);
c2 = new Cell(new Paragraph("TEST DATA", myfont));
c2.setBorder(Rectangle.NO_BORDER);
table.addCell(c2);
document.add(table);
document.close();
但是创建的文件包含一个占据页面大约80-85%的表。我希望它能利用整个页面。
我尝试对代码进行一些调整,例如将table.setTableFitsPage(true);
更改为table.setTableFitsPage(false);
,甚至尝试删除它。
也改变了指定的宽度。但是在所有情况下它都是徒劳的,它只给了我一个只占80-85%页面的文件。
我是否遗漏了一些要添加到我的代码中的内容,或者是否存在阻止表占用100%页面的属性。
当内容很大时会产生问题,因为我最终得到页面上仍有空格的长表。
附上此处生成的实际PDF文件的屏幕截图!
答案 0 :(得分:1)
您应该重写表格代码以改为使用PdfPTable。你可以找到一些examples of its use online。 iText in Action 2nd ed的第4章是关于表格的,确切地说是PdfPTables。
很多示例代码。享受。
答案 1 :(得分:0)
改为使用PdfPTable类,您可以在整个表上设置列宽。使其跨越整个页面可以通过构建
来完成float delta = document.getPageSize().getWidth() / numberOfColumns;
// add delta numberOfColumn times
PdfPTable table = new PdfPTable(new float[] {delta, delta, delta, delta });
table.setWidthPercentage(100f);
构造函数中传递的宽度决定了给定列相对于整个表宽度的空间大小。