頁眉

2017-08-01 56 views
0

下頁繼續PDFtable這是我的代碼:頁眉

PdfPTable tableSumme = new PdfPTable(dtUebersicht.Columns.Count-1); 
widthsSumme = new float[] { 4.2f, 5f, 5f, 5f, 5f }; 
tableSumme.SetWidths(widthsSumme); 
tableSumme.WidthPercentage = 100; 
tableSumme.TotalWidth = 500f; 


foreach (DataColumn c in dtUebersicht.Columns) 
    { 
PdfPCell Spalte = new PdfPCell(new Phrase(c.ColumnName, VerdanaFont)); 
          Spalte.HorizontalAlignment = Element.ALIGN_CENTER; 
          Spalte.VerticalAlignment = Element.ALIGN_MIDDLE; 
          tableSumme.AddCell(Spalte); 
    } 

PdfContentByte cbSumme = writerSumme.DirectContent; 


foreach (DataRow dr in dtUebersicht.Rows) 
{ 
PdfPCell Spalte0 = new PdfPCell(new Phrase(dr[0].ToString(), VerdanaFont)); 
            Spalte0.HorizontalAlignment = Element.ALIGN_CENTER; 
            Spalte0.VerticalAlignment = Element.ALIGN_MIDDLE; 

PdfPCell Spalte1 = new PdfPCell(new Phrase(dr[1].ToString(), VerdanaFont)); 
            Spalte1.HorizontalAlignment = Element.ALIGN_CENTER; 
            Spalte1.VerticalAlignment = Element.ALIGN_MIDDLE; 

tableSumme.AddCell(Spalte0); 
tableSumme.AddCell(Spalte1); 
} 

tableSumme.WriteSelectedRows(0, -1, 35, 757, cbSumme); 

這給了我一個頁面的PDF和數據就可以了。數據比頁面更長,所以我想每隔50行插入一個新頁面。我該如何解決這個問題?

簡單

if (Rowindex % 50 == 0) 
    { documentSumme.NewPage(); } 

不起作用。謝謝

+1

是否有原因,爲什麼你使用WriteSelectedRows()而不是'document.Add()'?如果你使用'document.Add()',你可以自動重複標題。現在,由於您將第二個參數定義爲「-1」,因此您正在使用WriteSelectedRows()來添加*所有行。如果你只想顯示50行,你爲什麼要這樣做?爲什麼你的代碼與你的要求相矛盾? –

+0

@BrunoLowagie謝謝你指出我正確的方向...... –

回答

2

以下是@Bruno Lowagie發表評論後的一個小例子。 在添加所有行之前到達頁面的末尾時,它們將添加到下一頁。

Document doc = new Document(); 
FileStream fs = new FileStream(@"your path", FileMode.Create, FileAccess.Write); 
PdfWriter writer = PdfWriter.GetInstance(doc, fs); 
doc.Open(); 

List<string> columns = new List<string> {"col1", "col2", "col3", "col4", "col5"}; 

PdfPTable table = new PdfPTable(columns.Count); 
table.SetWidths(new[] { 5f, 5f, 5f, 5f, 5f }); 
table.WidthPercentage = 100; 
table.TotalWidth = 500f; 
table.HeaderRows = 1; 

foreach (string col in columns) 
{ 
    PdfPCell cell = new PdfPCell(new Phrase(col)); 
    table.AddCell(cell); 
} 

for (int i = 0; i < 100; i++) 
{ 
    for (int j = 0; j < columns.Count; j++) 
    { 
     PdfPCell cell = new PdfPCell(new Phrase($"{i},{j}")); 
     table.AddCell(cell); 
    } 
} 

doc.Add(table); 
doc.Close(); 
+1

我冒昧地添加一行:'table.HeaderRows = 1;'用這一行,標題行將在每一頁上重複(這是一個OP提到的要求)。 –

+0

@BrunoLowagie Thx :) – Ben

+1

不客氣。我也提出了答案。做得好! –