кажется, что вы не понимаете смысл bitwise |
operator, потому что это не имеет смысла:
table.DefaultCell.Border = Rectangle.RIGHT_BORDER | Rectangle.RIGHT_BORDER;
Линия выше является эквивалентом:
table.DefaultCell.Border = Rectangle.RIGHT_BORDER;
также: вы не должны ожидать, что разные ячейки будут иметь другую границу, если вы используете table.DefaultCell.Border
. Вы просите iTextSharp рисовать все неявно созданные ячейки таким образом, чтобы они имели только границу справа. Почему вы удивляетесь, когда iTextSharp подчиняется этой команде?
Вам нужно создать каждый PdfPCell
явно и определить границы для каждого из них:
PdfPCell left_cell = new PdfPCell();
left_cell.Border = Rectangle.RIGHT_BORDER | Rectangle.TOP_BORDER | Rectangle.BOTTOM_BORDER;
// add stuff to left_cell
table.AddCell(left_cell);
PdfPCell middle_cell = new PdfPCell();
middle_cell.Border = Rectangle.TOP_BORDER | Rectangle.BOTTOM_BORDER;
// add stuff to middle_cell
table.AddCell(middle_cell);
PdfPCell right_cell = new PdfPCell();
right_cell.Border = Rectangle.LEFT_BORDER | Rectangle.TOP_BORDER | Rectangle.BOTTOM_BORDER;
// add stuff to right_cell
table.AddCell(right_cell);
В вашем коде, вы можете применять различные границы для DefaultCell
перед каждым AddCell()
вызова, но это не реально имеют смысл. Лучше создать настраиваемый метод getCell()
, который создает PdfPCell
экземпляры именно так, как вы предпочитаете.
Да, на самом деле я не знал о | operator.Позвольте мне попробовать, как вы сказали –
Я добавил ссылку на [побитовый '|' operator] (https://msdn.microsoft.com/en-us/library/kxszd0kx.aspx), что очень общий оператор в языках программирования. Тот факт, что вы этого не знаете, говорит мне, что вы никогда не изучали компьютерные науки. –
Какая версия будет поддерживать вышеуказанный код. Для меня это показывает ошибку, как «iTextSharp.text.Rectangle не содержит определения для« ПРАВО » –