如何在java中使用itext在pdf文档最后一页底部创建表

如何在java中使用itext在pdf文档最后一页底部创建表,java,itext,Java,Itext,我已经使用java中的itext在pdf文档中创建了表。在功能方面工作良好。 但我需要将表格显示为下面的文档 这是我的密码 PdfPTable datatablebottom = new PdfPTable(8); PdfPCell cell = new PdfPCell(); cell.setBorder(Rectangle.NO_BORDER); cell.setColspan(8); cell.

我已经使用java中的itext在pdf文档中创建了表。在功能方面工作良好。 但我需要将表格显示为下面的文档

这是我的密码

PdfPTable datatablebottom = new PdfPTable(8);
            PdfPCell cell = new PdfPCell();
            cell.setBorder(Rectangle.NO_BORDER);
            cell.setColspan(8);
            cell.setBackgroundColor(BaseColor.GRAY);
            cell.setBorderWidthTop(5.0f);
            cell.setBorderColorTop(BaseColor.DARK_GRAY);

            if(msgfb.equals("1")){
                //document.add(new Paragraph(""));
                cell.addElement(new Paragraph(""));
            }else if(msgfb.equals("2")){
                //document.add(new Paragraph("Thank you for your business"));
                Paragraph pf = new Paragraph("Thank you for your business Thanks for your bussiness Thanks for your bussiness Thanks for your bussiness Thanks for your bussiness Thanks for your bussiness Thanks for your bussiness",BT_NORMAL);
                pf.setAlignment(Element.ALIGN_CENTER);
                cell.addElement(pf);
            }else{
                //document.add(new Paragraph(msgfb));
                Paragraph pf = new Paragraph(msgfb,BT_NORMAL);
                pf.setAlignment(Element.ALIGN_CENTER);
                cell.addElement(pf);
                //cell.addElement(new Paragraph(msgfb,BT_NORMAL));
            }
            cell.setPaddingBottom(10.0f);
            datatablebottom.addCell(cell);
            datatablebottom.setTotalWidth(PageSize.A4.getWidth()-70);
            datatablebottom.setLockedWidth(true);
            document.add(datatablebottom);

您需要定义表格的绝对宽度:

datatable.setTotalWidth(document.right(document.rightMargin()) - document.left(document.leftMargin()));
然后您需要更换该行:

document.add(datatablebottom);
关于这一点:

datatable.writeSelectedRows(0, -1, document.left(document.leftMargin()), datatable.getTotalHeight() + document.bottom(document.bottomMargin()), writer.getDirectContent());

writeSelectedRows()
方法在绝对位置绘制表格。我们通过询问
文档
的左边距(x值)和将表格高度添加到文档的下边距(Y坐标)来计算该位置。我们绘制所有行(0到-1)。

您能简要介绍一下需要如何显示吗?我已经替换了上面提到的代码。我得到的错误是“错误500表格宽度必须大于零”。我没有得到pdf页面。这个错误来自document.rightMargin()-document.leftMargin()作为zeroops,我的错,我混淆了
document
方法。我会修改我的答案,但通常你理解这个概念应该没有问题。嗨,朋友,显示文档底部效果不错,但我需要增加数据表的宽度。嗨,朋友,我知道了如何增加数据表的宽度。非常感谢您的帮助me@BrunoLowagie在应用边距时有一个小错误,参见。您可能希望修复它,并在itextpdf站点上从这个答案派生出一个示例。