我有下一个错误。我正在尝试使用 iText 创建具有特定格式的 PDF。我选择为页面的每个部分使用表格,因为我需要做的格式有表格。好吧,我已经做了所有事情,我创建了表格并使用doc.add(table)
方法添加它,这很好,但我需要将表格设置到特定位置。所以我选择使用table.writeSelectedRows()
方法,这很好用。
错误来了,这是我的代码:
table_SectionTwo.addCell(cell_White);
table_SectionTwo.addCell(cell_White);
table_SectionTwo.addCell(p);
table_SectionTwo.addCell(cell_OrderDate);
table_SectionTwo.addCell(cell_CustomerOrderDate);
table_SectionTwo.addCell(cell_OrderNumberSection);
float[] columnWidths = new float[] {38f, 105f, 90f};
table_SectionTwo.setTotalWidth(columnWidths);
table_SectionTwo.setLockedWidth(true);
table_SectionTwo.completeRow();
table_SectionTwo.writeSelectedRows(0, -1, 260f, 770f, super.getPdfWriter().getDirectContent());
doc.add(table_SectionTwo);
如您所见,如果我执行此代码,这将添加同一个表 2 次
问题是当我删除 doc.add(table) 时,我这样做只是为了使用table.writeSelectedRows()
. 这就是我的代码的保留方式:
table_SectionTwo.writeSelectedRows(0, -1, 260f, 770f, super.getPdfWriter().getDirectContent());
//super.addTable(table_SectionTwo);
我评论了doc.add(table)
。这应该只写一个表。但这不起作用。当我这样做时会抛出:
ExceptionConverter: java.io.IOException: The document has no pages.
at com.itextpdf.text.pdf.PdfPages.writePageTree(PdfPages.java:113)
at com.itextpdf.text.pdf.PdfWriter.close(PdfWriter.java:1217)
at com.itextpdf.text.pdf.PdfDocument.close(PdfDocument.java:777)
at com.itextpdf.text.Document.close(Document.java:398)
at PDFConstructor.CloseDocument(PDFConstructor.java:85)
at InvoicePDF.CloseDocument(InvoicePDF.java:58)
at Demo.main(Demo.java:72)
奇怪的是,当我评论 doc.add(table)
这不起作用时,当我评论table.writeSelectedRows()
作品doc.add(table)
正常时。仅当我已doc.add(table)
评论和table.writeSelectedRows()
取消评论时才会出现此错误。
请帮我..