我是iTextSharp的新手,并且想将我的DataGridView转换为PdfPtable。iTextSharp PdfPtable多页
当我将表格写入PDF时,它显示得很好,除非列数量相对较大。然后通过使列宽变小来适应。
相反,我想从新页面开始,显示更多的表格和标题。
下面是我的表码:
PdfPTable table = new PdfPTable(view.Columns.Count);
float[] widths = new float[view.Columns.Count];
for (int i = 0; i < view.Columns.Count; i++) {
widths[i] = view.Columns[i].Width;
}
table.SetWidths(widths);
table.HorizontalAlignment = 1; //Center
PdfPCell cell = null;
//Headers
foreach (DataGridViewColumn c in view.Columns) {
cell = new PdfPCell(new Phrase(new Chunk(c.HeaderText, _standardFont)));
cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;
table.AddCell(cell);
}
//Rest of table
for (int i = 1; i < view.Rows.Count; i++) {
for (int j = 0; j < view.Columns.Count; j++) {
bool hasValue = view.Rows[i].Cells[j].Value == null ? false : true;
if (hasValue) {
cell = new PdfPCell(new Phrase(view.Rows[i].Cells[j].Value.ToString(), _standardFont));
} else {
cell = new PdfPCell(new Phrase("", _standardFont));
}
cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;
table.AddCell(cell);
}
}
一个解决办法是莫名其妙地知道有多少列,可以在页面上打印的全尺寸,然后添加一个新的页面,更显示网格那里,但我不确定如何检测新页面。这里的问题是,似乎没有办法改变PdfPtable的列数,所以当预先添加列时,我必须能够计算宽度的效果。
编辑:我要拆分的页面垂直
当行不符合页面的可用高度时,iText会自动分割表格。你是说你想要垂直分割桌子吗? –
是的,我应该更清楚在我的问题描述:) – User