iText 5

How to add inline spacing in a PdfPCell? | iText 5 PDF Development Guide

I need to add space between two parts of a line in a PdfPCell.


 

 

Chunk chunk = new Chunk("Received Rs(In Words) : " + " " + myDataTable.Tables[1].Rows[0]["Recieved"].ToString(), font8); PdfPTable PdfPTable = new PdfPTable(1); PdfPCell PdfPCell =new PdfPCell(new Phrase(Chunk )); PdfPCell .Border = PdfCell.NO_BORDER; PdfPTable .AddCell(PdfPCell );

Posted on StackOverflow on

Jul 9, 2015

by

S.P

Please take a look at the following screen shot:

https://itextpdf.com/sites/default/files/QNkeh.png

Possible options

Based on your code snippet, I assume that you want to separate "Received Rs (in Words):" from "Priceless", but it's not clear to me what you want to happen if there is more than one line, so I'm proposing 3 options in the hope that one of them solves your problem. You can find these options in the CellWithGlue example.

Example 1:

table = new PdfPTable(2); table.setHorizontalAlignment(Element.ALIGN_LEFT); table.setWidthPercentage(60); table.setSpacingAfter(20); cell = new PdfPCell(new Phrase("Received Rs (in Words):")); cell.setBorder(PdfPCell.LEFT | PdfPCell.TOP | PdfPCell.BOTTOM); table.addCell(cell); cell = new PdfPCell(new Phrase("Priceless")); cell.setHorizontalAlignment(Element.ALIGN_RIGHT); cell.setBorder(PdfPCell.RIGHT | PdfPCell.TOP | PdfPCell.BOTTOM); table.addCell(cell); document.add(table);

In this example, I put "Received Rs (in Words):" and "Priceless" in two different cells, and I align the content of the first cell to the left and the content of the second cell to the right. This creates space between the two Chunks.

Example 2

// same code as above, except for: table.setWidthPercentage(50);

I decreased the width of the table to show you what happens if some content doesn't fit a cell. As we didn't define any widths for the columns, the two columns will have an equal width, but as "Received Rs (in Words):" needs more space than "Priceless", the text doesn't fit the width of the cell and it is wrapped. We could avoid this, by defining a larger with for the first column when compared to the second column.

Example 3:

table = new PdfPTable(1); table.setHorizontalAlignment(Element.ALIGN_LEFT); table.setWidthPercentage(50); Phrase p = new Phrase(); p.add(new Chunk("Received Rs (In Words):")); p.add(new Chunk(new VerticalPositionMark())); p.add(new Chunk("Priceless")); table.addCell(p); document.add(table);

This example is very close to what you have, but instead of introducing space characters to create space, I introduce a special chunk: new VerticalPositionMark()). This chunk will separate the two parts of the Phrase by introducing as much space as possible.