次のエラーがあります。特定の形式で、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) を削除するときです。これは、を使用して特定の位置に 1 つのテーブルを追加するためだけに行いますtable.writeSelectedRows()
。これが私のコードのままです:
table_SectionTwo.writeSelectedRows(0, -1, 260f, 770f, super.getPdfWriter().getDirectContent());
//super.addTable(table_SectionTwo);
コメントしdoc.add(table)
ました。そして、これは 1 つのテーブルのみを書き込む必要があります。しかし、これはうまくいきません。これを行うと、次がスローされます。
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()
。
私を助けてください..