您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何调整PdfPTable的大小以适合页面?

如何调整PdfPTable的大小以适合页面?

如果要使表格适合页面,则应在考虑页面大小之前创建表格,并像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();
}
其他 2022/1/1 18:14:56 有614人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶