Как установить только вертикальную линию таблицы в pdf с помощью itext sharp?

У меня есть таблица с вертикальными и горизонтальными линиями. Но мне не нужна горизонтальная линия. Мне нужны только вертикальные линии. Как я могу ее установить. Мой ожидаемый 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);

Пример:

Кто угодно поможет

2 ответа

Вы можете изменить границы ячеек, чтобы они отображали только вертикальные линии. Как это сделать, зависит от того, как вы добавляете ячейки в таблицу.

Это два подхода:

1. Вы явно создаете объекты PdfPCell:

PdfPCell cell = new PdfPCell(); cell.AddElement(новый абзац ( "мой контент" )); cell.Border = PdfPCell.LEFT; table.AddCell(ячейка);

В этом случае будет отображаться только левая граница ячейки. Для последней ячейки в строке вы также должны добавить правую границу:

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

2. Вы неявно создаете объекты PdfPCell:

В этом случае вы не создаете объект PdfPCell самостоятельно, вы позволяете iTextSharp создавать ячейки. Эти ячейки скопируют свойства DefaultCell, которые определены на уровне PdfPTable, поэтому вам нужно изменить это:

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 имеет встроенный столбец/строки, например, тип ячейки, если вы его не указали.

licensed under cc by-sa 3.0 with attribution.