 <p>For logical reasons, tables are filled row by row in iText:</p> <p><a href="https://i.stack.imgur.com/SXI4A.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/SXI4A.png" alt="enter image description here"></a></p> <p>If you want to change the order, you need to do this yourself by creating a data matrix first. One way to do this, is by creating a two-dimensional array (there are other ways, but I'm using an array for the sake of simplicity).</p> <p>The <a href="http://developers.itextpdf.com/examples/tables/render-data-table#1834-rowcolumnorder.java" rel="nofollow noreferrer">RowColumnOrder</a> example shows how it's done.</p> <p>This is the normal behavior:</p> <pre><code>document.add(new Paragraph("By design tables are filled row by row:")); PdfPTable table = new PdfPTable(5); table.setSpacingBefore(10); table.setSpacingAfter(10); for (int i = 1; i &lt;= 15; i++) { table.addCell("cell " + i); } document.add(table); </code></pre> <p>You want to change this behavior, which means that you have to create a matrix in which you change the order rows and columns are filled:</p> <pre><code>String[][] array = new String[3][]; int column = 0; int row = 0; for (int i = 1; i &lt;= 15; i++) { if (column == 0) { array[row] = new String[5]; } array[row++][column] = "cell " + i; if (row == 3) { column++; row = 0; } } </code></pre> <p>As you can see, there is no iText code involved. I have 15 cells to add in a table with 5 columns and 3 rows. To achieve this, I create a <code>String[3][5]</code> array of which I fill every row of a column, then switch to the next column when the current column is full. Once I have the two-dimensional matrix, I can use it to fill a <code>PdfPTable</code>:</p> <pre><code>table = new PdfPTable(5); table.setSpacingBefore(10); for (String[] r : array) { for (String c : r) { table.addCell(c); } } document.add(table); </code></pre> <p>As you can see, the second table in <a href="http://gitlab.itextsupport.com/itext/sandbox/raw/master/cmpfiles/tables/cmp_row_column_order.pdf" rel="nofollow noreferrer">row_column_order.pdf</a> gives you the result you want.</p>