我正在尝试将文本包围的表添加到iText 5.5.4中的外表中,但内部表消失了,我似乎无法解决问题。
这是我所期待的:
*********************
* Hello World *
* +++++++++++++++++ * <--
* + Goodbye World + * <-- these 3 lines never show up in the PDF
* +++++++++++++++++ * <--
* Hello World *
*********************
这是我的代码示例:
public class TableTest {
public static void main(String[] args) throws FileNotFoundException, DocumentException {
final Document document = new Document(PageSize.LETTER, 21, 21, 30, 35);
PdfWriter.getInstance(document, new FileOutputStream("testTable.pdf"));
document.open();
// table 2
final PdfPTable table2 = new PdfPTable(1);
table2.setSpacingBefore(0);
table2.setHorizontalAlignment(Element.ALIGN_LEFT);
table2.getDefaultCell().setBorderColor(BaseColor.RED);
table2.getDefaultCell().setBorderWidth(1);
table2.addCell("Goodbye World");
// table 1
final PdfPTable table1 = new PdfPTable(1);
table1.setSpacingBefore(0);
table1.setHorizontalAlignment(Element.ALIGN_LEFT);
table1.setWidthPercentage(100);
table1.getDefaultCell().setBorderColor(BaseColor.BLACK);
table1.getDefaultCell().setBorderWidth(1);
// contents
Phrase phrase = new Phrase();
phrase.add(new Chunk("Hello World"));
phrase.add(table2); // <--- added but doesn't show up!
phrase.add(new Chunk("Hello World"));
table1.addCell(phrase);
document.add(table1);
document.close();
}
}
这是更大的报告的一部分,我在这个场景中使用表格来进行边框和填充。
答案 0 :(得分:0)
在您应该使用复合模式的情况下,您正在使用文本模式(仅在您有文本时使用)(因为您要向细胞)。
请查看NestedTableProblem
示例:
// table 2
final PdfPTable table2 = new PdfPTable(1);
table2.setHorizontalAlignment(Element.ALIGN_LEFT);
table2.getDefaultCell().setBorderColor(BaseColor.RED);
table2.getDefaultCell().setBorderWidth(1);
table2.addCell("Goodbye World");
// table 1
final PdfPTable table1 = new PdfPTable(1);
table1.setHorizontalAlignment(Element.ALIGN_LEFT);
table1.setWidthPercentage(100);
// contents
PdfPCell cell = new PdfPCell();
cell.setBorderColor(BaseColor.BLACK);
cell.setBorderWidth(1);
cell.addElement(new Chunk("Hello World"));
cell.addElement(table2);
cell.addElement(new Chunk("Hello World"));
table1.addCell(cell);
document.add(table1);
在此代码段中,cell
对象由不同的元素组成(复合模式的含义):
在您的代码段中,您向Phrase
添加了多个元素,并在文本模式中将此Phrase
添加到PdfPCell
。由于一个元素不是普通文本而是一个表格,因此无法呈现。