iTextSharp pdfpTable течет в двух столбцах на одной странице

Я использую iTextSharp PdfPTtable для создания таблиц из базы данных. Когда таблица длинная (длинная, но всего с 3 столбцами), мне удалось заставить таблицу перетекать (или продолжать) на следующую страницу PDF. Но я хочу, чтобы они продолжали в правой части (или столбце) той же страницы. И после этого он должен перейти на следующую страницу (левый столбец, затем правый столбец и т. Д.).Вот как я хочу, чтобы данные из базы данных передавались

1 ответ

Ваше требование (почти) точно соответствует одному из примеров моей книги. Пожалуйста, посмотрите на страницу 3 и выше файла column_table.pdf.

В книге приведена Java-версия примера, но есть также версия, портированная на C#.

В основном вам нужно добавить PdfPTable к ColumnText объект и go() пока в столбце есть контент:

// Column definition
float[][] x = {
    new float[] { document.Left, document.Left + 380 },
    new float[] { document.Right - 380, document.Right }
};
column.AddElement(yourTable);
int count = 0; // can be 0 or 1 if your page is divided in 2 parts
float height = 0;
int status = 0;
// render the column as long as it has content
while (ColumnText.HasMoreText(status)) {
    // add the top-level header to each new page
    if (count == 0) {
         AddFooterTable(); // for you to implement to add a footer
         height = AddHeaderTable(); // for you to implement to add a header
    }
    // set the dimensions of the current column
    column.SetSimpleColumn(
        x[count][0], document.Bottom,
        x[count][1], document.Top - height - 10
    );
    // render as much content as possible
    status = column.Go();
    // go to a new page if you've reached the last column
    if (++count > 1) {
        count = 0;
        document.NewPage();
    }
}
document.NewPage();
Другие вопросы по тегам