Alternative for LineSeparator in iText old versions?

LineSeparator ls = new LineSeparator();
document.add(new Chunk(ls));

Example: iText in action


I'm also in favor of using Line elements rather than tables... do not repeat HTML formatting mistakes !

final LineSeparator lineSeparator = new LineSeparator();
lineSeparator.drawLine(pdfCB, leftX, rightX, y);

There is a bit of a messy way around this in the earlier versions of iText. If you store the element above the horizontal line in a PdfPCell, you can then set the border of that to show only the bottom. (That cell can also be blank if needed)

PdfPCell myCell = new PdfPCell(new Paragraph("Hello World") );
myCell.setBorder(Rectangle.BOTTOM);

The result should look like (solid line, not checkered)

Hello World
-----------

This should give you what you desire. Not the optimal solution but it is a way to work around the limitations of the old jar.

For your reference, if you want to perform this trick to put a line on top and below your text to give a result of

-----------
Hello World
-----------

The argument to setBorder() is an int which you can use bitwise operation on to manipulate the values. So the above example can would be accomplished with

myCell.setBorder(Rectangle.BOTTOM | Rectangle.TOP);

edit: Example

//Create the table which will be 2 Columns wide and make it 100% of the page
PdfPTable myTable = new PdfPtable(2);
myTable.setWidthPercentage(100.0f);

//create a 3 cells and add them to the table
PdfPCell cellOne = new PdfPCell(new Paragraph("Hello World"));
PdfPCell cellTwo = new PdfPCell(new Paragraph("Bottom Left"));
PdfPcell cellThree = new PdfPCell(new Paragraph("Bottom Right"));

cellOne.setColspan(2);
cellOne.setBorder(Rectangle.BOTTOM);
cellOne.setHorizontalAlignment(Element.ALIGN_LEFT);

cellTwo.setBorder(Rectangle.NO_BORDER);
cellTwo.setHorizontalAlignment(Element.ALIGN_LEFT);
cellThree.setBorder(Rectangle.LEFT);
cellThree.setHorizontalAlignment(Element.ALIGN_RIGHT);

//Add the three cells to the table
myTable.addCell(cellOne);
myTable.addCell(cellTwo);
myTable.addCell(cellThree);

//Do something to add the table to your root document

This should create you a table which looks something like the following (assuming you correct my typos)

Hello World
------------------------------------
Bottom Left      |      Bottom Right

Tags:

Java

Pdf

Itext