如何使用itext sharp在pdf中仅设置表格的垂直线?

我有一张垂直和水平线的桌子。 但我不想要水平线。我只想要垂直线。我怎么设置它。 我预期的o / p是

我的表格代码

PdfPTable table = new PdfPTable(5); table.TotalWidth = 510f;//table size table.LockedWidth = true; table.HorizontalAlignment = 0; table.SpacingBefore = 10f;//both are used to mention the space from heading table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; table.AddCell(new Phrase(new Phrase(" SL.NO", font1))); table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; table.AddCell(new Phrase(new Phrase(" SUBJECTS", font1))); table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; table.AddCell(new Phrase(new Phrase(" MARKS", font1))); table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; table.AddCell(new Phrase(new Phrase(" MAX MARK", font1))); table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; table.AddCell(new Phrase(new Phrase(" CLASS AVG", font1))); Doc.Add(table); 

例如:

在此处输入图像描述

有人请帮忙

您可以更改单元格的边框,使它们只显示垂直线条。 如何执行此操作取决于您如何将单元格添加到表中。

这是两种方法:

1.您明确创建PdfPCell对象:

PdfPCell cell = new PdfPCell(); cell.AddElement(new Paragraph(“my content”)); cell.Border = PdfPCell.LEFT; table.AddCell(细胞);

在这种情况下,仅显示单元格的边框。 对于行中的最后一个单元格,您还应该添加右边框:

cell.Border = PdfPCell.LEFT | PdfPCell.RIGHT;

2.隐式创建PdfPCell对象:

在这种情况下,您不要自己创建PdfPCell对象,而是让iTextSharp创建单元格。 这些单元格将复制在PdfPTable级别定义的DefaultCell的属性,因此您需要更改此:

 table.DefaultCell.Border = Rectangle.LEFT | Rectangle.RIGHT; table.addCell("cell 1"); table.addCell("cell 2"); table.addCell("cell 3"); 

现在所有单元格都没有顶部或底部边框,只有左右边框。 你会画一些额外的线条,但没有人会注意到线条重合。

另请参见在iTextSharp中隐藏表格边框

例如:

 PdfPTable table = new PdfPTable(5); table.TotalWidth = 510f;//table size table.LockedWidth = true; table.SpacingBefore = 10f;//both are used to mention the space from heading table.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; table.DefaultCell.Border = PdfPCell.LEFT | PdfPCell.RIGHT; table.AddCell(new Phrase(" SL.NO", font1)); table.AddCell(new Phrase(" SUBJECTS", font1)); table.AddCell(new Phrase(" MARKS", font1)); table.AddCell(new Phrase(" MAX MARK", font1)); table.AddCell(new Phrase(" CLASS AVG", font1)); Doc.Add(table); 

无需多次定义DefaultCell的属性。 没有必要像这样嵌套Phrase构造函数: new Phrase(new Phrase("content"))

布鲁诺的答案并没有帮助我,但我得到了一个想法,也许是因为那是在2015年,但这就是我所做的。 我宣布一张桌子

 PdfPTable table2 = new PdfPTable(8); 

定义宽度..

 table2.WidthPercentage = 100; 

最后只放置了我喜欢的边框

 table2.DefaultCell.Border = Rectangle.RIGHT_BORDER; table2.DefaultCell.Border = Rectangle.LEFT_BORDER; 

当然,如果你想用它来显示。

 table2.AddCell(new Phrase("Total Amount", ftxt)); table2.AddCell(new Phrase("Another text", ftxt)); 

当然,将其添加到pdf中。

 doc.Add(table2); 

似乎iTextSharp有内置的列/行,如果你没有指定它。