2014-06-26 79 views
0

在使用PDFWriter生成PDF文檔時,如何在數據表之間包含空格?轉換爲pdf時數據表之間的空間

此相關的代碼片段:

public void ExportToPdf(DataTable dt) 
{ 
    Document document = new Document(); 
    PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("E://sample2.pdf", FileMode.Create)); 
    document.Open(); 
    iTextSharp.text.Font font5 = iTextSharp.text.FontFactory.GetFont(FontFactory.HELVETICA, 5); 
    int col = dt.Columns.Count; 
    int row1 = dt.Rows.Count; 
    int newcol; 

    if (col > Convert.ToInt16(txt_columns.Text)) 
    { 
     newcol = Convert.ToInt16(txt_columns.Text); 
    } 
    else 
    { 
     newcol = col; 
    } 

    int k=0, prev=0, dummy=0; 
    dummy = newcol; 

    for (int num_table = 1, temp = 0; num_table <= ((col/dummy) + 1); num_table++, temp++) 
    { 
     if (newcol > 0) 
     { 
      PdfPTable table = new PdfPTable(newcol); 
      PdfPRow row = null; 
      float[] widths = new float[newcol]; 
      for (int i = 0; i < newcol; i++) 
      { 
       widths[i] = 4f; 
      } 

      table.SetWidths(widths); 
      table.WidthPercentage = 100; 
      int iCol = 0; 
      string colname = ""; 
      PdfPCell cell = new PdfPCell(new Phrase("Products")); 
      cell.Colspan = newcol; 
      int j = 1; 
      foreach (DataColumn c in dt.Columns) 
      { 
       if (j > temp * dummy && j <= num_table * dummy) 
       { 
        table.AddCell(new Phrase(c.ColumnName, font5)); 
       } 
       j++; 
      } 

      foreach (DataRow r in dt.Rows) 
      { 
       if (dt.Rows.Count > 0) 
       { 
        for (k=prev; k < ((num_table * dummy > col) ? col : (num_table * dummy)); k++) 
        { 
         table.AddCell(new Phrase(r[k].ToString(), font5)); 
        } 
       } 
      } 
      prev = k; 

      if (newcol > (col - (num_table * newcol))) 
      { 
       newcol = (col - (num_table * newcol)); 
      } 
      document.Add(table); 
     } 
     // need code for gap here 
    } 
    document.Close(); 
} 

需要在最後的空間。海報可能使用開源iText庫來生成PDF文檔。

謝謝!

回答

0

有不同的方法來添加「空間」。在表的情況下,你可以使用這樣的事情:

table.SpacingBefore = 5; 
table.SpacingAfter = 5; 

第一行表之前添加的空間點壓頻比。第二行在表格後面增加5pt空格。

你也可以添加一個換行符。有不同的方式來做到這一點:

document.Add(Chunk.NEWLINE); // the height of the newline will depend on the leading 
document.Add(new Paragraph("\n")); // you can define a leading for a `Paragraph`; by default it will be 16pt 
... 

可能有其他的解決方案,但上面給出一個嘗試的人,讓我們知道哪一個最適合你的。

+0

謝謝。我需要另一個幫助如何在pdf中更改列和行的背景和字體顏色 – Kireet

+0

這是在這裏解釋的:http://stackoverflow.com/questions/24434731/dynamic-pdf-row-mockup另外: StackOverflow政策告訴你發佈一個新的問題是你有一個新的問題(似乎是合乎邏輯的,不是嗎?)。不要對其他問題使用評論。 –