itextsharp: как показать нижнюю строку таблицы со свойством HeaderRows=1, если нижняя граница строки не задана?
Я использую последнюю версию itextsharp.
Я использую свойство HeaderRows=1, так что если есть pagebreak, строки заголовка снова появятся на следующей странице.
тогда у нас есть строки содержимого со стилем границы без нижней строки, как это:
PdfPCell cell1 = null;
cell1 = new PdfPCell(new Phrase(string.Format("{0}", c1), fn));
cell1.Border = Rectangle.RIGHT_BORDER | Rectangle.LEFT_BORDER;
когда есть pagebreak, строка внизу таблицы не отображается, что не логично. Даже если строки содержимого не имеют нижней / верхней границы, сама PdfPTable должна иметь границы (на самом деле их нет в коде).
какие идеи? Тнх.
1 ответов
Я думаю, что мне повезло, это было нелегко найти.
Я искал какое-то событие для локализации последней строки страницы, и я его нашел.
вы экземпляр это так:
PdfPTable ItemTable = new PdfPTable(7);
ItemTable.TableEvent = new LineaBottom();
класса следующий:
public class LineaBottom : IPdfPTableEvent
{
#region IPdfPTableEvent Members
void IPdfPTableEvent.TableLayout(PdfPTable table, float[][] widths, float[] heights, int headerRows, int rowStart, PdfContentByte[] canvases)
{
int columns;
Rectangle rect;
int footer = widths.Length - table.FooterRows;
int header = table.HeaderRows - table.FooterRows + 1;
int ultima = footer - 1;
if (ultima != -1)
{
columns = widths[ultima].Length - 1;
rect = new Rectangle(widths[ultima][0], heights[ultima], widths[footer - 1][columns], heights[ultima + 1]);
rect.BorderColor = BaseColor.BLACK;
rect.BorderWidth = 1;
rect.Border = Rectangle.TOP_BORDER;
canvases[PdfPTable.BASECANVAS].Rectangle(rect);
}
}
#endregion
}