如果要使表格适合页面,则应在考虑页面大小之前创建表格,并像TableHeight示例中一样询问表格的高度。请注意,
getTotalHeight()除非您定义表格的宽度,否则该方法将返回0。可以这样完成:
table.setTotalWidth(width); table.setLockedWidth(true);
现在,您可以创建一个
document带有大小的,
Rectangle(0, 0, width + margin * 2,getTotalHeight() + margin * 2)并且当使用
writeSelectedRows()方法添加文档时,表格应该恰好适合文档。
如果您不希望自定义页面大小,则需要
PdfTemplate使用表的大小创建一个并将表添加到此模板对象。然后,将模板对象包装在中,
Image然后使用
scaleToFit()来缩小表的大小。
public static void main(String[] args) throws documentException, FileNotFoundException, IOException { String TARGET = "temp.pdf"; document document = new document(PageSize.A4); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(TARGET)); document.open(); PdfPTable table = new PdfPTable(7); for (int i = 0; i < 700; i++) { Phrase p = new Phrase("some text"); PdfPCell cell = new PdfPCell(); cell.addElement(p); table.addCell(cell); } table.setTotalWidth(PageSize.A4.getWidth()); table.setLockedWidth(true); PdfContentByte canvas = writer.getDirectContent(); PdfTemplate template = canvas.createTemplate(table.getTotalWidth(), table.getTotalHeight()); table.writeSelectedRows(0, -1, 0, table.getTotalHeight(), template); Image img = Image.getInstance(template); img.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight()); img.setAbsolutePosition(0, (PageSize.A4.getHeight() - table.getTotalHeight()) / 2); document.add(img); document.close();}


