我是 iTextSharp 的新手,想将我的 DataGridView 转换为 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 的列数,所以我必须能够在预先添加列时计算出宽度上的效果。
编辑:我想垂直拆分页面