Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hiding table border in iTextSharp

How can i hide the table border using iTextSharp. I am using following code to generate a file:

var document = new Document(PageSize.A4, 50, 50, 25, 25);

// Create a new PdfWriter object, specifying the output stream
var output = new MemoryStream();
var writer = PdfWriter.GetInstance(document, output);

document.Open();
PdfPTable table = new PdfPTable(3);
var bodyFont = FontFactory.GetFont("Arial", 10, Font.NORMAL);
PdfPCell cell = new PdfPCell(new Phrase("Header spanning 3 columns"));
cell.Colspan = 3;
cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
table.AddCell(cell);
Font arial = FontFactory.GetFont("Arial", 6, BaseColor.BLUE);
cell = new PdfPCell(new Phrase("Font test is here ", arial));
cell.PaddingLeft = 5f;
cell.Colspan = 1;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("XYX"));
cell.Colspan = 2;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("Hello World"));
cell.PaddingLeft = 5f;
cell.Colspan = 1;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("XYX"));
cell.Colspan = 2;
table.AddCell(cell);



table.SpacingBefore = 5f;
document.Add(table);
document.Close();

Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=Receipt-test.pdf");
Response.BinaryWrite(output.ToArray());

Do I need to specify no borders for individual cells or I can specify no borders for table itself.

Thank you

like image 337
SharpCoder Avatar asked Jul 31 '13 20:07

SharpCoder


3 Answers

Although I upvoted the answer by Martijn, I want to add a clarification.

Only cells have borders in iText; tables don't have a border. Martijn's suggestion to set the border of the default cell to NO_BORDER is correct:

table.DefaultCell.Border = Rectangle.NO_BORDER;

But it won't work for the code snippet provided in the question. The properties of the default cell are only used if iText needs to create a PdfPCell instance implicitly (for instance: if you use the addCell() method passing a Phrase as parameter).

In the code snippet provided by @Brown_Dynamite, the PdfPCell objects are created explicitly. This means that you need to set the border of each of these cells to NO_BORDER.

Usually, I write a factory class to create cells. That way, I can significantly reduce the amount of code in the class that creates the table.

like image 194
Bruno Lowagie Avatar answered Nov 14 '22 16:11

Bruno Lowagie


This should do the trick:

table.DefaultCell.Border = Rectangle.NO_BORDER; 

or

table.borderwidth= 0;
like image 40
Martijn van Put Avatar answered Nov 14 '22 15:11

Martijn van Put


First we can set all cell borders as 0 and After assigning all cell to table we can use the following code for for only pdfptable outer border.

        PdfPCell cell = new PdfPCell();
        cell.AddElement(t);
        cell.BorderWidthBottom=1f;
        cell.BorderWidthLeft=1f;
        cell.BorderWidthTop=1f;
        cell.BorderWidthRight = 1f;
        PdfPTable t1 = new PdfPTable(1);
        t1.AddCell(cell);

Here we can add table to one cell and can set border and again add that cell to another table and we can use as per our requirement.

like image 10
Jom George Avatar answered Nov 14 '22 16:11

Jom George