【发布时间】:2013-01-09 18:26:35
【问题描述】:
我有下一个错误。
我正在尝试使用 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 次p>
问题是当我删除 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() 时才会出现此错误。
请帮帮我..
【问题讨论】: