Skip to main content
Skip table of contents

How to add an inner table surrounded by text?

I am trying to add a table surrounded by text to an outer table, but the inner table disappears and I can't seem to fix the problem.

 

Here is what I am expecting:

 

*********************
* Hello World       *
* +++++++++++++++++ * 
* + Goodbye World + *  these 3 lines never show up in the PDF
* +++++++++++++++++ * 
* Hello World       *
*********************
Here is my code example:

 

final PdfPTable table2 = new PdfPTable(1);
table2.getDefaultCell().setBorderColor(BaseColor.RED);
table2.getDefaultCell().setBorderWidth(1);
table2.addCell("Goodbye World");
final PdfPTable table1 = new PdfPTable(1);
table1.setWidthPercentage(100);
table1.getDefaultCell().setBorderColor(BaseColor.BLACK);
table1.getDefaultCell().setBorderWidth(1);
Phrase phrase = new Phrase();
phrase.add(new Chunk("Hello World"));
phrase.add(table2); // 
phrase.add(new Chunk("Hello World"));
table1.addCell(phrase);
document.add(table1);
Posted on StackOverflow on Feb 10, 2015 by rveach

You are using text mode (to be used when you only have text) in a situation where you should use composite mode (because you are adding a table to a cell).

Please take a look at the NestedTableProblem example:

// 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);

In this code snippet, the cell object is composed of different elements (that's what composite mode is about):

Screen shot

Screen shot

In your code snippet, you add several elements to a Phrase and you add this Phrase to a PdfPCell in text mode. As one element isn't ordinary text but a table, it can not be rendered.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.