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 );
}
}
1つの解決策は、ページにフルサイズで印刷できる列の数をどうにかして知り、新しいページを追加して、そこに表示されるグリッドを増やすことですが、新しいページを検出する方法がわかりません。ここでの問題は、PdfPtable の列数を変更する方法がないように思われるため、事前に列を追加するときの幅の影響を計算できる必要があることです。
EDIT:ページを縦に分割したい